Worm [Python+PyGame] v0.2

Listopad 12, 2009

Faza 2

U ovoj sam se verziji pozabavio self collisionom. Sto se ispostavilo kao ne tako pretesko i brzo je bio zavrseno!
Ostao je jedan bug koji cu rijesiti uskoro :). Ovaj zadatak je rijesen a u sljedecoj verziji cu pokusati malo optimizirati kod…
Evo koda
_________________________________
import pygame

class Worm:
    def __init__(self, surface, x, y, length):
        self.surface = surface
        self.x = x
        self.y = y
        self.length = length
        self.dir_x = 0
        self.dir_y = -1
        self.body = []
        self.crashed = False

    def key_event(self, event):

        if event.key == pygame.K_UP:
            self.dir_x = 0
            self.dir_y = -1
        elif event.key == pygame.K_DOWN:
            self.dir_x = 0
            self.dir_y = 1
        elif event.key == pygame.K_LEFT:
            self.dir_x = -1
            self.dir_y = 0
        elif event.key == pygame.K_RIGHT:
            self.dir_x = 1
            self.dir_y =

    def move(self):

        self.x += self.dir_x
        self.y += self.dir_y

        r, g, b, a = self.surface.get_at((self.x, self.y))
        if (r, g, b) != (0,0,0):
            self.crashed = True

        self.body.insert(0, (self.x, self.y))

        if len(self.body) > self.length:
            self.body.pop()

    def draw(self):
        for x, y in self.body:
           
self.surface.set_at((x, y), (255, 255, 255))

width = 640
height = 480

screen = pygame.display.set_mode((width, height))
clock = pygame.time.Clock()
running = True

w = Worm(screen, width/2, height/2, 200)

while running:
    screen.fill((0,0,0))
    w.draw()
    w.move()

    if w.crashed or w.x <=0 or w.x >=width-1 or w.y <=0 or w.y>=height-1:
        print "Crash!"
        running = False

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            w.key_event(event)

    pygame.display.flip()
    clock.tick(240)

__________________________________

About these ads

Odgovori

Popunite niže tražene podatke ili kliknite na neku od ikona za prijavu:

WordPress.com Logo

Ovaj komentar pišete koristeći vaš WordPress.com račun. Log Out / Izmijeni )

Twitter picture

Ovaj komentar pišete koristeći vaš Twitter račun. Log Out / Izmijeni )

Facebook slika

Ovaj komentar pišete koristeći vaš Facebook račun. Log Out / Izmijeni )

Google+ photo

Ovaj komentar pišete koristeći vaš Google+ račun. Log Out / Izmijeni )

Spajanje na %s

Prati

Get every new post delivered to your Inbox.

%d bloggers like this: