20231108陈震浩《Python程序设计》实验四报告

2301_80466089 2024-05-29 22:46:26

20231108 2023-2024-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2311
姓名: 陈震浩
学号:20231108
实验教师:王志强
实验日期:2023年5月28日
必修/选修: 公选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
本实验通过pygame实现了贪吃蛇游戏可多人PK版

2. 实验过程及结果

最最开始,我们先引入有关的模块,初始化以及定义游戏界面大小和颜色
​​​​

img

然后,让我们思考一个问题:如何在游戏界面中实现一条扭动的线条,它会在吃到目标的时候加长自身的长度。对于这个问题,我们可以把蛇看作一个列表,储存三个元素:蛇头,x方向长度和y方向长度。起始蛇头和食物目标一样大小,在吃到食物时添加蛇的长度,同时随机产生食物目标(注意添加效果为x方向和y方向长度之和)倘若没有撞墙,就改变x和y的改变值大小

img

img

定义一个循环体,用于键盘指示上下左右指挥蛇头移动,其中event为pygame库中的指令集,在这里我们使用它作为读取键入的工具

img

如果很不幸你触壁了,那么就进入选择界面,继续玩或者退出

img

img

至此,我们完成了贪吃蛇的基本框架,该部分完整代码如下

img

演示视频

然后,我们添加多人游戏的代码,思路上也很简单,就是多添加一组读取键入的指令集,以及由此需要进行的一系列改动

img

然后我们也对键盘输入做一些调整

img

进行修改后的完整代码如下

img

运行视频如下

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

  • 问题1:引用pygame模块时发现不知道怎么下载
  • 问题1解决方案:通过查找资料发现在终端下载pip install pygame即可
  • 问题2:界面显示退出时显示的字不全
  • 问题2解决方案:通过调整显示字的起点位置将提示字样调到中间
  • 问题3:编写贪吃蛇程序时会出现已经碰壁但没有退出程序的情况
  • 问题3解决方案:最终调试发现碰壁退出程序块在循环体外面,经过调整后能够实现碰壁退出效果
  • 问题4:多人模式会出现闪退现象
  • 问题4解决方案:还是在判断碰墙的程序块里,由于序列没有设置长度上限,因而一开始系统就自动判定双方碰墙,游戏结束,自动退出,经过对出墙判定程序的修改最后成功实现了运行

4. 本次实验的感想与收获

        贪吃蛇作为经典的游戏深得大众喜爱。但是真正轮到自己来编写这个简单而原始的游戏的时候也是遇到了不少的困难。我的基本想法是先搭建一个能跑的通的贪吃蛇框架,再添加亿些小细节,但是一开始不光框架都跑不通,小细节也没能达到理想的效果。在翻看资料,学习新知后编写代码的过程中,我也对于pygame模块有了更深的了解,学会了很多新的函数,也尝试着利用这些函数为自己的代码添加细节。总之这是一次非常有收获的编程实践。

5. 课程总结

        (1)课程感悟与思考

        犹记得上个学期末提前蹲在教学楼蹭网只为能抢上王老师的Python课,也因此失去了选择其他一些我喜欢的热门公选课的机会。但是经过这一个学期的学习,我可以宽慰自己说:血赚不亏。作为大一的小盆友,或许知识体系不够完善,或许对于编程的能力尚未功夫到家,一开始接触Python我只感到困难重重。面向对象三要素,序列与Socket,于我而言都是陌生的概念;而且它们都抽象而难懂。但好在王老师生动具象的讲解让我得以明白概念背后的丰富意涵以及代码实现。甚至在最后一节课,我们还了解了爬虫技术。这在我看来已经是“高级科技黑”了。学习内容高级,老师讲解深入浅出,浅显易懂,选修这门课难道还不幸运吗?同时,Python语言的学习也可以与必修课中的C语言学习相互补充,相互促进。总之,本学期的Python公选课我打满分。在本期课程结束之后我也将继续练习Python编程,提高自己的本领。

        (2)意见与建议

        如果一定要说有什么建议的话,希望在平时老师能给回答问题正确的同学加分,因为仅仅靠期末那一节课回答问题加分对于没有抢到机会的同学有点可惜。平时积极回答问题的同学有可能最后一节没有回答问题,这样分数就没有加上了。

参考资料

-  学习通Python课程资料第13章《Pygame游戏编程》

-  零基础学python电子书318页至327页

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

110

社区成员

发帖
与我相关
我的任务
社区描述
人生苦短,我用Python!
python3.11 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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