为孩子们准备的python有趣作品:乌龟赛跑

由 小石头编程 发表于 2024年05月20日
### 介绍 使用循环绘制赛道, 并创建一个乌龟赛跑游戏。 这个项目通过有趣的乌龟赛跑游戏介绍了循环。 循环被用于绘制赛道并使乌龟每回合移动一个随机步数。 如果有一组人玩这个游戏,每个人选择一只乌龟,那个跑得最远的乌龟将获得胜利。 ![](https://www.codxz.com/media/upload/2024052019370843.png) ### 我们能学到什么 通过制作乌龟赛跑游戏,我们可以学到以下知识: - 在 python 中编写 for 循环 - 在Python中使用随机数 - 使用Python Turtle绘制不同颜色的线条 ### 项目制作 可以在[完整项目](https://py.codxz.com/?uid=d819c85712b44567a2045e6bf7cafd78)查看完整代码。 #### 1、跑道 首先我们需要建立一个跑道,可以在[python在线编辑器](https://py.codxz.com/)上直接编写代码。 >添加以下代码以使用"turtle"模块绘制一条线: ![](https://www.codxz.com/media/upload/2024052019431984.png) >现在让我们使用turtle模块来为赛跑绘制跑道标记。 Turtle模块中的write函数能在屏幕上绘制文本。 尝试一下: ![](https://www.codxz.com/media/upload/2024052019434615.png) >现在我们需要在线条两端之间填写一些数字来创建标记: ![](https://www.codxz.com/media/upload/2024052019441341.png) >有没有注意到我们的代码是非常重复的吗?它们唯一不同的地方是输入的数字。 在Python中有一种更好的方法来写这样重复的代码。我们可以使用for循环。 使用for循环来更新我们的代码: ![](https://www.codxz.com/media/upload/2024052019450601.png) >嗯,这只打印了从0到4之间的数字。Python中的range(5)函数将返回从0到4的五个数字。要让它返回数字5,则需要使用range(6): ![](https://www.codxz.com/media/upload/2024052019452802.png) >现在我们可以绘制一些跑道的标记了。turtle模块将从屏幕中央的坐标 (0,0) 开始绘制。 现在要将画笔移动到屏幕的左上方: ![](https://www.codxz.com/media/upload/2024052019455554.png) > 啊,我们要先把画笔抬起来! ![](https://www.codxz.com/media/upload/2024052019472318.png) >让我们绘制一些垂直线来创建跑道, 而不是水平线: ![](https://www.codxz.com/media/upload/2024052019473838.png) >right(90)函数使画笔向右转90度。将画笔放下之前,使用forward(10)函数前进10步将使线条的起点和数字之间保留一个小的空隙。 线条画好后,将画笔抬起并使用backward(160)函数向后移动160步,即线条和空隙的总长。 居中数字,将使界面看起来更整洁: ![](https://www.codxz.com/media/upload/2024052019475990.png) >你还可以加快画笔的速度,使它画得更快: ![](https://www.codxz.com/media/upload/2024052019481371.png) #### 2、挑战:更多线条 你能通过修改你的代码来在屏幕上向右侧绘制更多的跑道线条吗? ![](https://www.codxz.com/media/upload/2024052019484666.png) 如果你想让画笔移动得更快,可以使用speed(0)函数。 #### 3、主角上场,乌龟来了 现在我们到了有趣的时刻了, 让我们添加一些赛跑的乌龟。 如果所有的乌龟每次都移动同样的步数,那就没有意思了,我们要让它们每次移动一个随机的步数。 在100个回合之后,跑得最远的那个乌龟将获得胜利。 >当我们使用像 forward(20) 这样的命令时 , 我们控制的只是一只乌龟。但你可以添加更多的乌龟。将以下代码添加到程序的末尾(但请确保它没有缩进): ![](https://www.codxz.com/media/upload/2024052019494790.png) >第一行代码创建了一个名为"ada"的乌龟。接下来的两行分别设置了它的颜色和形状。现在它看起来确实是像一只乌龟了! 让我们把乌龟放到起跑线: ![](https://www.codxz.com/media/upload/2024052019501197.png) >现在我们需要通过一次移动一个随机步数来让乌龟赛跑。 您将需要调取python random 库中的 randint 函数。 将这个import语句添加到你的程序的顶部: ![](https://www.codxz.com/media/upload/2024052019503226.png) >randint 函数将返回设定范围之间的一个随机整数(不带小数点的数字)。乌龟将在每个回合中向前移动1、2、3、4或5步。 ![](https://www.codxz.com/media/upload/2024052019504618.png) >一只乌龟跑就不是比赛了!让我们再添加一个: ![](https://www.codxz.com/media/upload/2024052019510163.png) 请注意移动蓝色乌龟的代码需要和移动红色乌龟代码在同一个for循环中,以确保每个回合所有的乌龟都会向前移动。 #### 4、挑战:比赛时间! 现在我们已经准备开始比赛了。挑选一只乌龟和一个对手来看看谁会赢。 我们能够添加更多的乌龟让更多的朋友参与进来吗? ![](https://www.codxz.com/media/upload/2024052019514332.png) 颜色包括:橙色,紫色,紫罗兰色,番茄色,绿松石色,洋红色和棕色。 #### 5、挑战: 做一个旋转 你可以用for turn in range():循环让每个乌龟在到达起跑线时旋转360度吗? 在比赛开始前,你要确保它们都面向右方! ada.right(36) 会将红色乌龟ada向右旋转36度。 提示: 完整的转弯是360度。一只乌龟可以向右转10度36次,或者向左转5度72次,抑或是任何可以完成360旋转的其它数字! #### 6、挑战:虚线 你能用一个循环来画出虚线的跑道线,而不是实线的吗? ![](https://www.codxz.com/media/upload/2024052019524289.png) 提示:查找能绘制一条虚线的代码。 尝试使用:for, forward(), penup() 以及 pendown()