程序设计和编写系统程序文档格式.docx
- 文档编号:18454345
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:29
- 大小:408.75KB
程序设计和编写系统程序文档格式.docx
《程序设计和编写系统程序文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计和编写系统程序文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
14.从键盘获取方向模块
15.记录方向模块
16.隐藏光标模块
17.结束游戏模块
2.1功能分析说明图
2.2各项功能说明
要求对分别上面的每个功能模块进行详细的文字说明
1.欢迎界面及游戏说明voidgraph_welcome(void):
使用引用库函数ConsoleOut.h画出一个矩形框确定框的位置并设定背景色跟框的标题。
写上欢迎语,游戏操作说明,及编写人员。
2.初始化游戏界面voidgraph_game(void):
使用引用库函数ConsoleOut.h画出两个矩形框分别作为游戏栏与计分栏,引用模块3、4、5、6、7。
3.初始化蛇voidinitial(void):
使用链表结构初始化一条两个单位的小蛇。
4.显示蛇模块voidshow_snake(void):
在图上显示目前蛇的状态。
5.显示食物模块voidshow_food(void):
在图上显示出当前食物。
6.显示等级模块voidshow_level(void):
在图上显示出当前等级。
7.显示分数模块voidshow_grade(void):
在图上显示出当前分数。
8.改变等级模块voidchange_level(void):
根据分数的情况改变游戏的等级。
9.启动游戏模块voidbegin_game(void):
使用多组模块按游戏的逻辑关系组建游戏。
10.判断游戏结束模块intif_die(void):
对下一个将要创建的蛇头的(x,y)坐标与边界坐标还有蛇身坐标进行比较,若重合即返回1,否则返回0;
11.创造食物模块voidcreat_food(void):
用随机函数创造一个新的食物,并判断事物是否与蛇身重合(不包括蛇尾),若重合则重新创造一个食物,直到不重合。
12.增加蛇长度模块voidadd_snake(void):
在蛇头前方按照前进的方向增加一个新的蛇头(链表结构),蛇尾不去掉。
13.移动模块voidmove(void):
在蛇头前方按照前进的方向增加一个新的蛇头(链表结构),删去蛇尾的节点。
14.从键盘获取方向模块intget_direction(void):
用switch函数与getch()函数从键盘获取字母“w”“a”“s”“d”,并分别返回“1”“2”“3”“4”。
15.记录方向模块intacquiesce(void):
用于存储上一次的方向。
16.隐藏光标模块voidHideCursor(void):
使用库函数<
window.h>
内的调用函数隐藏光标。
17.结束游戏模块voidend_game(void):
游戏结束时的界面。
3.软件设计详细内容
3.1采用的主要数据结构类型
#include<
stdio.h>
//标准输入、输出头文件
string.h>
//包含字符串函数处理头文件
stdlib.h>
//包含动态存储与释放函数头文件
//为了使用sleep()造成暂停效果
conio.h>
//调用DOS控制台I/O子程序的各个函数。
#include"
ConsoleOut.h"
#pragmacomment(lib,"
ConsoleOut.lib"
)//引用了一个又他人编写的一个可以控制光标坐标,和绘制矩形框的一个库函数。
结构体:
structlocation
{
intx;
inty;
};
typedefstructlocationPoint;
//定义坐标
structsnake
Pointvalue;
structsnake*next;
typedefstructsnakenode;
//定义蛇的节点
(typedef用于简化较为复杂的类型申明)
3.2主要函数流程图
1.voidbegin_game(void):
2.voidcreat_food(void)
3.intget_direction(void):
4.intif_die(void):
4.软件测试
4.1软件测试用例
1.游戏欢迎界面:
(deathyork系偶的英文名)
2.游戏开始界面:
3.吃食物分数改变:
4.在每百分时游戏等级提高一级
5.游戏在10级后级数不再变化
-_-|||此处无截图……(==有本事你打到10级去~~)
6.游戏结束界面:
4.2软件测试报告
将4.1测试过程中能完成的功能和不能完成的功能以及不能完全完成的功能进行列表分析,指出测试结果和出错原因,例如:
标号
模块
预期效果
实际结果
出错原因
出错次数
1
欢迎界面及游戏说明
显示
完成
无
2
初始化游戏界面
3
初始化蛇
正常运行
4
显示蛇模块
5
显示食物模块
6
显示等级模块
7
显示分数模块
8
改变等级模块
9
启动游戏模块
10
判断游戏结束模块
11
创造食物模块
12
增加蛇长度模块
13
移动模块
14
从键盘获取方向模块
可以获取
15
记录方向模块
16
隐藏光标模块
隐藏
17
结束游戏模块
显示得分
5.总结和致谢
在设计这个程序时,我们开始从老师提供的资料资料出发,把整个程序的基本框架设计出来,接下去便查了相应的资料,把程序的主要模块分离出来编写,花了我一周的时间,终于把所有模块都编译出来,但是当我把所有模块整合在一起后运行程序,程序没有运行成功,而且问题还不少,错误比比皆是,只得一个一个问题的改,在请教同学和自己的努力下,程序是运行了,但是存在一些bug不能解决,后来在老师的帮忙才解决了所有问题。
在老师的帮助过程中,她不仅帮助我解决了程序问题,还在修改程序过程中教会了我怎样调试程序,这是我以前根本就不会的,
通过这次课程设计,我发现我在平时学的太少了,很多基本知识都不懂,我明白了在今后我首先要把老师在课堂讲的弄懂,弄透,在此基础上利用课余时间多看课外书籍,拓宽知识面。
我也觉得和同学老师交流是非常的必要,一个人学的太有限,每个人掌握的不同,我们可以通过交流来解决我们不懂的问题。
很庆幸有这两周的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;
还有做任何事都要有耐心,不要一遇到一些小小困难、麻烦就退缩。
我相信:
有志者事竟成。
最后非常感谢老师我细心的给我排除一些程序设计上的缺陷,感谢同学的鼓励或帮助。
6.附录
6.1游戏使用说明
运行环境是:
visualC++
╮(╯▽╰)╭只是个贪吃蛇而已……不会玩的自己琢磨去……
6.2源码
Main函数:
#include"
snake.cpp"
voidmain()
graph_welcome();
Sleep(500);
Sleep(1000);
graph_game();
initial();
begin_game();
}
Snake函数:
time.h>
windows.h>
)
#defineNULL0
//定义蛇节点
node*head=(node*)malloc(sizeof(node));
node*end=(node*)malloc(sizeof(node));
Pointfood;
staticunsignedintfood_num;
staticunsignedintlvl=1;
//初始界面
voidgraph_welcome(void);
//游戏界面
voidgraph_game(void);
//初始化蛇,食物
voidinitial(void);
//显蛇
voidshow_snake(void);
//显食物
voidshow_food(void);
//显分数
voidshow_grade(void);
//开始游戏
voidbegin_game(void);
//判断死否
intif_die(void);
//创造食物
voidcreat_food(void);
//加蛇长
voidadd_snake(void);
//移动
voidmove(void);
//从键盘输入方向
intget_direction(void);
//存储上一次方向
intacquiesce(void);
//结束游戏
voidend_game(void);
//隐藏光标
voidHideCursor(void);
//改变等级
voidchange_level(void);
//显示等级
voidshow_level(void);
/*.......................................thefunction............................................*/
voidHideCursor(void)
CONSOLE_CURSOR_INFOcursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&
cursor_info);
voidgraph_welcome(void)
CreateSmWindow(4,1,70,20,2,7,3,5,"
SnakeGame"
false);
MoveCursorTo(4,5);
SetTextColor(12,5);
MoveCursorTo(22,5);
printf("
欢迎使用贪吃蛇游戏~~"
);
MoveCursorTo(17,10);
游戏规则:
\t向左:
a\t向右:
d"
MoveCursorTo(17,11);
\t\t向上:
w\t向下:
s"
MoveCursorTo(30,15);
madebydeathyork"
HideCursor();
voidgraph_game(void)
system("
CLS"
CreateSmWindow(64,1,10,20,2,7,2,1,"
"
CreateSmWindow(4,1,60,20,2,7,2,1,"
MoveCursorTo(66,1);
┬"
MoveCursorTo(66,22);
┴"
voidinitial(void)
//初始化蛇头位置
head->
value.x=22;
value.y=10;
next=end;
//初始化蛇尾位置
end->
value.x=21;
next=NULL;
//初始化食物
creat_food();
voidbegin_game(void)
while
(1)
{
show_snake();
show_food();
show_grade();
show_level();
move();
if(head->
value.x==food.x&
&
value.y==food.y)
{
add_snake();
creat_food();
change_level();
}
if(if_die())
end_game();
}
voidcreat_food(void)
node*pt;
pt=head;
do
srand(food_num+1);
food.x=rand()%29+3;
food_num++;
food.y=rand()%19+2;
while(pt->
next!
=NULL)
if(pt->
value.x==food.x&
pt->
value.y==food.y)break;
elsept=pt->
next;
}while(pt->
=NULL);
voidchange_level(void)
if(lvl<
=9)
lvl=(food_num-1)/10+1;
voidadd_snake(void)
node*new_head=(node*)malloc(sizeof(node));
node*temp=(node*)malloc(sizeof(node));
intdirect=acquiesce();
new_head->
next=head;
value=head->
value;
switch(direct)
case1:
new_head->
value.y--;
}break;
case2:
value.y++;
case3:
value.x--;
case4:
value.x++;
temp=head;
head=new_head;
new_head=temp;
intget_direction(void)
intdirection=0;
intcalculagraph=0;
if(kbhit())
switch(getch())
{
case'
w'
:
{
direction=1;
}break;
s'
direction=2;
a'
direction=3;
d'
direction=4;
}
if(direction!
=0)
break;
else
Sleep(105-10*lvl);
calculagraph++;
if(calculagraph==4)
direction=acquiesce();
break;
};
returndirection;
intacquiesce(void)
if(head->
value.y<
next->
value.y)
return1;
elseif(head->
value.y>
return2;
value.x<
value.x)
return3;
else
return4;
voidmove(void)
intlocat_x[100]={0};
intlocat_y[100]={0};
inti;
for(i=0;
temp->
next!
=NULL;
temp=temp->
next)
locat_x[i]=temp->
value.x;
locat_y[i]=temp->
value.y;
i++;
switch(get_direction())
head->
value.y--;
value.y++;
value.x--;
value.x++;
//清理跑道
MoveCursorTo(end->
value.x*2,end->
value.y);
SetTextColor(12,1);
"
i=0;
for(;
temp->
value.x=locat_x[i];
value.y=locat_y[i];
voidshow_snake(void)
MoveCursorTo(temp->
value.x*2,temp->
◆"
temp=temp->
MoveCursorTo(temp->
printf("
●"
voidshow_food(void)
MoveCursorTo(food.x*2,food.y);
¥"
voidshow_grade(void)
MoveCursorTo(69,5);
GRADE"
MoveCursorTo(69,7);
%d"
10*(food_num-1));
voidshow_level(void)
MoveCursorTo(69,10);
LEVEL"
MoveCursorTo(69,12);
lvl);
intif_die(void)
intdie=0;
if((temp->
value.x==2)||(temp->
value.x==33)||
(temp->
value.y==1)||(temp->
value.y==22))
die=1;
elseif
(1)
for(;
temp->
if(head->
value.x==temp->
value.x&
value.y==temp->
die=1;
die=0;
returndie;
voidend_game(void)
CreateSmWindow(4,1,60,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 编写 系统 程序