Ejemplo n.º 1
0
    def Show(self):   
        screen = self.display
        field = PlayField()
        group = Snake()
        group.ConstructSnake()
        feed = Food()
        block = feed.GetNewBlock(group.sprites())
        groupFood = pygame.sprite.Group()
        groupFood.add(block)

        print(block.rect.center)

        UPDATE = pygame.USEREVENT + 1
        pygame.time.set_timer(UPDATE,70)
        textsurface = Font.MonoSpace(15).render(str(self.highscore),False,Color.Black)

        ps4 = PS4Controller()
        ps4.init()
        print(ps4.joystick_present)
        if ps4.joystick_present:
            if not ps4.hat_data:
                ps4.hat_data = {}
                for i in range(ps4.controller.get_numhats()):
                    ps4.hat_data[i] = (0, 0)

        while not self.decision:
            self.CheckEvents()
            
            for event in pygame.event.get():
                if ps4.joystick_present:
                    if event.type == pygame.JOYHATMOTION:
                        ps4.hat_data[event.hat] = event.value
                        hatValues = ps4.hat_data[0]
                        if hatValues[0] == -1:
                            self.key = pygame.K_LEFT
                        elif hatValues[0] == 1:
                            self.key = pygame.K_RIGHT
                        elif hatValues[1] == -1:
                            self.key = pygame.K_DOWN
                        elif hatValues[1] == 1:
                            self.key = pygame.K_UP                       
                    
                if event.type==pygame.KEYDOWN:
                    self.key = event.key


                if event.type==UPDATE:
                    group.UpdateDirection(self.key)
                    game_over = not(pygame.sprite.collide_rect(field,group.sprites()[0])) or group.DetectCollisionWithItself()
                    if game_over:
                        self.decision = True
                        self.Quit(False)
                    else:
                        screen.fill(Color.White)
                        screen.blit(textsurface,(620,20))
                        group.Move()
                        group.draw(screen)
                        pygame.display.update()
                        groupFood.draw(screen)

                        if pygame.sprite.collide_rect(group.sprites()[0],groupFood.sprites()[0]):
                            group.EatFood(groupFood.sprites()[0])
                            block = feed.GetNewBlock(group.sprites())
                            groupFood.empty()
                            groupFood.add(block)
                            self.highscore+=1
                            textsurface = Font.MonoSpace(15).render(str(self.highscore),False,Color.Black)