20192113 2020-2021-2 《Python程序设计》实验四报告

20192113 2020-2021-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 1921
姓名: 衣丽莎
学号:20192113
实验教师:王志强
实验日期:2021年6月25日
必修/选修: 公选课

1.实验内容

  • Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
  • 制作一个简易打砖块小游戏

2. 实验过程及结果

首先通过百度搜索查找资料了解利用python制作游戏所需要的步骤,在pycharm中导入pygame等相关的库。
其次,了解打砖块游戏的运作原理以及或包含的功能部分,通过python设计不同模块来实现各部分功能。
根据游戏所包含的不同元素,程序共包含游戏窗口类、球类、球拍类、砖块类、分数类、碰撞检测类、游戏结束以及游戏胜利类。

1.创建游戏窗口类

定义了游戏窗口的大小、标题以及背景颜色
image

2.创建球类

包含设置球的半径大小移动速度、初始位置、反弹触发条件,以及当碰撞达到一定次数时速度增加等方法,同时根据小球y坐标的位置设置游戏失败的条件。
主要结构如下:
image

3.创建球拍类

包含设置球拍颜色以及通过鼠标位置控制球拍的方法
image

4.创建砖块类

包含绘制砖块并通过碰撞检测函数消除砖块的方法。
同时,游戏胜利的条件为所有砖块均消除,即brick_list中的元素全为0.
image

5.创建分数类

初始化分数信息,并根据游戏进程绘制玩家的分数信息
image

6.创建游戏结束类

创建游戏失败以及胜利类,分别绘制两种情况下显示的文字以及字体。
image

7.创建碰撞检测类

碰撞检测为小球运行轨迹的主要设置方法,其中定义了球与窗口边框的碰撞检测、球与球拍的碰撞检测、球与砖块的碰撞检测三种方法,通过定义碰撞标识来判断是否发生碰撞,并通过改变小球在水平、垂直方向上的运动来改变小球运动轨迹。
主要结构如下:
image

8.主程序类

最终在主程序中定义游戏开始的标识并依次调用子类来实现游戏的运行。

9.运行结果

游戏界面截图,初始分数显示在右上角。
image
移动鼠标控制球拍位置,单机鼠标释放小球,小球通过碰撞改变轨迹,碰撞砖块则砖块消失,5次碰撞后小球速度加倍。
image
当所有砖块都消失时游戏胜利,球拍未接住小球则游戏结束。
image

10.实验代码上传

将实验代码push到码云中:https://gitee.com/besti2021python/yilisha20192113/blob/master/pygame.py
实验视频发布在b站中:https://www.bilibili.com/video/BV1Qb4y1C7Xw

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

  • 问题1:pycharm库无法导入
    image
  • 问题1解决方案:网上百度查询了很多资料,试过了很多种方法,从pycharm自带的库中settings添加也不可以,下载同一版本的pygame从cmd中安装也不可以,最后忍无可忍换了台电脑。
  • 问题2:由于第一次接触游戏设计对于pygame库中的很多语句都不是十分能够理解,整体运用理解还是有一定的困难的。
  • 问题2解决方案:网上查阅pygame等库的用法,并了解打砖块小游戏的python程序设计。

其他(感悟、思考等)

-1.课程总结及感想
python课还是很有意思的,内容由浅入深,十分的丰富。由于有一点点其它语言的基础对于python最初的运用来时比较顺手的,又掌握了一门语言的基础中的基础的运用,开心。早就听说python语言简介明了不需要繁杂的定义也没有那么多的格式要求(除了缩进),在课程的不断学习中也是逐渐体会到了,也希望在日后的生活中能够让python语言在我这里成为和c语言同样经常用来解决各种问题的语言(而不是一言不合codeblocks)。
总的来说,在本次课程的学习包含最初的基本语句(字符串、循环结构等)的使用,序列、字典等的运用、以及文件操作、正则表达式、网络编程及爬虫等内容。每节课跟着老师的步调一同敲代码,编学边实践的学习方法真的高效很多,避免了那些课上讲完记不住跟不上,课下一看啥也不记得的情况。对我来说本学期比较困难的内容就是正则表达式的使用以及最后爬虫的有关应用。有的时候不能理解其中的原理对于知识的理解还是有很大的困难的,知道了某一个语句可以实现一个功能,但是语句自身比较长十分复杂也不容易其自身的逻辑,就很难记忆,时间久了如果没有比较系统的知识整理就可能不记得。就比如每一次通过cmd进行安装的时候都是现用现找永远不知道应该用哪条指令。
再者,pycharm拥有强大的库源,但是可能是我安装的pycharm配置有点儿问题(爬虫课上发现的),导致库添加不成功,每一次需要在我的pycharm里安装一些东西的时候整个人都十分绝望。如此多种的库使得pycharm能够简单的实现不同的功能,比如这次实验用到的游戏开发库成功的解决了我对于程序语句运行最后怎么会形成一个游戏窗口的困惑。以后就可以自己用python制作小游戏了,还是十分快乐的。
毕竟百度在手天下我有,学习了计算机之后最大的感慨大概就是查阅网络资料真的是问题解决的最佳途径,通过不断的查阅资料解决问题,我也掌握了更多的知识。
最后,我爱python,python爱我。
-2.意见和建议
python的课堂很有趣(尤其是第一节课兴趣度拉满),尤其是简单通俗的实例应用真的很方便我们学习。不过希望课堂上讲的代码例子可以提前发出来供学习理解,课上敲代码报错没跟上(然后就只能无法运行地走下一步)可实在是太令人难过了。

参考资料

posted @ 2021-06-30 21:14  20192113衣丽莎  阅读(171)  评论(0编辑  收藏  举报