954,515 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

pygame tron

im working on a tron game with pygame and i cant figure out how to make my tail that the player's car makes disappear after somany pixels. i want the tail to start shortening itself after like 500 pixels. if you can, can you post the full code edited (im kinda a noob at pygame)

thanks

import sys, random, time, pygame
from pygame.locals import *

def print_text(font, x, y, text, color=(255,255,255)):
    imgText = font.render(text, True, color)
    screen.blit(imgText, (x,y))
    

#main program begins
pygame.init()
w = 500
h = 500
screen = pygame.display.set_mode((w,h))
pygame.display.set_caption("Tron")
font1 = pygame.font.Font(None, 24)
pygame.mouse.set_visible(False)
white = 255,255,255
red = 220, 50, 50
yellow = 230,230,50
black = 0,0,0



pos_x = 300
pos_y = 460
p1 = [[300],[460]]
poss = pos_y,pos_x
print p1
screen.fill(black)

vel_y = 0.7
path = 8 # 8=up 6=right 4=left 2=down
#repeating loop
while True:
    for event in pygame.event.get():
        #Keydown
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
            if event.key == K_UP and path != 2:
                path = 8
            if event.key == K_RIGHT and path != 4:
                path = 6                
            if event.key == K_LEFT and path != 6:
                path = 4
            if event.key == K_DOWN and path != 8:
                path = 2
    
    if path == 8:
        pos_y -= 1
    elif path == 6:
        pos_x += 1
    elif path == 4:
        pos_x -= 1
    elif path == 2:
        pos_y += 1
    p1[0].append(pos_x)
    p1[1].append(pos_y)
    if pos_y <= 0 or pos_y >= h or pos_x <= 0 or pos_x >= w:
        pygame.quit()
        sys.exit()

    if len(p1[0]) == 10:
        
    
    pygame.time.delay(10) 
    pos = pos_x,pos_y,10,10
    #print pos
    
    pygame.draw.rect(screen, white, pos, 0)
    
    
    pygame.display.update()
natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

Add the cords to a list each time your tron moves. .pop() after max length is reached

RLS0812
Newbie Poster
12 posts since Dec 2011
Reputation Points: 7
Solved Threads: 0
 

I don't know how to do that could you help me

natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

What is if block after line 64, your code never will run.

pyTony
pyMod
Moderator
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852
 
What is if block after line 64, your code never will run.


i put that there because i was trying to solve my problem and i forgot to delete it

natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

Is this privite project or home work?

pyTony
pyMod
Moderator
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852
 
Is this privite project or home work?


Private. Why?

natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

I created a new thread with a different problem.

natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

I coded version of your code, but I do not want to give ready answer for home works.

OK, here it is:

import random, time, pygame
from pygame.locals import *

def print_text(font, x, y, text, color=(255,255,255)):
    imgText = font.render(text, True, color)
    screen.blit(imgText, (x,y))
    

pygame.init()
w = h = 500
screen = pygame.display.set_mode((w,h))
pygame.display.set_caption("Tron")
font1 = pygame.font.Font(None, 24)
pygame.mouse.set_visible(False)
white = 255, 255, 255
red = 220, 50, 50
yellow = 230, 230, 50
black = 0, 0, 0
screen.fill(black)

pos_x, pos_y = 300, 460
tron_path = []

#vel_y = 0.7 # not used

limit = 100
key = K_UP
change = {K_UP:(0,-1), K_RIGHT:(1,0), K_LEFT:(-1,0), K_DOWN:(0,1)}
opposite = {K_UP: K_DOWN, K_LEFT: K_RIGHT}
opposite.update((b,a) for a,b in opposite.items())

speed = 4
counter = 0
grow, growth_rate = 400, 10

while True:
    pygame.time.delay(speed)
    counter += 1
    # growing by time tail (snake game style)
    if counter > grow:
        counter = 0
        limit += growth_rate
        print 'limit', limit
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                raise SystemExit('Escaped')
            if event.key in change and key != opposite[event.key]:
                key = event.key
    offset_x, offset_y = change[key]
    pos_x += offset_x
    pos_y += offset_y           
    
    #print pos_x, pos_y
    tron_path.append((pos_x, pos_y))

    if len(tron_path) > limit:
        pygame.draw.rect(screen, black, tron_path.pop(0) + (10, 10), 0)

    if pos_y <= 0 or pos_y >= h or pos_x <= 0 or pos_x >= w:
        pygame.quit()
        raise SystemExit('Out of board exit')

    pos = pos_x, pos_y, 10, 10
    pygame.draw.rect(screen, white, pos, 0)
    pygame.display.update()
pyTony
pyMod
Moderator
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852
 

Ok thanks. This will help me out a lot

natehome
Newbie Poster
15 posts since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: