《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠
2023-09-11 14:19:10 时间
本节书摘来自华章计算机《树莓派Python编程指南》一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.2 一个Python游戏:猫和老鼠现在,让我们开始第二个Python程序。这次你将写出一个猫和老鼠的游戏。游戏者使用方向键来控制老鼠,使其保持在猫的前方(由计算机控制猫)。保持时间越长,得分越高。
下面例子中的程序名字是Chapter2-catandmouse.py。
打开一个IDLE3新窗口并输入下面的代码:
https://yqfile.alicdn.com/229f8a0fcdcb725e4fe026b4d2b1d5a4202ef7c9.png
"
代码很多,在仔细读之前可以先试玩几次感受一下。这样也可以检验你的输入是否完全正确。如果程序出错,先检查下输入,然后再试一下。图2-4给出了程序运行界面。
https://yqfile.alicdn.com/80bd7f4cc8b7f3287950038df555eb2172f32149.png
"
2.2.1 理解变量
程序前两行导入turtle和time模块,接下来的三行:
使用了我们之前接触过但没有深入介绍的概念:变量(variable)。我们可以在变量中存入值以便后面使用。例如,第一行中在变量boxsize中存入200。写完这行,你就可以在程序中使用boxsize,Python将使用正确的值来替代它。这个结构之所以称为变量是因为它可以变化。在我们的这个程序中,boxsize保持不变,但caught和score的值会发生变化。每次需要一个新值时,可以使用单个等号对其重新赋值。这和我们在第一个程序中对window和babbage赋值的做法一样,它们分别保存了screen和turtle。在第3章中我们将介绍变量,以及可以在变量中存储什么值。
2.2.2 定义函数
程序中接下来的代码定义了一些函数。注意在函数checkbounds()中的这一行:
https://yqfile.alicdn.com/e69b49d05c144ab4b807fe49cc0d2eb86edc010b.png
"
这行是必需的,因为函数无法存取定义在函数外面的变量。这一行告诉Python我们将在本函数中使用变量boxsize,而该变量是在函数外部定义的。
可能最让人困惑的就是这一节:
https://yqfile.alicdn.com/93a3f78d80c25382c1faf3870c414024e18ac4c3.png"
这段代码告诉窗体当不同的键按下时应该做什么。例如,第一行表示当“向上”键(键盘方向键的向上按键)按下时,运行函数up(我们已经定义好了)。
2.2.3 在游戏中循环
接下来就到了游戏的主循环中:
代码中使用了不同的循环方法。while循环如下:
它表示如果条件(condition)为真,将执行后面的循环代码(loop code)。在程序的变量列表中,可以看到变量caught被赋为False:
因此,这里使用的条件为not caught(因为not False为真,程序开始时该条件为真),程序一直运行到caught被赋值为真,因为not True表示假。这样描述会有点复杂。但如果按字面意思就很容易理解:前面的not表示将真和假反一下。
time.sleep()告诉Python停止在给定的时间,单位为秒。本例中我们随着难度等级(由用户输入一个值存在变量中)增加而减少程序等待时间。你会发现,随着难度增加,猫的运动速度也在增加。
此时也许你很想知道如何记住各个模块中对应的所有方法。比如,怎么才能知道应该使用forward(10)而不是forwards(10)或者move_forwards(10),或者怎么才能知道哪里可以找到向前移动的方法呢?使用Python不需要有超人的记忆力,你只需要知道在哪里可以查看帮助就好了。如果使用IDLE3,按下F1 Python文档就会显示在Web浏览器里。这里有很多有用信息,非常值得浏览一下。例如需要查看turtle模块的信息,只需要在快速查找窗口中输入turtle,然后选择第一项,你将会看到,我们已经使用过它的方法了。
相关文章
- Python中python-nmap模块的使用
- Python+NumPy绘制常见曲线的方法详解_python
- python魔法方法之-Python __repr__()方法:显示属性
- python - 如何使用 Docker 运行多个 Python 脚本和一个可执行文件?
- Python任意参数的数量/预习课python基础
- python能做什么软件?Python到底能干嘛,一文看懂
- 零基础自学Python需要多长时间从入门到精通?学python能兼职挣钱吗?怎么挣钱?
- Python分享:python爬虫可以用来做什么?
- 少儿学编程系列 --- 使用python程序暴力求解:数学游戏 24 Game的答案
- Python 游戏背景
- 《Python游戏编程快速上手》一1.3 如何使用本书
- 《Python游戏编程快速上手》一2.1 一些简单的数学知识
- 《Python游戏编程快速上手》一2.2 计算表达式
- 《Python和Pygame游戏开发指南》——2.5 pygame.event.Event对象
- 《Python和Pygame游戏开发指南》——2.22 播放声音
- 《Python游戏编程入门》——1.2 初识Python
- 《Python游戏编程入门》——1.3 Python中的对象
- Python游戏引擎开发(七):绘制矢量图
- 小学生python游戏编程arcade----时间问题及敌人角色自动发射炮弹
- 小学生python游戏编程arcade----坦克大战3
- 小学生python游戏编程arcade----爆炸粒子类
- 小学生python游戏编程arcade----游戏界面按钮实现事件实现的三种方法
- 小学生python游戏编程arcade----可旋转炮台的坦克
- 小学生python游戏编程arcade----基本知识5 自动行走的敌人
- 小学生python游戏编程arcade----基本知识3
- 小学生python游戏编程7----角色精灵定义
- 小学生python游戏编程2----飞机大战1