目录。1 设计任务书 1
1.1题目与要求 1
1.1.1题目介绍 1
1.1.2设计要求 1
1.2.本程序涉及的知识点 1
2 功能设计 1
2.1算法设计 1
2.2子模块功能说明 2
3程序设计 3
4功能设计 8
5致谢 8参考文献 8
1、 设计任务书。
1.1、 题目与要求。
1.1.1 题目介绍。
我们计划设计一款简单又有娱乐性的小游戏--贪吃蛇。通过一学期对c语言的学习,我们对这门课程有了基本的认识,由此我们想通过编写小游戏来实战检验一下我们的学习成果。
c语言程序设计即在于掌握运用c语言独立地编写、调试应用程序和进行其它相关设计的技能,我们这次实训即在于:
巩固和加深对c语言课程的基本知识的理解和掌握
掌握c语言编程和程序调试的基本技能
掌握书写程序设计说明文档的能力
提高运用c语言解决实际问题的能力。
进一步掌握和利用c语言进行程设计的能力
进一步理解和运用结构化程设计的思想和方法
初步掌握开发一个小型实用系统的基本方法
学会调试一个较长程序的基本方法
学会利用流程图或n-s图表示算法;
1.1.2 设计要求。
先在程序中设计好数组元素与蛇,食物的对应关系;
产生一个固定大小有边界的游戏区域,蛇从区域中随机一点出发,运动限制在游戏区域内;
蛇的运动方向为直线运动,只走横和竖的方向,不走斜线;
食物出现按随机分布原则,蛇吃掉一份后随即在游戏区域内出现一份新的食物;
蛇的运动速度由得分来控制,得分越高,速度越快;
得分按蛇每吃掉一个食物得10分来计算;
蛇的身体长度从3开始,每吃掉一个食物增加一个长度;
游戏结束条件为:在控制过程中蛇头撞到墙壁或者与蛇身相撞。
1.2、 本程序涉及的知识点。
数组的应用,全局变量的使用,按键处理,结构体的应用,结构化,模块化的设计等等。
2、 功能设计。
2.1、算法设计。
1、本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解,首先画出顶层模块,即主控模块,然后完成对下层模块的调用功能,即调用其他的功能模块;接着,按模块划分的功能设计第一层模块,有图形驱动,画主界面,游戏过程,结束处理,退出等六个主要功能;接着,画出第二层模块。总体模块结构如图:
2.2、子模块功能说明
进入第一步:进入游戏。
进入第二步:游戏界面。
进入第三步:游戏操作。
进入第四步:游戏结束并输出成绩。
该系统主要分以下模块:
a.对主函数进行描述。
b.图形驱动与界面。
c.具体过程。
d.显现食物并使蛇移动。
e.判断蛇是否死亡。
f.若吃掉食物则画出新蛇。
j.蛇死后跳出循环并判断移动方向。
h.游戏结束输出得分与成绩。
(1)主函数main()
主函数式程序的主控模块,是定义使用的函数,全局变量及函数原型说明,并调用init()函数初始化图形系统;然后调用drawk()函数画界面,调用gameplay()函数实现游戏的具体过程,游戏结束后调用close()函数关闭图形系统,结束程序。 主控模块的流程图如下:
ianxian
(2)画界面函数drawk()
主界面是一个密封的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度,均为十个单位的矩形小方块。
3)游戏具体过程函数gameplay()
a.设置初始值。为防止食物出现在一个位置上,要设置随机发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始方向;
b.循环执行,直到按esc键退出;
c.没有按键的情况下,循环执行。
如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或者吃到了自己,如果出现这两种情况之一,则蛇死。
4)游戏结束函数gameover()
游戏结束,清除屏幕;调用输出分数函数,并显示游戏结束。
5)输出分数函数prscore()指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,bar()函数的应用是为了覆盖原来的值。
6)图形结束函数close()
在显示游戏结束信息画面时,按任意键关闭图形系统,程序结束。
2.2、流程图 ny
ny3、 程序**设计。
源程序。#include<>
#include<>
#include<>
#include<>
#include<>
#include<>
#defineleft0x4b00
#defineright0x4d00
#definedown0x5000
#defineup0x4800
#defineesc0x011b
#definen200/*定义全局变量*/
inti,key;
intscore=0;/*得分*/
intgamespeed=50000;/*游戏速度可以自己调整*/
structfood
intx;/*定义食物的横坐标*/
inty;/*定义食物的纵坐标*/
intyes;/*判断是否要出现食物的变量*/
food;/*食物的结构体*/
structsnake
intx[n];
inty[n];
intnode;/*蛇的节数*/
intdirection;/*蛇的移动方向*/
intlife;/*蛇的生命,0活着,1死亡*/
snake;
voidinit(void);/图形驱动*/
voidclose(void);/图形结束*/
voiddrawk(void);/开始画面*/
voidgameover(void);/结束游戏*/
voidgameplay(void);/玩游戏的具体过程*/
voidprscore(void);/输出成绩*/
voidinit(void)
intgdriver=detect,gmode;
initgraph(&gdriver,&gmode,"d:\tc30\lib");
*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
voiddrawk(void)
setbkcolor(lightgreen);
setcolor(11);
setlinestyle(solid_line,0,thick_width);/设置线型*/
for(i=50;i<=600;i+=10)/*画围墙*/
rectangle(i,40,i+10,49);/上边*/
rectangle(i,451,i+10,460);/下边*/
for(i=40;i<=450;i+=10)
rectangle(50,i,59,i+10);/左边*/
rectangle(601,i,610,i+10);/右边*/
*玩游戏的具体过程*/
voidgameplay(void)
randomize();随机数发生器*/
表示需要出现新食物,0表示已经存在食物*/
蛇还活着^^*
方向向右*/
蛇头*/蛇的节数为2*/
prscore();输出得分*/
while(1)/*可以重复玩游戏,按esc键结束*/
while(!kbhit())在没有按键的情况下,蛇自己移动身体*/
if(需要出现新食物*/
while(食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
while(
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...