外星人入侵游戏python学习心得——子弹不动

《python从入门到实践》
书中的第一个项目——外星人入侵(Alien Invasion),书中的代码有一些细微的问题,在学习过程中,按照书中的代码敲写出现了一些问题。

一.问题描述:

书中代码如下***(在game_functions.py文件中):***
外星人入侵游戏python学习心得——子弹不动_第1张图片
在学习过程中出现了子弹可以显示,但无法移动的现象。前面的***bullet.py***文件中已经定义了子弹移动函数(书中代码如下):
外星人入侵游戏python学习心得——子弹不动_第2张图片
之所以子弹无法移动,是因为在***game_functions.py***文件中的如下部分:
外星人入侵游戏python学习心得——子弹不动_第3张图片
并没有调用***bullet.py***中的子弹移动函数***def update(self)?**(即没有使用子弹移动这个共功能,你根本没要求它动)

二.解决办法

故***game_functions.py***文件中的***def update_screen(ai_settings,screen,ship,bullets)?**正确代码应该为:

def update_screen(ai_setting, screen, ship, bullets):
    """更新屏幕的图像,切换到屏幕"""
    # 每次循环更新屏幕
    screen.fill(ai_setting.bg_color)

    # 在飞船和外星人后面重绘制所有子弹
    for bullet in bullets.sprites():
        bullet.draw_bullet() # 子弹绘制
        bullet.update_bullet() # 子弹移动
        
    ship.blitme()
    # 让最近的图像可见
    pygame.display.flip()

这样,子弹就可以移动了,嘻嘻(若有帮助,就关注我吧,对我以此鼓励)

你可能感兴趣的:(Python项目—外星人入侵)