贪吃蛇实验报告
更新时间:2023-09-13 03:13:01 阅读量: 综合文库 文档下载
《计算机程序设计》课程设计报告
课 题 名 称 贪吃蛇游戏 班 级 学 号 姓 名 指 导 教 师 设 计 时 间 至 设 计 地 点
常熟理工学院计算机科学与工程学院
常熟理工学院计算机科学与工程学院
目录
1 需求分析 ................................................................................... 1 2 系统分析和设计 ...................................................................... 1 2.1 数据结构的设计和选择的理由 ...................................... 1 2.2 系统模块划分和模块结构 .............................................. 2 2.3 流程图 .............................................................................. 2 2.4 数据类型、全局变量和函数说明 .................................. 3 3 程序测试和运行结果 .............................................................. 4 4 课程报告小结 .......................................................................... 5 4.1分数重叠显示 ................................................................... 5 4.2速度太快 ........................................................................... 5 4.3食物可能出现在蛇身上 ................................................... 5 附录A:程序源代码................................................................... 6
《C程序设计》课程设计
1 需求分析
【阐述课程设计应该完成的功能】
使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。
2 系统分析和设计
2.1 数据结构的设计和选择的理由
本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。
2.1.1 从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例: struct Point { int x, y; }
struct Point nodes[MAX_LENGTH]; //蛇身数组,MAX_LENGTH为最大蛇长
贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:
1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用 int direction;表示) 2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。
3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示)
根据上面的情况,我们可以设计蛇的数据结构如下: struct Snake {
struct Point nodes[MAX_LENGTH]; //蛇身数组,保存每节蛇身的坐标。MAX_LENGTH为最大蛇长
int length; //当前蛇长
int direction; //蛇头运动方向
int live; //蛇活的,还是已经死了? }
2.1.2 关于食物,有两个属性: 1. 坐标位置
2. 状态:存在,或被吃。 故我们用以下结构表示: struct Food {
struct Point position; //食物的位置 int exist; //存在?还是被吃? }
1
常熟理工学院计算机科学与工程学院
2.2 系统模块划分和模块结构
void main() { init(); /*初始化*/ l=1; while(l) /*循环游戏*/ { select(); /*游戏速度和结束的选择菜单*/ gamePlay(); /*游戏主程序*/ } close(); /*关闭游戏*/ }
2.3 流程图
《C程序设计》课程设计
2.4 数据类型、全局变量和函数说明
2.4.1数据类型
struct Point { /*一个存放点坐标的结构体*/ int x, y; /*被多个结构体调用的基本参数,所以统一用point结构体来表示*/ };
struct Snake { /*用来模拟蛇状态的结构体*/ struct Point nodes[MAX_LENGTH]; /*用来存放蛇每一节的位置*/ int length; /*蛇长*/ int direction; int live; } snake;
struct Food { struct Point position; int exist; } food;
2.4.2全局变量 Score left,top,right,bottom lastx,lasty keyCode
2.4.3函数说明 void init(void); void gamePlay(void); void close(void); void drawWall(void); void createFood(void); void drawFood(void); void drawSnake(void); void drawScore(void); int touchWall(void); int touchSelf(void); void gameOver(void); void moveSnake(void); int oppositeDirection(int keyCode); int foodEat(void); void expandSnake(void);
/*蛇移动的方向*/ /*蛇是否活着*/ /*比较形象的把蛇抽象为一个数据类型*/ /*用来模拟食物状态的结构体*/ /*食物的位置*/ /*食物是否存在*/ \\\\得分 \\\\游戏区域范围 \\\\用来保存最后一节蛇的位置 \\\\用来保存按下的键 \\\\初始化程序,给一些初始值赋值 \\\\游戏主循环 \\\\关闭游戏 \\\\画墙
\\\\创造一个食物 \\\\画出食物 \\\\画出蛇 \\\\画出分数
\\\\判断是否碰到墙 \\\\判断是否碰到自己 \\\\游戏结束 \\\\移动蛇
\\\\判断是否方向有误 \\\\判断是否吃到食物 \\\\把蛇增长一节 3
正在阅读:
贪吃蛇实验报告09-13
2019年工作总结(区委)02-26
中学2019年新年贺词02-23
防止电力生产事故的二十五项重点要求02-29
2019全国高考,导数部分汇编03-14
江苏省齿轮和变速行业企业名录2018版1234家 - 图文10-27
宽容心态生活小故事11-20
双目立体视觉技术简介03-10
初二数学上学期第二章实数试题06-11
- 小学生造句大全
- 增压泵投资项目可行性研究报告(模板)
- 高中语文人教版粤教版必修1-5全部文言文知识点归纳
- 两学一做专题民主生活会组织生活会批评与自我批评环节个人发言提
- 管理处环境保洁工作操作标准作业指导书
- 2012六一儿童节活动议程 - 图文
- 移树申请报告
- 《贵州省市政工程计价定额》2016定额说明及计算规则
- 计算机长期没有向WSUS报告状态
- 汉语拼音教学策略研究
- 发展西部领先的航空货运枢纽
- 司法所上半年工作总结4篇
- 如何提高银行服务水平
- 发电厂各级人员岗位职责
- 丰田汽车的外部环境分析
- 2017—2018年最新冀教版四年级数学下册《混合运算》教案精品优质
- 中建八局样板策划 - 图文
- 戚安邦《项目管理学》电子书
- 2015年高级项目经理笔记
- 弯桥的设计要点
- 贪吃
- 实验
- 报告
- 瘦人增肌健身计划攻略
- 三年级下册读写训练点
- 大学物理期中试卷(2012-11-19) 2 - 图文
- 成都理工大学2015年矿产勘查学期末考试试卷(两份)及复习资料
- 电机学(高起专)- 学习指南
- c#程序设计课程标准
- 英国学前教育的特点及启示
- 竞争法试题
- 华西口腔硕士博士考试修复试题总结(10年)
- 学会倒着想
- 影响顾客忠诚度因素浅析毕业论文
- 电子商务网站规划与设计模拟试题
- iMC工具命令使用指南
- 2011中南大学创新创业立项 - 图文
- 浅析计算机网络安全
- 七A-U8学案
- 冀教版五年级英语下册单元测试题及答案全套2
- 小班早期阅读教案《小熊的帽子》
- 行测答题技巧之言语理解:细节理解型题目精讲4
- 实验01基本电工仪表的使用及测量误差的计算