Exemplo n.º 1
0
class Game(object):
    def __init__(self):
        # Config
        self.tps_max = 100.0
        self.score = 3
        self.randtimebabmus = 9
        self.randtimeszustak = 8
        self.move = True
        self.seconds_food = 10
        self.seconds_szustak = 10
        self.pause = False

        # Initialization
        pygame.init()
        pygame.font.init()
        self.myfont = pygame.font.SysFont('Comic Sans MS', 50)
        self.screen = pygame.display.set_mode((1280, 720))
        self.tps_delta = 0.0
        self.start_ticks_food = pygame.time.get_ticks()
        self.start_ticks_szustak = pygame.time.get_ticks()
        self.tps_clock = pygame.time.Clock()

        # Objects
        self.player = Panda(self)
        self.food = None
        self.szustak = None

        # Main loop
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                    self.pause = True
                    self.paused()

            # Ticking
            self.tps_delta += self.tps_clock.tick() / 1000.0
            while self.tps_delta > 1 / self.tps_max:
                self.tick()
                self.tps_delta -= 1 / self.tps_max

            if self.szustak:
                self.szustak.collision()
            if self.food:
                self.food.collision()

            # Drawing
            self.screen.fill((10, 200, 0))
            self.draw()
            pygame.display.update()

    def tick(self):
        self.player.tick()
        if self.score <= 0:
            self.gameOver()
        if self.seconds_food == 0:
            self.start_ticks_food = pygame.time.get_ticks()
            self.score -= 1
        if self.seconds_szustak <= 0:
            self.start_ticks_szustak = pygame.time.get_ticks()

    def draw(self):
        # Drawing
        self.seconds_food = 10 - (pygame.time.get_ticks() -
                                  self.start_ticks_food) / 1000
        self.seconds_szustak = 10 - (pygame.time.get_ticks() -
                                     self.start_ticks_szustak) / 1000
        # print "rand: ", self.randtimeszustak, "second: ", self.seconds_szustak
        if self.seconds_food == self.randtimebabmus:
            self.food = Bambus(self)
            self.randtimebabmus = random.randint(1, 10)
            self.score -= 1
        if self.seconds_szustak == self.randtimeszustak:
            self.szustak = Szustak(self)
            self.randtimeszustak = random.randint(1, 5)
            self.move = True
        self.text = "Seconds: " + str(self.seconds_food)
        self.textScore = "Score: " + str(self.score)
        self.screen.blit(self.myfont.render(self.text, True, (255, 0, 0)),
                         (32, 48))
        self.screen.blit(self.myfont.render(self.textScore, True, (255, 0, 0)),
                         (400, 48))
        self.player.draw()
        if self.food:
            self.food.draw()
        if self.szustak:
            self.szustak.draw()

    def detectCollision(self, object):
        if self.player.pos[0] + self.player.size[0] >= object.pos[
                0] >= self.player.pos[0] and self.player.pos[
                    1] + self.player.size[1] >= object.pos[
                        1] >= self.player.pos[1]:
            return True
        elif self.player.pos[0] + self.player.size[0] >= object.pos[
                0] + object.size[0] >= self.player.pos[0] and self.player.pos[
                    1] + self.player.size[1] >= object.pos[
                        1] >= self.player.pos[1]:
            return True
        elif self.player.pos[0] + self.player.size[0] >= object.pos[
                0] >= self.player.pos[0] and self.player.pos[
                    1] + self.player.size[1] >= object.pos[1] + object.size[
                        1] >= self.player.pos[1]:
            return True
        elif self.player.pos[0] + self.player.size[0] >= object.pos[
                0] + object.size[0] >= self.player.pos[0] and self.player.pos[
                    1] + self.player.size[1] >= object.pos[1] + object.size[
                        1] >= self.player.pos[1]:
            return True
        else:
            return False

    def paused(self):
        self.screen.fill((0, 0, 0))
        largeText = pygame.font.SysFont("comicsansms", 115)
        self.screen.blit(largeText.render("Paused", True, (255, 255, 255)),
                         (500, 200))
        pygame.display.update()
        while self.pause:
            for event in pygame.event.get():

                if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                    self.pause = False

                elif event.type == pygame.QUIT:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    sys.exit(0)

    def gameOver(self):
        self.screen.fill((0, 0, 0))
        self.endText = "GAME OVER"
        self.screen.blit(
            self.myfont.render(self.endText, True, (255, 255, 255)),
            (550, 300))
        pygame.display.update()
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    sys.exit(0)
Exemplo n.º 2
0
class Game(object):
    def __init__(self):
        # Config
        self.tps_max = 100.0
        self.score = 3
        # Initialization
        pygame.init()
        pygame.font.init()
        self.myfont = pygame.font.SysFont('Comic Sans MS', 50)
        self.screen = pygame.display.set_mode((1280, 720))
        self.start_ticks = pygame.time.get_ticks()
        self.tps_clock = pygame.time.Clock()
        self.tps_delta = 0.0
        self.randtimebabmus = random.randint(1, 10)
        self.randtimeszustak = random.randint(1, 15)
        self.player = Panda(self)
        self.food = None
        self.szustak = None
        self.move = True
        self.seconds = 10
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    sys.exit(0)

            # Ticking
            self.tps_delta += self.tps_clock.tick() / 1000.0
            while self.tps_delta > 1 / self.tps_max:
                self.tick()
                self.tps_delta -= 1 / self.tps_max
            if self.szustak:
                self.szustak.collision()
            if self.food:
                self.food.collision()
            # Drawing
            self.screen.fill((10, 200, 0))
            self.draw()
            pygame.display.update()

    def tick(self):
        self.player.tick()
        if self.score <= 0:
            self.screen.fill((0, 0, 0))
            self.endText = "GAME OVER"
            self.screen.blit(
                self.myfont.render(self.endText, True, (255, 255, 255)),
                (550, 340))
            pygame.display.update()
            while True:
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        sys.exit(0)
                    elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                        sys.exit(0)
        if self.seconds == 0:
            self.start_ticks = pygame.time.get_ticks()
            self.score -= 1

    def draw(self):
        # Drawing
        # print self.randtimebabmus
        self.seconds = 10 - (pygame.time.get_ticks() - self.start_ticks) / 1000
        if self.seconds == self.randtimebabmus:
            self.food = Bambus(self)
            self.randtimebabmus = random.randint(1, 10)
            self.score -= 1
        if self.seconds == self.randtimeszustak:
            self.szustak = Szustak(self)
            self.randtimeszustak = random.randint(1, 15)
            self.move = True
        self.text = "Seconds: " + str(self.seconds)
        self.textScore = "Score: " + str(self.score)
        self.screen.blit(self.myfont.render(self.text, True, (255, 0, 0)),
                         (32, 48))
        self.screen.blit(self.myfont.render(self.textScore, True, (255, 0, 0)),
                         (400, 48))
        self.player.draw()
        if self.food:
            self.food.draw()
        if self.szustak:
            self.szustak.draw()

    def detectCollision(self, object):

        if object:
            if self.player.pos[0] + self.player.size[0] >= object.pos[
                    0] >= self.player.pos[0] and self.player.pos[
                        1] + self.player.size[1] >= object.pos[
                            1] >= self.player.pos[1]:
                # print "True"
                return True
                # self.start_ticks = pygame.time.get_ticks()
                # self.food = Bambus(self)
                # self.randtimebabmus = random.randint(1, 10)
                # self.score+=1
            elif self.player.pos[0] + self.player.size[0] >= object.pos[
                    0] + object.size[0] >= self.player.pos[
                        0] and self.player.pos[1] + self.player.size[
                            1] >= object.pos[1] >= self.player.pos[1]:
                # print "True"
                return True
            elif self.player.pos[0] + self.player.size[0] >= object.pos[
                    0] >= self.player.pos[0] and self.player.pos[
                        1] + self.player.size[1] >= object.pos[
                            1] + object.size[1] >= self.player.pos[1]:
                # print "True"
                return True
            elif self.player.pos[0] + self.player.size[0] >= object.pos[
                    0] + object.size[0] >= self.player.pos[
                        0] and self.player.pos[1] + self.player.size[
                            1] >= object.pos[1] + object.size[
                                1] >= self.player.pos[1]:
                # print "True"
                return True
            else:
                # print "False"
                return False