//
// main.m
// 应用:迷宫游戏
//
// Created by lanou3g on 15/6/23.
// Copyright (c) 2015年 ZhangJia. All rights reserved.
//
#import <Foundation/Foundation.h>
#define COL 12
#define ROW 12
int main(int argc,constchar * argv[])
{
//*******定义迷宫地图******
//1.定义地图
char map[COL][ROW]={
'#','#','#','#','#','#','#','#','#','#','#','#',
'#','O','#',' ',' ',' ','#',' ',' ','#','#','#',
'#',' ','#',' ','#',' ',' ',' ','#','#',' ',' ',
'#',' ','#',' ','#',' ','#','#','#','#',' ','#',
'#',' ',' ',' ','#',' ',' ','#','#',' ',' ','#',
'#',' ','#','#','#',' ',' ',' ','#',' ','#','#',
'#',' ','#','#','#','#','#',' ','#',' ','#','#',
'#',' ','#',' ',' ',' ','#',' ','#',' ','#','#',
'#',' ','#',' ','#','#',' ',' ','#',' ','#','#',
'#',' ','#',' ','#','#',' ','#','#',' ','#','#',
'#',' ',' ',' ','#','#',' ',' ',' ',' ',' ','#',
'#','#','#','#','#','#','#','#','#','#','#','#',
};
//2.打印地图
for (int i =0; i <COL; i++) {
for (int j =0; j <ROW; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
//3.定义变量,用来存储用户输入控制 w-上 s-下 a-左 d-右,提示用户玩法
char derection ;
char ch;
printf("游戏开始!\n请按 w-上 s-下 a-左 d-右 其他任意键-退出游戏\n");
//*******判断小人是否能够移动******
//1.定义变量存储小人目前所在位置
int currentX =1;
int currentY =1;
//2.判断是否移动以及移动方向
while (1) {
scanf("%c",&derection);
scanf("%c",&ch); //用于吸收输入一个字符后的\n
switch (derection) {
case'W':
case'w':
//如果小人移动的下一个方向是路,则交换小人与路的位置
if (map[currentX-1][currentY] ==' ') {
int temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX-1][currentY];
map[currentX-1][currentY] = temp;
currentX --;
}
break;
case'S':
case's':
if (map[currentX+1][currentY] ==' ') {
int temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX+1][currentY];
map[currentX+1][currentY] = temp;
currentX ++;
}
break;
case'A':
case'a':
if (map[currentX][currentY-1] ==' ') {
int temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][currentY-1];
map[currentX][currentY-1] = temp;
currentY --;
}
break;
case'D':
case'd':
if (map[currentX][currentY+1] ==' ') {
int temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][currentY+1];
map[currentX][currentY+1] = temp;
currentY ++;
}
break;
default:
printf("您已主动退出游戏,谢谢!\n");
return0;
break;
}
//3.每次移动后打印一遍地图
for (int i =0; i <COL; i++) {
for (int j =0; j <ROW; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
printf("----------------------------------------------\n");
//3.*********判断小人是否走出迷宫**********
if (currentY ==ROW-1) {
printf("YOU WIN !!");
break;
}
}
return0;
}