
哈喽,小朋友们!又见面啦!今天我们要一起探索一个超级有趣的Python程序——飞翔的小鸟!这个程序里有可爱的小鸟、会移动的管道,还有好玩的点击控制,是不是很好奇呀?
真正的课程导入语:同学们!你们想知道怎么用Python制作一个飞翔的小鸟游戏吗?今天的Python课堂,我们就要解锁超好玩的"飞翔的小鸟"程序!想象一下:一只可爱的小鸟在屏幕中飞翔,你点击屏幕它就会向上飞,要小心避开迎面而来的管道,是不是听起来很有趣?

通过这节课,我们会了解到如何用Python的turtle库制作游戏,如何实现重力效果,如何创建随机管道,如何实现碰撞检测,更能锻炼我们的逻辑思维和创造力。比如,你知道什么是重力吗?你知道怎么让管道随机生成吗?你知道怎么检测碰撞吗?
接下来,就让我们一起化身小小程序员,用Python编写属于自己的飞翔的小鸟游戏,看看谁能最快理解游戏的原理!准备好开启这场编程冒险了吗?现在,Let's code!
点击视频预览本案例
课件、讲义、素材已更新至本公众号菜单栏【教学资源】

可爱小鸟:一只可爱的小鸟在屏幕中飞翔,有动画效果!
重力效果:小鸟会受到重力影响,自然下落!
点击控制:点击屏幕,小鸟就会向上飞!
移动管道:管道会从右向左移动,需要避开!
随机管道:管道的位置是随机生成的,每次游戏都不一样!
碰撞检测:如果小鸟碰到管道,游戏就会结束!
游戏结束:游戏结束时会显示"game over"画面!
流畅动画:游戏运行流畅,动画效果自然!
小朋友们,在开始讲解代码之前,让我们先学习一下游戏开发的小知识!这个知识会帮助我们理解程序是怎么工作的哦!
重力效果就是模拟现实世界中的重力,让物体自然下落。在游戏中,我们通过不断减小小鸟的垂直速度来实现重力效果,这样小鸟就会像在现实中一样下落啦!
碰撞检测就是检测游戏中的物体是否碰到了一起。在我们的游戏中,就是检测小鸟是否碰到了管道。如果碰到了,游戏就结束!
turtle库是Python中一个非常适合初学者的绘图库,它可以用来创建图形和动画。我们可以用它来制作简单的游戏,就像我们今天的飞翔的小鸟!
随机生成就是让电脑随机产生一些数值,这样每次游戏的管道位置都会不一样,增加游戏的挑战性!
好啦,游戏知识学完了!现在让我们一起来看看程序的实现步骤吧!
我们的飞翔的小鸟游戏就像一个小团队在协作完成一场表演:
准备工作:导入必要的库,设置游戏窗口,加载图片资源
角色创建:创建小鸟、管道和游戏结束画面
游戏循环:不断更新小鸟的位置,移动管道,检测碰撞
用户交互:监听鼠标点击,控制小鸟向上飞
游戏结束:当小鸟碰到管道时,显示游戏结束画面
首先,我们需要导入必要的库,设置游戏窗口的大小和背景:
importtimeimportturtleimportrandom# 初始化窗口screen = turtle.Screen()screen.setup(width=400, height=710)screen.tracer(0) # 关闭自动更新,手动更新窗口# 背景bg_image = "游戏中1.png"screen.bgpic(bg_image)
实现原理:这一步是我们的"准备工作"!就像盖房子要先打地基一样,我们需要先设置好游戏的基本环境。import语句导入了我们需要的库,screen.setup设置了窗口的大小,screen.tracer(0)关闭了自动更新,这样我们可以手动控制游戏的更新速度,让游戏运行更流畅。
接下来,我们需要注册游戏中用到的图片资源:
list1 = ["柱下.gif","柱上.gif","小鸟1.gif","game over.gif"]foriinlist1:screen.register_shape(i)
实现原理:这一步是在"准备演员"!我们需要告诉turtle库我们要使用哪些图片,这样后面才能用这些图片来创建角色。
现在,我们来创建小鸟角色:
# 小鸟bird = turtle.Turtle()bird.shape("小鸟1.gif") # 使用小鸟的图片bird.penup()bird.speed(0)bird.goto(-50, 37) # 初始位置bird.gravity = -1# 重力bird.y_speed = 0# 垂直速度
实现原理:这一步是在"创建主角"!我们创建了一个turtle对象作为小鸟,设置了它的图片、初始位置,还添加了重力和垂直速度属性。重力是负数,这样小鸟就会自然下落;垂直速度初始为0,当我们点击屏幕时会增加这个值,让小鸟向上飞。
接下来,我们创建管道角色:
# 柱体column_x = 300column_speed = -10column_u = turtle.Turtle()column_u.shape("柱上.gif") # 使用管道的图片column_u.penup()column_u.speed(0)column_d = turtle.Turtle()column_d.shape("柱下.gif") # 使用管道的图片column_d.penup()column_d.speed(0)
实现原理:这一步是在"创建障碍物"!我们创建了两个turtle对象作为上下管道,设置了它们的图片和初始速度。管道的速度是负数,这样它们就会从右向左移动。
现在,我们创建游戏结束画面:
over = turtle.Turtle()over.shape("game over.gif") # 使用游戏结束的图片over.ht() # 隐藏游戏结束画面
实现原理:这一步是在"准备结局"!我们创建了一个turtle对象作为游戏结束画面,初始时隐藏它,当游戏结束时再显示出来。
接下来,我们定义一个函数来设置管道的位置:
defcolumn_xy():column_y = random.randint(100,500)column_y1 = random.randint(10,100)column_u.goto(column_x, column_y) # 初始位置 column_d.goto(column_x, column_y-600-column_y1) # 初始位置 # 调用函数设置初始管道位置column_xy()
实现原理:这一步是在"设计障碍物的位置"!我们定义了一个函数,使用random.randint来随机生成管道的位置,这样每次游戏的管道位置都会不一样,增加游戏的挑战性。
现在,我们定义一个函数来控制小鸟的跳跃:
# 控制小鸟的跳跃defflap(x,y):print(x,y)bird.y_speed = 10
实现原理:这一步是在"设计游戏控制"!我们定义了一个函数,当用户点击屏幕时,这个函数会被调用,将小鸟的垂直速度设置为10,这样小鸟就会向上飞。
接下来,我们绑定鼠标点击事件:
# 绑定鼠标点击screen.onclick(flap)screen.listen()
实现原理:这一步是在"连接玩家和游戏"!我们使用screen.onclick将鼠标点击事件绑定到flap函数,这样当用户点击屏幕时,flap函数就会被调用,小鸟就会向上飞。
现在,我们编写游戏的主循环:
running = Truewhilerunning:screen.update() # 更新窗口bird.y_speed += bird.gravity# 应用重力bird.sety(bird.ycor() +bird.y_speed) # 更新小鸟的垂直位置column_u.setx(column_u.xcor() +column_speed)column_d.setx(column_d.xcor() +column_speed)# 碰撞检测if (column_u.xcor()-34-15<bird.xcor() <column_u.xcor()+34+15) and\ (bird.ycor()+15>column_u.ycor()-250orbird.ycor()-15<column_d.ycor()+250):running = False# 检查小鸟是否超出边界ifcolumn_u.xcor()<-350:column_xy()column_u.setx(350)column_d.setx(350)time.sleep(0.02)# 游戏结束over.st()screen.tracer(1)# 结束游戏turtle.done()
实现原理:这一步是游戏的"核心部分"!在这个循环中,我们不断更新小鸟的位置(应用重力),移动管道,检测碰撞,以及当管道超出屏幕边界时重新生成管道。如果小鸟碰到管道,游戏就会结束,显示游戏结束画面。
我们的飞翔的小鸟游戏有以下几个亮点:
重力效果:通过不断减小小鸟的垂直速度,实现了真实的重力效果,让小鸟自然下落
随机管道:使用随机数生成管道的位置,每次游戏都不一样,增加了游戏的挑战性
碰撞检测:实现了小鸟与管道的碰撞检测,当小鸟碰到管道时游戏结束
流畅动画:通过手动控制窗口更新和适当的睡眠时间,实现了流畅的动画效果
交互控制:通过鼠标点击控制小鸟向上飞,操作简单直观
添加计分系统:每通过一个管道,得分加1,显示在屏幕上
增加难度:随着游戏进行,管道移动速度逐渐加快
添加音效:为小鸟跳跃和碰撞添加音效,增强游戏体验
多个小鸟选择:让玩家可以选择不同的小鸟角色
背景变化:随着游戏进行,背景可以逐渐变化
添加地面:小鸟碰到地面也会游戏结束
添加开始界面:游戏开始前显示开始界面,点击开始游戏
添加暂停功能:按空格键可以暂停游戏
通过本次Python编程实践,我们不仅学会了如何使用turtle库制作游戏,如何实现重力效果,如何创建随机管道,如何实现碰撞检测等编程技巧,更重要的是,我们通过代码实现了一个经典的飞翔的小鸟游戏,体验了游戏开发的乐趣。
小朋友们,编程是一件非常有趣的事情,它可以让我们把想象变成现实!希望你们能在编程的世界里,继续探索更多有趣的项目,成为数字时代的小创客!
