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页

...全文
304 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...
代码下载地址: https://pan.quark.cn/s/72bd50ecb2fb 《微信飞机大战素材详解》 微信飞机大战作为一款广受欢迎的休闲游戏,凭借其便捷的操作方式和紧张刺激的游戏过程,赢得了众多用户的青睐。本文将系统性地剖析这款游戏的关键素材,旨在帮助开发者全面掌握游戏的设计理念与实现方法。 我们聚焦于游戏的核心构成——"AirplaneResource"。此名称一般指向游戏资源库,其中收纳了游戏中所有的视觉素材、音频资料以及动画元素。在微信飞机大战的语境下,这些资源构成了游戏画面呈现、音效播放和动态效果的基础。 1. **图像素材**:游戏中的飞机造型、敌方单位、弹药以及爆炸效果等视觉元素,均以图像素材的形式进行展示。图像素材通常涵盖PNG或JPG格式的静态图片,也包括GIF或APNG格式的动态图片。开发者需要细致地设计并优化这些图像,确保在各种设备上都能实现流畅的渲染,同时维持视觉表现力。 2. **声音素材**:游戏的背景音乐、射击音效、爆炸声等音频片段,对于构建游戏氛围具有决定性作用。这些音频文件可能以MP3、WAV或OGG格式进行存储,开发者需要权衡音频的压缩程度与音质,以确保在不牺牲游戏体验的前提下,有效控制文件体积。 3. **动画序列**:飞机的飞行轨迹、攻击动作、爆炸过程等动态表现,通常借助序列帧动画技术实现。这些序列帧图片组合而成的动画,通过编程控制播放速率和顺序,为游戏增添生动的动态效果。 4. **物理接触判定**:游戏中飞机与弹药之间的接触判定,是通过算法完成的。开发者可能会采用基础的矩形接触判定或更精密的像素级接触判定,以保证游戏的公平性和挑战性。 5. **游戏规则**:微信飞机大战的得分机制、生命值系统、敌机生成逻辑等...

110

社区成员

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

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