如何解决玩家不在pygame中移动
我用pygame创建了一个程序。出现背景和播放器,但播放器没有移动。该程序没有给出任何错误,您可以帮我吗?我正在使用python 3.8.6。这是我的一些代码。
# Game Loop
running = True
while running:
for event in pygame.event.get():
player(playerX,playerY)
pygame.display.update()
# Movment
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
player_x_change -= 10
if event.key == pygame.K_d:
player_x_change += 10
if event.key == pygame.K_w:
player_y_change -= 10
if event.key == pygame.K_s:
player_y_change += 10
if event.type == pygame.KEYUP:
if event.key == pygame.K_a:
player_x_change = 0
if event.key == pygame.K_d:
player_x_change = 0
# Close the game
if event.type == pygame.QUIT:
running = False
解决方法
您需要在用户按下按钮移动角色然后更新玩家位置时检查事件。例如,这里检查玩家是否按下了向右箭头:
while running:
for event in pygame.event.get():
player(playerX,playerY)
pygame.display.update()
# checking if right arrow is being pressed
if events.type == pygame.KEYDOWN:
if events.key == pygame.K_RIGHT
# update players x position here to move right
# for example,player.x += 2
# Close the game
if event.type == pygame.QUIT:
running = False
,
您的代码只是显示玩家,而不是移动玩家。
要移动播放器,首先必须定义一个速度变量。然后,您必须获取播放器的矩形。这样您就可以使用定义的速度变量来修改玩家位置。
另外,如果要移动播放器,则必须在绘制播放器之前先绘制背景。否则,您吸引的每个玩家都不会消失。
并且不要忘记定义游戏速度。
代码
#!/usr/bin/python3
import pygame
# set the game speed
delay = 10
screen = pygame.display.set_mode((800,600))
# loading player image and get pos
player = pygame.image.load('pixel_ship_yellow.png')
player_pos = player.get_rect()
# define speed variable
speed = [1,1]
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
# drawing background
screen.fill((0,0))
# apply speed (position is automatically updated)
player_pos = player_pos.move(speed)
# drawing player
screen.blit(player,player_pos)
pygame.display.flip()
# set the game speed
pygame.time.delay(delay)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。