黑马程序员技术交流社区
标题:
《迷宫》小游戏
[打印本页]
作者:
堕落天使
时间:
2015-9-12 22:58
标题:
《迷宫》小游戏
学习的第一个可以玩的小程序。虽然很简单,但是自己写了之后再运行的时候感觉还是不错的。
#include <stdio.h>
//把地图数组的行数和列数定义成宏。
#define COL 6
#define ROW 6
/**
* 打印地图
*
* @param map1 地图的数组
*/
void print_map(char map1[COL][ROW]){
for (int i =0; i<COL; i++) {
for (int j =0; j<ROW; j++) {
printf("%c",map1[i][j]);
}
printf("\n");
}
}
/**
* 判断小人是否移动
*
* @param map 地图数组
* @param old_x 小人原来位置的X轴
* @param old_y 小人原来位置的Y轴
* @param new_x 小人要走位置的X轴
* @param new_y 小人要走位置的Y轴
*/
void personMove(char map[COL][ROW],int old_x,int old_y,int new_x,int new_y){
char temp;
temp=map[old_x][old_y];
map[old_x][old_y]=map[new_x][new_y];
map[new_x][new_y]=temp;
}
int main(int argc, const char * argv[]) {
char map[COL][ROW]={
{'#','#','#','#','#','#'},
{'#','0','#',' ',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}};
char dir;
char ch;
print_map(map);
//x和y是小人位置的下标
int x,y;
x=y=1;
printf("请输入一个方向:w或W表示上,s或S表示下,a或A表示左,d或D表示右,q或Q代表退出!\n");
while (1) {
scanf("%c",&dir);
scanf("%c",&ch);
switch (dir) {
case 'w':
case 'W':
if (map[x-1][y]==' ') {
personMove(map, x, y, x-1, y);
print_map(map);
x--;
}
break;
case 's':
case 'S':
if (map[x+1][y]==' ') {
personMove(map, x, y, x+1, y);
print_map(map);
x++;
}
break;
case 'A':
case 'a':
if (map[x][y-1]==' ') {
personMove(map, x, y, x, y-1);
print_map(map);
y--;
}
break;
case 'd':
case 'D':
if (map[x][y+1]==' ') {
personMove(map, x, y, x, y+1);
print_map(map);
y++;
}
break;
case 'q':
case 'Q':
return 0;
default:
break;
}
if (y==5) {
printf("恭喜你,你出来了!\n");
return 0;
}
}
return 0;
}
复制代码
作者:
羊口羊口羊
时间:
2015-9-13 02:18
赞·······································
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2