课后作业2:个人项目(贪吃蛇游戏改进)
时间:2019-03-24
本文章向大家介绍课后作业2:个人项目(贪吃蛇游戏改进),主要包括课后作业2:个人项目(贪吃蛇游戏改进)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
贪吃蛇游戏改进
学号:2017xxxxx7242
姓名:闻绍天
我的码云贪吃蛇项目仓库:项目仓库
1 - 计划
PSP2.1 | 我的估计(min) | 实际情况(min) |
---|---|---|
计划 | 10 | 15 |
>>估计这个任务需要多少时间 | 10 | 15 |
开发 | 410 | 590 |
>>分析需求 | 10 | 10 |
>>生成设计文档 | 20 | 15 |
>>设计复审 | 10 | 5 |
>>代码规范 | 10 | 20 |
>>具体设计 | 60 | 120 |
>>具体编码 | 240 | 360 |
>>代码复审 | 30 | 30 |
>>测试 | 30 | 30 |
记录用时 | 10 | 10 |
测试报告 | 10 | 10 |
计算工作量 | 10 | 10 |
事后总结 | 30 | 20 |
提出流程改进计划 | 10 | 10 |
总用时 | 490 | 665 |
2 - 开发
分析需求
- 改进游戏的ui
- 在游戏上方添加控制栏
- 添加难度控制
- 添加配色控制
- 添加全屏选项
- 改进细节
- 游戏名字
- 得分变为中文
设计文档
添加顶部控制栏
- 学习PyCharm相关文档,制作顶部控制栏
- 添加需求分析的几个按钮
写游戏难度设置
- 查阅PyCharm相关文档,学习物体运动方面的api
难度设置为1-3难度1-没有障碍物,蛇移动速度慢难度2-有少量障碍物,蛇移动速度中难度3-有较多障碍物,蛇移动速度快
- 难度
- 随时间,难度加大
- 将控制栏按钮绑定难度
改进界面ui
- 改进游戏配色
- 不需要有边框
改进游戏细节
- 修改游戏的名字为贪吃蛇
- 修改Scale为中文分数
代码规范
Pycharm安装autopep8
pip install autopep8
使用方法:
控制台定位到当前程序文件夹
//file为所要规范代码的程序名
autopep8 --in-place --aggressive --aggressive file.py
pycharm配置autopep8,参考博客
3 - 具体设计
此次任务添加的代码有200行左右,总共提交,推送8次。
分别修改了如下地方
完成了UI改进任务,建立一个config配置文件,把颜色,文字等配置信息放到配置文件中,统一进行管理
在游戏结束的时候,添加了重新游戏,和退出游戏按钮选项,其中按钮,最重要的是通过判断鼠标是否在矩形内,并且是点击事件
# 判断鼠标是否在矩形内 def in_button(self): point_x, point_y = pygame.mouse.get_pos() if self.collidepoint(point_x, point_y): return True else: return False
添加了游戏的bgm和吃东西的音效
添加了,可以显示的游戏时间。并且设置了随游戏时间的进行,游戏难度会增大,蛇的移动速度会加快
制作了开始游戏的新界面,以及开始按钮
添加了切换主题按钮,并且修改了重新开始回到首页的问题
添加了游戏排行榜,以及游戏的使用说明
4 - 测试清单
添加的功能 | 预期结果 | 是否实现(√或×) |
---|---|---|
UI改进任务 | 修改配色,边框,标题等 | √ |
游戏开始,重新开始,和退出按钮 | 点击按钮实现相应的功能 | √ |
显示游戏的时间 | 游戏进行显示时间 | √ |
游戏音效 | 添加游戏bgm,和吃的音效 | √ |
主题 | 通过按钮,实现切换主题 | √ |
排行榜 | 在游戏结束时,显示排行榜 | √ |
游戏开始界面 | 创建游戏开始的第一个界面,不直接开始游戏 | √ |
游戏难度 | 随着游戏时间的进行,游戏难度增大 | √ |
5 - 视频
6 - 总结
这次的贪吃蛇游戏改进,我做了很长时间,从最初的需求分析,想如何改进游戏,如何能让游戏更有乐趣。到后来的编码设计,也有很多的灵感迸发出来。通过在网上的学习,查找,大部分想要实现的功能都实现了出来。也有一些功能因为时间的关系,没有能够做出来。不过这次通过PSP计划,使得工作很有规律,不再是很混乱,但在时间的规划上,还要进一步地加强,确定什么时间做什么事。还需要很多努力。
下面是总结的具体信息:
好处:
- 通过这次的练习,熟悉了python,锻炼了短时间内学习能力
- 懂得了,如何使用PSP指定计划
同时也有很多地方需要改进
- 计划的执行力,需要改进,可能一段时间内并不全做这件事,导致时间计算有误
- 学习时,规划时,应以简单的方向入手,以较难的方向入手,很容易没有信心
- 应在分析需求阶段,多花时间,多想多思考,另外在编码时,有灵感应及时添加到分析中
- android多屏幕分辨率适配
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)
- 怎么解决web service circular reference 问题
- android使用LruCache对listview加载图片时候优化处理
- 如何创建一个兼容「微信小程序」的Web框架:WIN
- RePractise前端篇: 前端演进史
- Git远程库版本回滚
- android 之ndk开发
- 【持续集成】使用 Jenkinsfile 设计直观的 Pipeline
- 将OpenOffice.org变成一个文档格式转换工具
- 客户端的web技术
- unwx:一个解压微信小程序的命令 、微信小程序是如何压缩的
- 我的第四款编辑器:微信公众号上使用 Markdown 来显示代码
- 将Quartz.NET集成到 Castle中
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 服务发现与消费--Eureka与Ribbon的联手出击
- 自我加戏,在自闭的边缘尝试高可用的Eureka
- 视频直播系统源码,图片叠加
- SpringCloud初体验--Hello Eureka
- Android自定义View实现水平带数字百分比进度条
- AndResGuard编译速度优化
- Android自定义带拼音音调Textview
- Android仿音乐播放器带进度的播放暂停按钮
- 一个比较自闭的SpringIOC问题
- 我在大厂写React,学到了什么?
- leetcode(4)寻找正序数组中位数
- jvm源码解析(二)HashMap
- 硬件笔记(23)---- PCB的保护走线
- TabLayout+ViewPager实现切页的示例代码
- jvm源码分析(四)ThreadPoolExecutor