【问题标题】:pygame player not updatingpygame player不更新
【发布时间】:2022-11-05 06:28:19
【问题描述】:

我在尝试设置播放器控件时遇到问题,但是当我运行游戏时,“图像”保持不变,因此播放器不会移动。 问题是我添加了打印功能来查看它在哪里不起作用,但看起来应该没有问题,所以我不知道为什么它不起作用。

免责声明:我必须使用类

请参阅下面的代码以供播放器类中的参考: `

def update(self):
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.player_x += self.player_speed
            print("player has moved right")
        if self.moving_left:
            self.player_x -= self.player_speed
            print("player had moved left")
        
        self.rect.x = self.x

And the Game class:

def run_game(self):
        while True:
            self._check_events()
            '''self._update_bullets()'''
            self._update_screen()
            self.player.update()
            

    def _check_events(self):
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                self._check_keydown_events(event)
            elif event.type == pygame.KEYUP:
                self._check_keyup_events(event)
    
    def _check_keydown_events(self, event):
        if event.key == pygame.K_RIGHT:
            self.player.moving_right = True
            print("moving right")
        elif event.key == pygame.K_LEFT:
            self.player.moving_left = True
            print("moving left")
        elif event.key == pygame.K_q:
            sys.exit()    
        '''elif event.type == pygame.MOUSEBUTTONDOWN:
            self.bullets.append(Bullet(*pos))'''

    def _check_keyup_events(self, event):
        if event.key == pygame.K_RIGHT:
            self.moving_right = False
            print("not moving right")
        elif event.key == pygame.K_LEFT:
            self.moving_left = False
            print("not moving left")
        '''elif event.type == pygame.MOUSEBUTTONDOWN:
            self.bullets.append(Bullet(*pos))'''

def _update_screen(self):
        self.screen.fill(self.settings.bg_color)
        self.player.blitme()

        pygame.display.flip()
        print("Screen had been updated")


if __name__ == '__main__':
    # Make a game instance, and run the game.
    Game = ThatMeatball()
    Game.run_game()

`

如前所述,我添加了打印语句,但我仍然不明白为什么屏幕没有更新,所以我在这里非常迷茫。 非常感谢任何帮助,谢谢:D

【问题讨论】:

  • self.rect.x = self.player_x 而不是 self.rect.x = self.x

标签: python pygame


【解决方案1】:

您必须从self.player_x 而不是self.x 设置矩形的位置:

self.rect.x = self.x

self.rect.x = self.player_x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多