如何解决pygame玩家不动
我正在制作一款涉及玩家左右移动的游戏。但是,在下面的代码中,播放器无法移动。谁能告诉我为什么player1精灵不移动?它出现在游戏屏幕上,但是当我按下移动键时,播放器不会向左或向右移动。
代码:
import pygame
import sys
pygame.init()
game_screen = pygame.display.set_mode((600,600))
pygame.display.set_caption("Whiskey Goggles")
bg = pygame.image.load("bg.png")
bg_image = pygame.transform.scale(bg,(600,600))
class Player:
def __init__(self,image_path,width,height,x,y):
self.image_path = image_path
self.width = width
self.height = height
self.x = x
self.y = y
player = pygame.image.load(image_path)
self.player_main = pygame.transform.scale(player,(width,height))
def draw(self,background):
background.blit(self.player_main,(self.x,self.y))
#Main game
game_on = True
while game_on:
clock = pygame.time.Clock()
clock.tick(60)
direction = 0
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_on = False
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
direction = 1
elif event.key == pygame.K_LEFT:
direction = -1
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT:
direction = 0
game_screen.fill((0,0))
game_screen.blit(bg_image,(0,0))
player1 = Player("glass.png",70,25,500)
player1.draw(game_screen)
if direction > 0:
player1.x = player1.x + 10
elif direction < 0:
player1.x = player1.x - 10
pygame.display.update()
quit()
解决方法
您要在同一位置的每个循环中创建一个新播放器(并重置direction
)。在循环之外创建它。
game_on = True
player1 = Object("glass.png",70,25,500) # Create the player here instead.
direction = 0 # The same with direction.
while game_on:
clock = pygame.time.Clock()
clock.tick(60)
# direction = 0 Don't reset the direction every loop.
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_on = False
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
direction = 1
elif event.key == pygame.K_LEFT:
direction = -1
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT:
direction = 0
game_screen.fill((0,0))
game_screen.blit(bg_image,(0,0))
# player1 = Object("glass.png",500) # Don't do this.
player1.draw(game_screen)
if direction > 0:
player1.x = player1.x + 10
elif direction < 0:
player1.x = player1.x - 10
pygame.display.update()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。