Worm v0.3

Listopad 13, 2009

Worm lijepo napreduje, dosli smo do faze #3!
U ovoj fazi primarni cilje je bio napraviti rast crva i skupljanje hrane. Uz ove primarne ciljeve dodano je jos i
– primitivno racunanje bodova
– promijenjena je boja crva

Ovo je prva verzija koja ima gameplay ali je jako siromasan i ima jedan bug koji ce biti ispravljen u sljedecoj verziji.

Znani bugovi:
– kad se krecete u jednom smjeru i pritisnete strelicu za drugi igra se prekida

Ako nadete jos koji bug komentirajte ili me obavjestite mail-om.

Eh da skoro zaboravih

Kod

import pygame
import random

class Worm:
    def __init__(self, surface):
        self.surface = surface
        self.x = surface.get_width() / 2
        self.y = surface.get_height() / 2
        self.length = 1
        self.grow_to = 50
        self.vx = 0
        self.vy = -1
        self.body = []
        self.crashed = False
        self.color = (255,255,0)

    def eat(self):
        self.grow_to = 25

    def event(self, event):
        if event.key == pygame.K_UP:
            self.vx = 0
            self.vy = -1
        elif event.key == pygame.K_DOWN:
            self.vx = 0
            self.vy = 1
        elif event.key == pygame.K_LEFT:
            self.vx = -1
            self.vy = 0
        elif event.key == pygame.K_RIGHT:
            self.vx = 1
            self.vy = 0

    def move(self):
        self.x += self.vx
        self.y += self.vy

        if (self.x, self.y) in self.body:
            self.crashed
= True

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

        if (self.grow_to > self.length):
            self.length
+= 1

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

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

    def position(self):
        return self.x, self.y

class Food:
    def __init__(self, surface):
        self.surface = surface
        self.x = random.randint(0,
surface.get_width())
        self.y = random.randint(0,
surface.get_height())
        self.color = (255,255,255)

    def draw(self):
        self.surface.set_at((self.x, self.y),
self.color)

    def position(self):
        return self.x, self.y

w = 500
h = 500

screen = pygame.display.set_mode((w, h))
clock = pygame.time.Clock()

score = 0
worm = Worm(screen)
food = Food(screen)
running = True

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

    if worm.crashed:
        running = False
    elif worm.x <= 0 or worm.x >= w – 1:
        running = False
    elif worm.y <+ 0 or worm.y >= h – 1:
        running = False
    elif worm.position() == food.position():
        score += 1
    worm.eat()
    print "Score: %d" %score
    food = Food(screen)

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

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

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. Odjava / Izmijeni )

Twitter picture

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

Facebook slika

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

Google+ photo

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

Spajanje na %s

%d bloggers like this: