本帖最后由 huanglinwang 于 2016-5-26 20:45 编辑
// main.c
// 迷宫游戏
#include <stdio.h>
#define HANG 8
#define LIE 7
/**
* 将小人的位置进行交换
*
* @param oldPersonX 交换之前行的值
* @param oldPersonY 交换之前列的值
* @param newPersonX 交换后行的值
* @param newPersonY 交换后列的值
* @param map 无返回
*/
int personMove(int oldPersonX ,int oldPersonY,int newPersonX,int newPersonY,char map[HANG][LIE]);
/**
* 打印地图
*/
void putMap(char map[HANG][LIE]);
int main(int argc, const char * argv[]) {
char map[HANG][LIE] = {
{'*','*','*','*','*','*','*'},
{'*','0','*',' ',' ',' ','*'},
{'*',' ','*',' ','*',' ','*'},
{'*',' ','*',' ','*',' ','*'},
{'*',' ','*',' ','*',' ','*'},
{'*',' ','*',' ','*',' ','*'},
{'*',' ',' ',' ','*',' ',' '},
{'*','*','*','*','*','*','*'}
};
//定义小人的位置
int personX = 1 ,personY = 1 ;
//告诉规则
printf("请输入: w代表上 s.代表下 d.代表右 a.代表左 q.代表退出\n");
char ch = ' ';
while (1) {
//定义地图-打印地图
putMap(map);
//接收数据
rewind(stdin);
scanf("%c",&ch);
//判断
// w ---就让personX-1 personY
// s ---就让personX+1 personY
// a ---就让personX personY-1
// d ---就让personX personY+1
// q ---就return ;
switch (ch) {
case 'w' :
{
int a =personMove(personX, personY, personX-1, personY, map);
if (a) {
personX--;
}
}
break;
case 's' :
{
int a =personMove(personX, personY, personX+1, personY, map);
if (a) {
personX++;
}
}
break;
case 'a' :
{
int a =personMove(personX, personY, personX, personY-1, map);
if (a) {
personY--;
}
}
break;
case 'd' :
{
int a =personMove(personX, personY, personX, personY+1, map);
if (a) {
personY++;
}
}
break;
case 'q' :
{
printf("退出游戏……");
return 0;
}
}
if (personY == LIE-1) {
printf("GOOD GAME!!\n");
break;
}
}
//打印地图
putMap(map);
return 0;
}
/**
* 将小人的位置进行交换
*
* @param oldPersonX 交换之前行的值
* @param oldPersonY 交换之前列的值
* @param newPersonX 交换后行的值
* @param newPersonY 交换后列的值
* @param map 无返回
*/
int personMove(int oldPersonX ,int oldPersonY,int newPersonX,int newPersonY,char map[HANG][LIE]){
if (map[newPersonX][newPersonY] == ' '){
char temp = ' ';
temp = map[oldPersonX][oldPersonY];
map[oldPersonX][oldPersonY]=map[newPersonX][newPersonY];
map[newPersonX][newPersonY]=temp;
return 1;
}
return 0;
}
/**
* 打印地图
*/
void putMap(char map[HANG][LIE]){
for (int i = 0;i < HANG ; i ++) {
for (int j = 0; j < LIE ; j++) {
printf("%c",map[j]);
}
printf("\n");
}
}
|
|