关于子弹的发射问题,我出现了以下问题,以下记录如何解决的:
第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()这句话的。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态