自学python的升级路 2022-01-18 19:04 采纳率: 66.7%
浏览 72
已结题

外星人入侵项目——飞船移动

问题遇到的现象和发生背景

我是完全复制书上的代码,在12.6.2 允许持续移动 一节中,更改代码以后运行,发现只要按一下方向右键,飞船就会持续向右移动,直至跑出屏幕之外。

问题相关代码

下面是alien_invasion.py中的代码:
def _check_events(self):

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                self.ship.moving_right = True
            elif event.key == pygame.K_LEFT:
                self.ship.moving_left = True
                
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                self.ship.moving_right == False
            elif event.key == pygame.K_LEFT:
                self.ship.moving_left = False

下面是ship.py中的代码:
def init(self, ai_game):

    self.screen = ai_game.screen
    self.settings = ai_game.settings
    self.screen_rect = ai_game.screen.get_rect()
    

    self.image = pygame.image.load('images/ship.bmp')
    self.rect = self.image.get_rect()
    
    #对于每艘新飞船,都将其放在屏幕底部的中央。
    self.rect.midbottom = self.screen_rect.midbottom
    
    #在飞船的属性x中存储小数值。
    self.x = float(self.rect.x)
    
    #移动标志
    self.moving_right = False
    self.moving_left = False
    
def update(self):

    #更新飞船而不是rect对象的x值。
    if self.moving_right:
        self.x += self.settings.ship_speed
    if self.moving_left:
        self.x -=self.settings.ship_speed
    
    #根据self.x更新rect对象。
    self.rect.x = self.x
运行结果及报错内容

运行结果是:按下右键一下,飞船持续向右移动直至跑出屏幕之外,按下左键既可以只动一下,又可以持续移动。

我想要达到的结果

```

```帮忙解答,有小福利。

  • 写回答

1条回答 默认 最新

  • Castle Yeager 2022-01-18 19:39
    关注

    ”下面是alien_invasion.py中的代码:
    def _check_events(self)“

    这段代码的第12行。应该是 一个=,写成判断相等的 双== 了,目测粗心写错了
    导致松开右键时没能将 moving_right 设置成 False,但左方向的操作是写对的,所以没有这个问题
    建议修改后再次尝试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 已采纳回答 1月18日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题
  • ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误