Python外星人入侵,python编程从入门到实践之外星人入侵

 2023-09-22 阅读 24 评论 0

摘要:关于子弹的发射问题,我出现了以下问题,以下记录如何解决的: 第1个问题:在“setting.py”中设置的子弹速度不对,原来是这样的: self.bullet_speed_factor = 1self.bullet_speed_width = 3self.bullet_speed_height = 15

关于子弹的发射问题,我出现了以下问题,以下记录如何解决的:
第1个问题:在“setting.py”中设置的子弹速度不对,原来是这样的:

        self.bullet_speed_factor = 1self.bullet_speed_width = 3self.bullet_speed_height = 15self.bullet_color = 0, 0, 0

现在是这样的:

        self.bullet_speed_factor = 1self.bullet_width = 3self.bullet_height = 15self.bullet_color = 0, 0, 0

也就是说,第二行和第三行多了一个speed,导致报错。这个问题应该是很早就能发现的,但是查了很久才发现。需要细心处理。

Python外星人入侵。第2个问题,完全按照书上的代码敲,发现没有子弹。一点一点的处理。
处理经过:

第一步:首先看一下程序是否检测到了按下空格这个操作。
具体就是print大法,在game_function.py中更改代码如下:

    elif event.key == pygame.K_SPACE:print("按下了空格键")new_bullet = Bullet(ai_settings, screen, ship)bullets.add(new_bullet)

通过运行发现,能够检测出“按下空格键”这个操作

第二步,检验子弹的位置。在bullet.py中的update函数,更改如下:

    def update(self):print("子弹向上飞行的速度"+str(self.speed_factor))self.y -= self.speed_factorself.rect.y = self.y

python入侵电脑?其中self.y代表子弹的纵向坐标,通过运行发现,这个“子弹向上飞行速度”这句话根本打印不出来,才发现,子弹位置没有更新。

解决方案:
在game_function.py里面的update_screen函数中,更改如下:

def update_screen(ai_settings, screen, ship, bullets):screen.fill(ai_settings.bg_color)for bullet in bullets.sprites():bullet.draw_bullet()print("画出子弹")bullet.update()ship.blitme()pygame.display.flip()

也就是说增加第5,6行,根本的原因在于没有让子弹的位置产生个更新。这也是本书上的错误。书上是没有bullet.update()这句话的。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/86464.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息