110
社区成员




课程:《Python程序设计》
班级: 2311
姓名: 陈震浩
学号:20231108
实验教师:王志强
实验日期:2023年5月28日
必修/选修: 公选课
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
本实验通过pygame实现了贪吃蛇游戏可多人PK版
最最开始,我们先引入有关的模块,初始化以及定义游戏界面大小和颜色
然后,让我们思考一个问题:如何在游戏界面中实现一条扭动的线条,它会在吃到目标的时候加长自身的长度。对于这个问题,我们可以把蛇看作一个列表,储存三个元素:蛇头,x方向长度和y方向长度。起始蛇头和食物目标一样大小,在吃到食物时添加蛇的长度,同时随机产生食物目标(注意添加效果为x方向和y方向长度之和)倘若没有撞墙,就改变x和y的改变值大小
定义一个循环体,用于键盘指示上下左右指挥蛇头移动,其中event为pygame库中的指令集,在这里我们使用它作为读取键入的工具
如果很不幸你触壁了,那么就进入选择界面,继续玩或者退出
至此,我们完成了贪吃蛇的基本框架,该部分完整代码如下
演示视频
然后,我们添加多人游戏的代码,思路上也很简单,就是多添加一组读取键入的指令集,以及由此需要进行的一系列改动
然后我们也对键盘输入做一些调整
进行修改后的完整代码如下
运行视频如下
贪吃蛇作为经典的游戏深得大众喜爱。但是真正轮到自己来编写这个简单而原始的游戏的时候也是遇到了不少的困难。我的基本想法是先搭建一个能跑的通的贪吃蛇框架,再添加亿些小细节,但是一开始不光框架都跑不通,小细节也没能达到理想的效果。在翻看资料,学习新知后编写代码的过程中,我也对于pygame模块有了更深的了解,学会了很多新的函数,也尝试着利用这些函数为自己的代码添加细节。总之这是一次非常有收获的编程实践。
(1)课程感悟与思考
犹记得上个学期末提前蹲在教学楼蹭网只为能抢上王老师的Python课,也因此失去了选择其他一些我喜欢的热门公选课的机会。但是经过这一个学期的学习,我可以宽慰自己说:血赚不亏。作为大一的小盆友,或许知识体系不够完善,或许对于编程的能力尚未功夫到家,一开始接触Python我只感到困难重重。面向对象三要素,序列与Socket,于我而言都是陌生的概念;而且它们都抽象而难懂。但好在王老师生动具象的讲解让我得以明白概念背后的丰富意涵以及代码实现。甚至在最后一节课,我们还了解了爬虫技术。这在我看来已经是“高级科技黑”了。学习内容高级,老师讲解深入浅出,浅显易懂,选修这门课难道还不幸运吗?同时,Python语言的学习也可以与必修课中的C语言学习相互补充,相互促进。总之,本学期的Python公选课我打满分。在本期课程结束之后我也将继续练习Python编程,提高自己的本领。
(2)意见与建议
如果一定要说有什么建议的话,希望在平时老师能给回答问题正确的同学加分,因为仅仅靠期末那一节课回答问题加分对于没有抢到机会的同学有点可惜。平时积极回答问题的同学有可能最后一节没有回答问题,这样分数就没有加上了。
- 学习通Python课程资料第13章《Pygame游戏编程》
- 零基础学python电子书318页至327页