目录
1.前 言……………………………………………………………………………2
2.概要设计……………………………………………………………………………2
3.软件测试……………………………………………………………………………5
4.设计体会……………………………………………………………………………7
致谢 …………………………………………………………………………………7
参考文献 ……………………………………………………………………………8
附录 …………………………………………………………………………………8
1.前 言
本程序由个人参考其他程序代码所写,主要是针对单链表的建立以及赋予相关功能,实现信息的
增删改查等,表是数据结构中非常重要的研究对象,也是数据结构的主要内容,要学好数据结构,表
是必须掌握的知识点,也是难点。本程序由于个人水平有限,错误或不足在所难免,希望读者对程序
中的不足之处加以批评指出。
2.概要设计
功能模块分析
除了代码的注释外还有一些小问题是我一时间没能弄明白的
#include<stdio.h> ?
#include<conio.h>
#include<bios.h>
#define LEFT 0x4b00 /*光标左键值*/
#define RIGHT 0x4d00/*光标右键值*/
#define DOWN 0x5000/*光标下键值*/
#define UP 0x4800/*光标上键值*/
#define ESC 0x011b/*退出键值*/
typedef struct /*定义一个自定义结构类型*/
{
int x;
int y;
}point; /*定义屏幕中点的结构类型*/
char map[25][50]= /*用二维数组定义一个地图,由于论坛系统缘故,
图形有些乱码,可查看附件;地图可以自己画*/
{
"###################################### #",
"# # ## # # # # # ### ########",
"# # ## # # #### # # # ##",
"# # # ## ## # # ## # # ### #### ###",
"# # #### # # # ## #### ",
"# # # # ## ## ## # # # # # # ##",
"# ## ## # # # # # # # # # ## ",
"# # ## ## # # # ### ## ### ####",
"# # # ## ## # # # # ### ## ###",
"# # # # # # # ## # # ## # # ####",
"# # # # ## # ## # # # ## ##",
"# ## # ## # ### # ##### ## ###",
"# # ##### # ## # # ## # ## ## # # ##",
1
"# ### ### # # # ## ## ## ##",
"## # # # # ## ### ## # ## ## ### ##",
"## # # ## ## ### # # ## # # ####",
"# # # # # ## ## ## # # #",
"###################################### #",
};
void Drawman(int x,int y)
{
gotoxy(x+5,y+5);
printf("%c\b",2); /*指定位置输出一个小人*/
}
void DrawSpace(int x,int y)
{
gotoxy(x+5,y+5);
printf(" ");
}
void Drawmap()
{
int x=0,y=0;
for(;y<18;y++)
{
for(x=0;x<40;x++)
{
if(map[y][x]=='#')
{
gotoxy(x+5,y+5);
textcolor(BLUE);
putch(219);
}
}
}
gotoxy(30,2);
printf("You must to play the game,please take this step:");
gotoxy(48,8);
printf("1:Press UP,DOWN,LEFT,");
gotoxy(48,9);
printf(" RIGHT to move the man!");
gotoxy(48,11);
printf("2:Press ESC to quit!");
gotoxy(50,22);
printf("by--jiezikonglin");
}
int main()
2
{
char y_or_n;
char name[10];
int i;
point man={1,1},des={43,5}; /*初始和目的位置,有地图决定*/
int key=0;
textbackground(GREEN);
textcolor(RED);
printf("Your name:");
scanf("%s",&name);
clrscr();
printf("Hello!");
printf("%s",name);
Drawmap();
textcolor(YELLOW);
gotoxy(des.x,des.y);
putch('*');
Drawman(man.x,man.y);
for(;;)
{
while(bioskey(1)==0);
key=bioskey(0);
switch(key)
{
case LEFT:
if(map[man.y][man.x-1]=='#')break;
DrawSpace(man.x,man.y); /*输出一个空格*/
--man.x;
Drawman(man.x,man.y);
break;
case RIGHT:
if(map[man.y][man.x+1]=='#')break;
DrawSpace(man.x,man.y);
++man.x;
Drawman(man.x,man.y);
break;
case DOWN:
if(map[man.y+1][man.x]=='#')break;
DrawSpace(man.x,man.y);
++man.y;
Drawman(man.x,man.y);
break;
case UP:
if(map[man.y-1][man.x]=='#')break;
DrawSpace(man.x,man.y);
3
--man.y;
Drawman(man.x,man.y);
break;
default: ;
}
if(man.x+5==des.x&&man.y+5==des.y)
{
gotoxy(35,3);
textcolor(YELLOW);
printf("HaHa!You win the game!");
getch();
key=ESC;
}
if(key==ESC)
{
textbackground(0);
textcolor(RED);
clrscr();
printf("Quit the game\n(Y or N)");
scanf("%c",&y_or_n);
if(y_or_n=='Y') return 0;
{printf("press Esc to exit!"); }
if(y_or_n=='N') {scanf("%c",&y_or_n);main();}/*怎样回到之前界面呢????*/
} /* 这样能编译成功,莫非 main 函数*/
} /* 嵌套调用,哈哈,这样就解决了*/
getch(); /* 但是字变成了红色的了 */
/* 还有问题按下 Y or N 怎么没用 */ /*去掉 else 之后要按两下 ESC 才退出*/
}
3.软件测试
运行的界面 1
4