作为初次接触程序设计的我在看到云班课中用python进行游戏编程后感到很有意思,所以我决定这次做一个最经典的小鸟管道游戏。虽然网上许多大佬都说这是最基础的一项游戏编码,但我还是用了许多时间去做成这个游戏。

一.首先安装pygame

这个安装是由很多方法的,根据结课时老师和学长总结的和我在网上找到的,目前是总结了三种:

(1)输入 pip install pygame进行安装;

(2)在pygame中直接输入‘pygame’,点击小灯泡;

(3)在菜单中搜索安装,

双击,找到pip再双击,

进行搜索,点击install package即可进行安装,安装成功后右下角会有提示。

二.准备游戏图片

包括小鸟的形象、游戏背景等都需要与代码在同一个文件里的图片文件。

这个我是在百度上找到了别人的网盘图片打包到自己的文件中。

准备完毕,然后就可以进行编码制作游戏了。

三.游戏编码

根据云班课中的视频教学,游戏制作大概可以分为六部分来进行。

1.设置游戏窗口背景

进行背景设置,将背景图片放置在窗口上,通过轮询来获取操控,进行游戏。

2.定义小鸟类

对小鸟的皮肤、坐标、降落速度、生命状态等进行设置,考虑到小鸟的各种运动状态,通过改变小鸟的坐标来实现变化。

3.定义管道类

定义上管道和下管道的X坐标,并小鸟飞跃管道时分数加1,设置管道坐标逐渐减小,形成管道向左移动。

4.创建地图

显示游戏中的背景图片,小鸟图片、管道图片以及显示文字。

5.判断碰撞

使用pygame.Rect.colliderect来判断小鸟和管道是否碰撞以及是否飞出上下边界。

6.加载文字

通过文字来显示数据的变化,通过设置文字的颜色和位置来在游戏窗口上展示。

7.游戏效果(含视频存于百度网盘中和视频截图)

链接:https://pan.baidu.com/s/1RTNQrcehLUKNCP_k64MCMQ

提取码:xngd

复制这段内容后打开百度网盘手机App,操作更方便哦

8.码云链接

https://gitee.com/ma-changruo/py.git

四.实验中遇到的问题和解决过程

问题一:

解决方法:看到这个在一开始是有点迷惑的,因为自己是事先已经安装了pygame模块的,然后百度进行了搜索,结果发现是一个简单但是又容易忽略的问题,就是文件名与pygame重名。也就是说改一下这个文件名就可以了。https://blog.csdn.net/weixin_43495813/article/details/102919181

问题二:这算是一个比较傻的问题了,当我一切就绪后发现代码中没有对'Ture'的定义,于是就在定义的部分加上了Ture = 'Ture'

然而当程序开始运行时,我发现了游戏的框框和内容都是黑色的:

解决方法:我开始在网上寻找,但是我没有找到类似的错误。只有在很多篇中看到了一个类似的,说是代码错误,于是乎我又重新检查了一下我的代码,发现有的地方敲的是'Ture',有的地方敲的是'True',还有一些地方是我上面定义的和下面使用的不一样,总而言之就是有许多奇奇怪怪的错误。这也提示了我不仅要在编代码的时候保持认真,在编完后也要仔细检查,不能因为代码有点长就偷懒不检查了,要不然会出现更多奇怪的错误。

五.课后感想

就我平时学习的C语言和python而言,我觉得python是更加有趣的,也可能是因为课程原因,我觉得python是更能给人创造、发挥的空间的一门语言。课堂内容也是很生动形象的,不只是有确定的语法知识,王老师还会结合生活中的实际给我们讲课,还有和大家一起编码,这样也就方便了当同学们有问题的时候可以及时解决;有时王老师还会敲出一些常见的错误语句和同学们一起去解决,使课堂不再是老师的课堂,而是一个彼此共同交流、分享经验的沙龙会。

王老师也十分注重我们解决问题的能力,在第一次上课时,王老师就向我们说明了自己通过思考、查找资料等途径独立解决问题比直接获得答案更为重要。其实在步入大学之前我并没有怎么使用过电脑,就连大一上学期也只是偶尔用电脑写个文档,在这个学期,我才是真正了解到了电脑的用处不只是玩游戏,还有路径、文件、结构等等各种名词,在尝试解决各种问题的过程中对计算机一些常见问题逐渐熟悉,逐渐开始能够靠着自己已有的知识储备解决问题。

综上所述,在这门课中,我最大的收获就是培养了自我解决问题的习惯,独立思考、自己动手、询问前辈、积累经验,这样才能在每一点点学习中不断进步。

六.意见和建议

在上课的时候我还是会发现有一些同学在课堂上没有听老师讲课的内容,而且有时候我在上课时代码敲的慢一些就会跟不上老师的节奏,所以我希望老师在以后的课程中可以在开始的时候先组建学习小组,这样的话在以后上课的时候小组成员可以坐的稍微集中一些,一起学习、相互监督,或者像本次课一样进行小组课题展示,激发每一位学生的学习积极性。

七.参考资料

1.https://blog.csdn.net/weixin_42756970/article/details/107429058

2.https://blog.csdn.net/weixin_43495813/article/details/102919181

20203412马畅若《Python程序设计》实验四Python综合实践报告的更多相关文章

  1. Python程序设计实验报告四:循环结构程序设计(设计型实验)

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.8     指导老师       修宇 [实验名称 ...

  2. PYTHON程序设计实验

    Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ...

  3. Python程序设计实验报告二:顺序结构程序设计(验证性实验)

      安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩 日期     2020.3.22     指导老师       修宇 [实验 ...

  4. Python程序设计实验报告一:熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩_____           日期     2020.3.8     指导老师  ...

  5. Python程序设计 实验 1 熟悉 IDLE 和在线编程平台

    ------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2 ...

  6. Python程序设计实验报告三:分支结构程序设计

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.5     指导老师       修宇 [实验目的 ...

  7. 实验四 Python综合实践

    课程:<Python程序设计> 班级:1843 姓名:章森洋 学号:20184307 实验教师:王志强 实验日期:2020年5月16日 必修/选修: 公选课 1.实验内容 此处填写实验的具 ...

  8. 20172314 Android程序设计 实验四

    课程:<程序设计与数据结构> 班级: 1723 姓名: 方艺雯 学号:20172314 实验教师:王志强 实验日期:2018年5月30日 必修/选修: 必修 1.实验内容及要求 (1)An ...

  9. .NET程序设计实验四

    实验四  文件操作 一.实验目的 1. 掌握窗口控件的使用方法: 2. 掌握文件系统的操作方法.File 类和 Directory类的使用. 二.实验要求 根据要求,编写 C#程序,并将程序代码和运行 ...

  10. 『嗨威说』算法设计与分析 - PTA 程序存储问题 / 删数问题 / 最优合并问题(第四章上机实践报告)

    本文索引目录: 一.PTA实验报告题1 : 程序存储问题 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 删数问题 2.1 实践题目 ...

随机推荐

  1. TCP与UDP、socket模块

    1.传输层之TCP与UDP协议 1.TCP协议 1.传输控制协议(也称为TCP协议或可靠协议)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议,(数据不容易丢失);造成数据不容 ...

  2. 【动画笔记】数据结构-AVL树的插入操作

    本笔记前置知识: 二叉搜索(排序)树及其插入操作. 本文主要围绕AVL树的平衡因子.纸上做题思路.失衡类型(LL/RR/LR/RL).失衡调整方法.插入后回溯这几部分知识点展开. 注: 本笔记中的平衡 ...

  3. QT 5 中文乱码,试试在PRO文件加入这几行代码

    msvc{ QMAKE_CFLAGS += /utf-8 QMAKE_CXXFLAGS += /utf-8 }

  4. layedit 清空 编辑器

    使用layedit.setContent(index,"") 即可以清除 layui.use('layedit', function(){ var layedit = layui. ...

  5. Vue08 数据代理

    1 说明 所谓"数据代理",是指 通过一个对象代理对另一个对象的属性进行读或写操作. 2 简单示例 2.1 代码 let obj = {x:100}; let obj2 = {y: ...

  6. xml基本学习

    概念:可拓展标记语言.可拓展即标签都是自定义的.标记语言即由标签构成的语言. 功能:存储数据: 配置文件 在网络中传输 语法 基本语法: xml文件后缀名为.xml xml第一行必须定义为文档声明 x ...

  7. 学习Java Day16

    今天学习静态数据的使用

  8. 给力的Zstack云主机

    合肥光源储存环纵向震荡可视化展示初步结果 前两天做好上面的可视化展示后,想着顺道把那个时间的二维图分析结果给出来吧,就又把纵向震荡的每个束团的频谱和相位顺道可视化显示出来,给计算这些结果的云主机又加点 ...

  9. 跳板攻击之:Netsh端口代理转发

    跳板攻击之:Netsh端口代理转发 目录 跳板攻击之:Netsh端口代理转发 1 命令解析 2 代理转发内网22端口 3 代理转发外网4444端口 4 注意 1 命令解析 netsh interfac ...

  10. 07#Web 实战:仿 GitHub 个人主页项目拖拽排序

    实现效果图 GitHub 和 Gitee 个人主页中可以对自己的项目进行拖拽排序,于是我就想自己实现一个.本随笔只是记录一下大概的实现思路,如果感兴趣的小伙伴可以通过代码和本随笔的说明去理解实现过程. ...