【发布时间】:2020-08-28 18:05:38
【问题描述】:
我正在 pygame 中创建一个蛇游戏。基本上,我希望我的蛇对象始终在不断移动。
但是,我希望能够在按键时更改该对象的移动方向。
现在,我可以移动对象,但我必须按住一个键,或者按住那个键。这不是一个持续的运动。
我的目标是让蛇形对象始终向一个方向移动,并且只需按一下键即可改变它的移动方向。这可能吗?
这是我的目标代码:
class Snake:
def __init__(self, block_size, surface, x_loc, y_loc):
self.block_size = block_size
self.surface = surface # red
self.x_loc = x_loc
self.y_loc = y_loc
def draw(self, window):
window.blit(self.surface, (self.x_loc, self.y_loc))
def collide(self, obj):
pass
def move_x_left(self, surface, x_loc, y_loc):
window.blit(surface, (self.x_loc, self.y_loc))
self.x_loc -= 20
def move_y_up(self, surface, x_loc, y_loc):
window.blit(surface, (self.x_loc, self.y_loc))
self.y_loc -= 20
def move_x_right(self, surface, x_loc, y_loc):
window.blit(surface, (self.x_loc, self.y_loc))
self.x_loc += 20
def move_y_down(self, surface, x_loc, y_loc):
window.blit(surface, (self.x_loc, self.y_loc))
self.y_loc += 20
这是我的 main 函数中的游戏循环
while game_running:
snake.draw(window)
redraw_window()
clock.tick(FPS) # tick the clock based on our FPS rate.
# snake.move_y_down(mask, snake.x_loc, snake.y_loc)
for event in pygame.event.get(): # if we hit "x" to close out the game, close out the game.
if event.type == pygame.QUIT:
pygame.quit()
exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
snake.move_x_right(mask, snake.x_loc, snake.y_loc)
if keys[pygame.K_LEFT]:
snake.move_x_left(mask, snake.x_loc, snake.y_loc)
if keys[pygame.K_DOWN]:
snake.move_y_down(mask, snake.x_loc, snake.y_loc)
if keys[pygame.K_UP]:
snake.move_y_up(mask, snake.x_loc, snake.y_loc)
FPS 速率为 60。仍然不确定如何/是否正确实施,但无论如何它可能与这个问题无关。
【问题讨论】: