2 回答

TA贡献1862条经验 获得超6个赞
角色不会移动
player_change在主应用程序循环中,播放器的移动连续设置为 0。此外,玩家的位置不断初始化:
def game_loop(playerX, playerY, player_change, bulletX, bulletY, bulletX_change, >bulletY_change, bullet_state, bulletImg):
running = True
while running:
playerX = 370
playerY = 480
player_change = 0
初始化playerX,playerY和player_change循环之前:
def game_loop(playerX, playerY, player_change, bulletX, bulletY, bulletX_change, bulletY_change, bullet_state, bulletImg):
running = True
player_change = 0
playerX = 370
playerY = 480
while running:
playerX += player_change
# [...]
子弹不会射
如果要发射子弹,则必须设置子弹的初始位置bulletX, bulletY = playerX, playerY并设置bullet_state = 'fire':
def game_loop(playerX, playerY, player_change, bulletX, bulletY, bulletX_change, bulletY_change, bullet_state, bulletImg):
# [...]
while running:
playerX += player_change
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# If keystroke is pressed check whether its left or right
if event.type == pygame.KEYDOWN:
# [...]
if event.key == pygame.K_SPACE:
if bullet_state is 'ready':
#bullet_sound = mixer.Sound('laser.wav')
#bullet_sound.play()
# Get the current x coordinate of the spaceship
bulletX, bulletY = playerX, playerY
bullet_state = 'fire'
注意,global变量bullet_state
def fire_bullet(x, y):
global bullet_state
bullet_state = 'fire'
与 中的局部变量不同bullet_state,game_loop因为bullet_state它是一个参数game_loop,因此在不同的范围内是一个完全不同的变量,其名称随便相同:
def game_loop(playerX, playerY, player_change, bulletX, bulletY,
bulletX_change, bulletY_change,
bullet_state, # <--- that is a new variable in local scope
# and not the "global" bullet_state
bulletImg):
# [...]
添加回答
举报