按照书的代码敲的,怎么按左右键不能移动飞船。
import sys # 导入模块sys(玩家退出时,使用模块sys中的工具来退出游戏)。
import pygame # 导入模块pygame(包含开发游戏所需的功能)。
from settings import Settings
from ship import Ship
class AlienInvasion:
"""管理游戏资源和行为的类"""
def __init__(self):
"""初始化游戏并创建游戏资源"""
pygame.init() # 初始化背景设置。
self.settings = Settings()
self.screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)
self.settings.screen_width = self.screen.get_rect().width
self.settings.screen_height = self.screen.get_rect().height
pygame.display.set_caption("外星人入侵")
self.ship = Ship(self)
def run_game(self):
"""开始游戏的主循环"""
while True:
# 监视键盘和鼠标的事件。
self._check_events()
self.ship.update()
self._update_screen()
def _check_events(self):
"""响应按键和鼠标事件"""
for event in pygame.event.get():
if event.type == pygame.QUIT: # 当玩家单击关闭按钮时。
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown_events(event)
elif event.type == pygame.KEYUP:
self._check_keyup_events(event)
def _check_keydown_events(self,event):
"""响应按键"""
if event.type == pygame.K_RIGHT:
self.ship.moving_right = True
elif event.type == pygame.K_LEFT:
self.ship.moving_left = True
elif event.key == pygame.K_q:
sys.exit()
def _check_keyup_events(self,event):
"""响应按键"""
if event.type == pygame.K_RIGHT:
self.ship.moving_right = False
elif event.type == pygame.K_LEFT:
self.ship.moving_left = False
def _update_screen(self):
"""更新屏幕上的图像,并切换到新屏幕。"""
# 每次循环时都重绘屏幕。
self.screen.fill(self.settings.bg_color)
self.ship.blitme()
# 让最近绘制的屏幕可见。
pygame.display.flip()
if __name__ == '__main__': # 仅当直接运行该文件时,它们才会执行。
# 创建游戏实例并运行游戏。
ai = AlienInvasion()
ai.run_game()
从当前的代码来看, 已经响应了按键操作, 也可能问题出现在你的ship.py 里
我也一样,不知道哪里有问题
书后有源码,可以跑