20234126 实验四 《Python程序设计》实验报告

20234126连菡 2024-06-30 23:31:22

# 20234126 2023-2024-2 实验四报告

课程:《Python程序设计》
班级: 2341
姓名: 连菡
学号:20234126
实验教师:王志强
实验日期:2024年6月18日
必修/选修: 公选课

## 1.实验内容
Flappy Bird是一款鸟类飞行游戏,由越南河内独立游戏开发者阮哈东(Dong Nguyen)开发。在 FlappyBird这款游戏中,玩家只需要用一根手指来操控,单击触摸手机屏幕,小鸟就会往上飞。不断地单击屏幕,小鸟就会不断地往高处飞;放松手指,则会快速下降。玩家要控制小鸟一直向前飞行,并且注意躲避途中高低不平的管子。如果小鸟碰到了障碍物,游戏就会结束。每当小鸟飞过一组管道,玩家就会获得1分。
在FlappyBird游戏中,主要有两个对象:小鸟和管道。可以创建Bird类和Pineline类来分别表示这两个对象。小鸟可以通过上下移动来躲避管道,所以在Bird类中创建一个birdUpdate()方法,实现小鸟的上下移动。为了体现小鸟向前飞行的特征,可以让管道一直向左侧移动,这样在窗口中就好像小鸟在向前飞行。所以,在Pineline类中也创建一个updatePipeline()方法,实现管道的向左移动。此外,还创建了3个函数:createMap()函数用于绘制地图;checkDead()函数用于判断小鸟的生命状态; getResult()函数用于获取最终分数。最后在主逻辑中,实例化类并调用相关方法,实现相应功能。

## 2. 实验过程及结果


1.搭建主框架
Flappy Bird游戏有两个对象:小鸟和管道。先来创建这两个类,类中具体的方法可以先使用pass语句代替。然后创建一个绘制地图的函数 createMap()。最后,在主逻辑中绘制背景图片。
2.创建小鸟类
该类需要初始化很多参数,所以定义一个init__(方法,用来初始化各种参数,包括鸟飞行的几种状态、飞行的速度、跳跃的高度等。然后定义birdUpdate()方法,该方法用于实现小鸟的跳跃和坠落。接下来,在主逻辑的轮询事件中添加键盘按下事件或鼠标单击事件,如按下鼠标,使小鸟上升等。最后,在createMap()方法中,显示小鸟的图像。
3.创建管道类
同样,在_init_0方法中初始化各种参数,包括设置管道的坐标,加载上下管道图片等。然后在updatePipeline()方法中,定义管道向左移动的速度,并且当管道移出屏幕时,重新绘制下一组管道。最后,在createMap()函数中显示管道。
在createMap()函数内,设置先显示管道,再显示小鸟。这样做的目的是为了当小鸟与管道图像重合时,小鸟的图像显示在上层,而管道的图像显示在底层。
4.计算得分
当小鸟飞过管道时,玩家得分加1。这里对于飞过管道的逻辑做了简化处理:当管道移动到窗体左侧一定距离后,默认为小鸟飞过管道,使分数加1,并显示在屏幕上。
5.碰撞检测
当小鸟与管道相撞时,小鸟颜色变为灰色,游戏结束,并且显示总分数。在checkDead()函数中通过pygame.Rect()可以分别获取小鸟的矩形区域对象和管道的矩形区域对象,该对象有一个colliderect()方法可以判断两个矩形区域是否相撞。如果相撞,设置Bird.dead属性为True。此外,当小鸟飞出窗体时,也设置Bird.dead属性为True。最后,用两行文字显示游戏得分。

运行结果

作业展示

所用到的素材

 

 

 

## 3. 实验过程中遇到的问题和解决过程
- 问题1:代码是按照教材编写的,但是无法运行;
- 问题1解决方案:缺少部分代码导致无法运行,又搜索了相关的代码。
- 问题2:不会再csdn上上传视频;
- 问题2解决方案:还是通过搜索解决了问题。
 


## 其他(感悟、思考等)

应该按时按点完成实验报告,不然会给老师和同学带来麻烦,这是很不好的。王老师是很理解我们的老师,上课也深入浅出,跟着老师学习到了之前不知道的知识,感谢老师一个学期的辛勤教导!

...全文
110 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

93

社区成员

发帖
与我相关
我的任务
社区描述
Python程序设计作业
软件构建 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧