【发布时间】: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?