《Python编程:入门到实践》里项目篇的第一个项目,用Python写一个外星人入侵的小游戏

版本信息:
python 3.5
pygame 1.9.4

安装pygame

安装过程按照书上写的没有安装成功,,缺少了一些包。

对于Python3.x的版本,按照以下方法安装:

1
2
3
4
5
6
sudo apt-get install mercurial python3-dev python3-numpy ffmpeg \
libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev \
libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev
sudo apt-get install mercurial
pip install hg+http://bitbucket.org/pygame/pygame

第一行是安装pygame所需的各种依赖,装好后会有found的提示,如果依然报错有哪个not found, 就用sudo apt-get install安装提示的没有找到的。
第五行是为了使用hg安装的mercurial

还可以用另一种方法,在安装完依赖和mercurial后,第三步用源码安装:

1
2
3
4
5
hg clone https://bitbucket.org/pygame/pygame
cd pygame
python setup.py build
sudo python setup.py install

安装pygame完成。

参考方法来自:

https://blog.csdn.net/zkwniky/article/details/54768739

https://stackoverflow.com/questions/17869101/unable-to-install-pygame-using-pip

有一个小知识点,在游戏过程中分数在不断变化,比如3398 55101 9348824等,要将分数转换为 3,398 55,101 9,348,824这样的,具体相关代码如下:

1
2
3
4
5
6
def prep_score(self):
# 将最高得分圆整到最近的 10 的整数倍
rounded_score = int(round(self.stats.score, -1))
# 添加了用逗号表示的千分位分隔符
score_str = "{:,}".format(rounded_score)

函数 round() 通常让小数精确到小数点后多少位,其中小数位数是由第二个实参指定的。如果将第二个实参指定为负数,round() 将圆整到最近的 10 、 100 、 1000 等整数倍。在 Python 2.7 中, round() 总是返回一个小数值,因此我们使用 int() 来确保报告的得分为整数。

完整代码:

https://github.com/huanyouchen/pygame-alien-invasion-game

游戏效果图: