《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

简介:

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 一个Python游戏:猫和老鼠

现在,让我们开始第二个Python程序。这次你将写出一个猫和老鼠的游戏。游戏者使用方向键来控制老鼠,使其保持在猫的前方(由计算机控制猫)。保持时间越长,得分越高。
下面例子中的程序名字是Chapter2-catandmouse.py。
打开一个IDLE3新窗口并输入下面的代码:


<a href=https://yqfile.alicdn.com/229f8a0fcdcb725e4fe026b4d2b1d5a4202ef7c9.png
" >


5d01b2bfce8b3673a62b9ebcae965c3afe401875


cc5a183777cb95de3c94545682bfb41e56c2a577

代码很多,在仔细读之前可以先试玩几次感受一下。这样也可以检验你的输入是否完全正确。如果程序出错,先检查下输入,然后再试一下。图2-4给出了程序运行界面。

<a href=https://yqfile.alicdn.com/80bd7f4cc8b7f3287950038df555eb2172f32149.png
" >

2.2.1 理解变量
程序前两行导入turtle和time模块,接下来的三行:


ac46e837c020f5694dcf26350b7c9b15d0e724ac

使用了我们之前接触过但没有深入介绍的概念:变量(variable)。我们可以在变量中存入值以便后面使用。例如,第一行中在变量boxsize中存入200。写完这行,你就可以在程序中使用boxsize,Python将使用正确的值来替代它。这个结构之所以称为变量是因为它可以变化。在我们的这个程序中,boxsize保持不变,但caught和score的值会发生变化。每次需要一个新值时,可以使用单个等号对其重新赋值。这和我们在第一个程序中对window和babbage赋值的做法一样,它们分别保存了screen和turtle。在第3章中我们将介绍变量,以及可以在变量中存储什么值。
2.2.2 定义函数
程序中接下来的代码定义了一些函数。注意在函数checkbounds()中的这一行:

<a href=https://yqfile.alicdn.com/e69b49d05c144ab4b807fe49cc0d2eb86edc010b.png
" >

这行是必需的,因为函数无法存取定义在函数外面的变量。这一行告诉Python我们将在本函数中使用变量boxsize,而该变量是在函数外部定义的。
可能最让人困惑的就是这一节:

<a href=https://yqfile.alicdn.com/93a3f78d80c25382c1faf3870c414024e18ac4c3.png" >

这段代码告诉窗体当不同的键按下时应该做什么。例如,第一行表示当“向上”键(键盘方向键的向上按键)按下时,运行函数up(我们已经定义好了)。
2.2.3 在游戏中循环
接下来就到了游戏的主循环中:


83391019c6bd7e5eb498cb51a27a1b1c2543d1db


fb3f2d8d42b6813bb68c4d8e8e0e0afa3ffd8d56

代码中使用了不同的循环方法。while循环如下:

p><p>

它表示如果条件(condition)为真,将执行后面的循环代码(loop code)。在程序的变量列表中,可以看到变量caught被赋为False:


2ed415903a455828edcdb94aade55cd42d611748

因此,这里使用的条件为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,然后选择第一项,你将会看到,我们已经使用过它的方法了。
相关文章
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
891 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
1205 7
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
存储 算法 区块链
从零实现Python扫雷游戏:完整开发指南与深度解析
扫雷作为Windows经典游戏,承载了许多人的童年回忆。本文将详细介绍如何使用Python和Tkinter库从零开始构建一个功能完整的扫雷游戏,涵盖游戏设计、算法实现和界面开发的全过程。
967 1
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1625 1
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
915 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
1246 0
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
525 33
|
人工智能 算法 图形学
总有一个是你想要的分享40个Python游戏源代码
这是一系列基于Python开发的游戏项目集合,包括中国象棋、麻将、足球、坦克大战、扑克等多种类型游戏,运用了Pygame等库实现图形界面与AI算法。此外还包含迷宫、数独、推箱子等益智游戏及经典游戏如《仙剑奇侠传二战棋版》和《星露谷物语》的Python版本,适合编程学习与娱乐。
2206 11

推荐镜像

更多