首先在windows中把获取键盘按键值getch.h文件放入共享文件夹中,在虚拟机中移入到C标准库中
1、定义二维数组作为地图
char map[15][15] ={'#'、' '}
char map[15][15] = {{1,1,1,1,1,1,1,1,1}}
2、定义变量记录角色的位置
3、获取游戏开始时间 time(NULL)
4、进入死循环
a、清理屏幕,使用system函数 system("clear")
b、显示地图(遍历二维数组)
c、获取方向键并处理 getch
如果前方是路:
1、把新位置赋值2
2、把旧位置赋值0
3、更新角色的坐标
d、判断是否到达出口
如果是:
获取游戏结束时间,计算出总用时
结束程序
简单代码:
#include <stdio.h>
#include <getch.h>
#include <time.h>
#include <stdlib.h>
int main(int argc,const char* argv[])
{
//获取时间
int start=time(NULL);
//定义地图
char map[15][15]={
{'#','#','#','#','#','#','#','#','#','#'},
{'#',' ','#',' ',' ',' ','#',' ',' ',' '},
{'#',' ','#',' ','#',' ','#',' ','#','#'},
{'#','@','#',' ','#',' ','#',' ','#','#'},
{'#',' ','#',' ','#',' ','#',' ','#','#'},
{'#',' ','#',' ','#',' ','#',' ','#','#'},
{'#',' ','#',' ','#',' ','#',' ','#','#'},
{'#',' ','#',' ','#',' ','#',' ','#','#'},
{'#',' ',' ',' ','#',' ',' ',' ','#','#'},
{'#','#','#','#','#','#','#','#','#','#'}
};
//定义角色坐标
int x=3,y=1,new_x=3,new_y=1;
for(;;)
{
//清理屏幕
system("clear");
//打印地图
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
printf(" %c",map[i][j]);
}
printf("\n");
}
//获取方向键
switch(getch())
{
case 183:new_x-=1;break;
case 184:new_x+=1;break;
case 186:new_y-=1;break;
case 185:new_y+=1;break;
}
if(new_x==1&&new_y==10)
{
int end=time(NULL);
printf("游戏结束,一共用时%d秒\n",end-start);
return 0;
}
else if(map[new_x][new_y]==' ')
{
map[new_x][new_y]='@';
map[x][y]=' ';
x=new_x;
y=new_y;
}
else
{
new_x=x;
new_y=y;
}
}
return 0;
}