Игра типа "ловкач" - PullRequest
       16

Игра типа "ловкач"

2 голосов
/ 20 апреля 2010

Я пытаюсь написать игру, используя livewires и pygame, где у меня есть повар (только изображение, которое у меня было, хаха), избегайте камней, падающих с неба. Скалы должны упасть в случайных местах. Я хочу, чтобы сначала был один камень, затем каждый раз, когда вы удачно уклоняетесь от камня, падают еще два камня, пока вы не проиграете. То, что у меня есть, - это шеф-повар и одна падающая скала. Однако, по какой-то причине, если спрайты сталкиваются, или если камень касается нижней части экрана, игра заканчивается, не давая сообщения об окончании игры, как я сказал. Я очень смущен и не вижу, что я сделал. Я знаю, что я не кодировал его правильно для части 2-х камней, но я даже не могу заставить его немного работать. Помогите! Вот что у меня сейчас:

from livewires import games, color
import random

games.init(screen_width = 640, screen_height = 480, fps = 50)


class Chef(games.Sprite):

    image = games.load_image("chef.bmp")

    def __init__(self):
        super(Chef, self).__init__(image = Chef.image,
                                  x = games.mouse.x,
                                  bottom = games.screen.height)

    def update(self):
        self.x = games.mouse.x

        if self.left < 0:
            self.left = 0

        if self.right > games.screen.width:
            self.right = games.screen.width

        self.check_catch()

    def check_catch(self):
        for pizza in self.overlapping_sprites:
            if not self.bottom>games.screen.height:
                self.end_game()


class Rock(games.Sprite):

    def update(self):
        if self.bottom > games.screen.height:
                new_rock=Rock(x=random.randrange(games.screen.width),
                              y=10,
                              dy=1)
                games.screen.add(new_rock)

    def end_game(self):
        end_message = games.Message(value = "Game Over",
                                    size = 90,
                                    color = color.red,
                                    x = games.screen.width/2,
                                    y = games.screen.height/2,
                                    lifetime = 5 * games.screen.fps,
                                    after_death = games.screen.quit)
        games.screen.add(end_message)


def main():

    wall_image = games.load_image("wall.jpg", transparent = False)
    games.screen.background = wall_image

    the_chef = Chef()
    games.screen.add(the_chef)

    rock_image=games.load_image("rock.bmp")
    the_rock=Rock(image=rock_image,
                  x=random.randrange(games.screen.width),
                  y=10,
                  dy=1)
    games.screen.add(the_rock)

    games.mouse.is_visible = False

    games.screen.event_grab = True
    games.screen.mainloop()

main()

1 Ответ

0 голосов
/ 20 апреля 2010

Вы объявили end_game метод в Rock class, но вызываете его из check_catch метода Chef class.

...