python - 玩家角色没有移动
问题描述
所以,我在我的游戏中开发太空船运动时遇到了一些麻烦。我检查了几次代码,但仍然找不到任何东西。该项目来自此视频https://www.youtube.com/watch?v=FfWpgLFMI7w,我在 44:55 分钟得到了这个错误,我使用的是 Python 3.8。这是代码。
import pygame
# Initiate pygame
pygame.init()
# Display the game window
screen = pygame.display.set_mode((800,600))
# Title and Icon
pygame.display.set_caption('Space Invaders')
icon = pygame.image.load('icon.png')
pygame.display.set_icon(icon)
# Player
playerSprite = pygame.image.load('player.png')
playerX = 370
playerY = 480
playerX_change = 0
def player(x,y):
screen.blit(playerSprite, (x, y))
# Game Loop
running = True
while running:
# Background color (RGB)
screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# If a key is pressed, check if it's the right or left arrow key
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
playerX_change = -0.1
if event.key == pygame.K_RIGHT:
playerX_change = 0.1
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
playerX_change = 0.1
# Move the spaceship to the left or right
playerX_change += playerX
player(playerX,playerY)
pygame.display.update()
解决方案
您必须更改播放器的位置 ( playerX
) 而不是移动距离playerX_change
:
playerX_change += playerX
playerX += playerX_change
无论如何,代码可以通过使用来简化pygame.key.get_pressed()
。pygame.key.get_pressed()
返回一个布尔值序列,表示每个键的状态:
# Game Loop
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Move the spaceship to the left or right
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
playerX -= 0.1
if keys[pygame.K_RIGHT]:
playerX += 0.1
# Background color (RGB)
screen.fill((0, 0, 0))
player(playerX,playerY)
pygame.display.update()
推荐阅读
- android-studio - 在这种特殊情况下如何制作第二个子菜单?
- asp.net-core - 具有将当前 URL 分配为 Href 的动态参数的 Razor Pages Tag Helper
- python - 跟踪邀请 discord.py
- scala - Scala 2.13 顶级定义替代方案和最佳实践
- c++ - 使用 MEX 将 MATLAB 向量传递给 C++ Eigen
- python - 枚举对象的比较没有按预期工作
- python - 尝试使用 Google Gmail API 时出错
- c# - C#、Cassia 终端服务器查询和模拟
- excel - 使用数组公式逐行过滤数据范围
- python - Selenium 似乎没有安装