黑马程序员——C基础之迷宫游戏
2015-12-07 11:35
465 查看
------- iOS培训、android培训、java培训、期待与您交流! ----------
#include <stdio.h>
#define row 6
#define col 6
/**
* 打印地图
*
* @param map 地图的数组
*/
void printMap(char map[row][col]){
for (int i = 0; i <row; i++) {
for (int j = 0; j <col; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
}
/**
* 移动小人
*
* @param map 地图的数组
* @param oldX 小人原来位置x坐标
* @param oldY 小人原来位置y坐标
* @param newX 小人将要移动到位置x坐标
* @param newY 小人将要移动到位置y坐标
*/
void personMove(char map[row][col],int oldX,int
oldY,int newX,int newY){
char temp;
temp = map[oldX][oldY];
map[oldX][oldY] = map[newX][newY];
map[newX][newY] = temp;
}
int main(int argc,const
char * argv[]) {
char map[row][col]={
{'#','#','#','#','#','#'},
{'#','0','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'},
};
char direction;
int currentX = 1;
int currentY = 1;
char street = ' ';
printMap(map);
printf("请控制小人移动: w.上
s.下 a.左 d.右 q.退出\n");
//char ch;//吸收字符\n
while (1) {
scanf("%c",&direction);
getchar();//吸收多余 \n
switch (direction) {
case 'w':
case 'W':
if (map[currentX-1][currentY] == street) {
personMove(map,currentX,currentY,currentX-1,currentY);
currentX--;
}
break;
case 's':
case 'S':
if (map[currentX+1][currentY] == street) {
personMove(map,currentX,currentY,currentX+1,currentY);
currentX++;
}
break;
case 'a':
case 'A':
if (map[currentX][currentY-1] == street) {
personMove(map,currentX,currentY,currentX,currentY-1);
currentY--;
}
break;
case 'd':
case 'D':
if (map[currentX][currentY+1] == street) {
personMove(map,currentX,currentY,currentX,currentY+1);
currentY++;
}
break;
case 'q':
case 'Q':
return 0;
break;
default:
break;
}
printMap(map);
if (currentY ==
col - 1) {
printf("哇哦,你出来了!\n");
break;
}
}
return 0;
}
#include <stdio.h>
#define row 6
#define col 6
/**
* 打印地图
*
* @param map 地图的数组
*/
void printMap(char map[row][col]){
for (int i = 0; i <row; i++) {
for (int j = 0; j <col; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
}
/**
* 移动小人
*
* @param map 地图的数组
* @param oldX 小人原来位置x坐标
* @param oldY 小人原来位置y坐标
* @param newX 小人将要移动到位置x坐标
* @param newY 小人将要移动到位置y坐标
*/
void personMove(char map[row][col],int oldX,int
oldY,int newX,int newY){
char temp;
temp = map[oldX][oldY];
map[oldX][oldY] = map[newX][newY];
map[newX][newY] = temp;
}
int main(int argc,const
char * argv[]) {
char map[row][col]={
{'#','#','#','#','#','#'},
{'#','0','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'},
};
char direction;
int currentX = 1;
int currentY = 1;
char street = ' ';
printMap(map);
printf("请控制小人移动: w.上
s.下 a.左 d.右 q.退出\n");
//char ch;//吸收字符\n
while (1) {
scanf("%c",&direction);
getchar();//吸收多余 \n
switch (direction) {
case 'w':
case 'W':
if (map[currentX-1][currentY] == street) {
personMove(map,currentX,currentY,currentX-1,currentY);
currentX--;
}
break;
case 's':
case 'S':
if (map[currentX+1][currentY] == street) {
personMove(map,currentX,currentY,currentX+1,currentY);
currentX++;
}
break;
case 'a':
case 'A':
if (map[currentX][currentY-1] == street) {
personMove(map,currentX,currentY,currentX,currentY-1);
currentY--;
}
break;
case 'd':
case 'D':
if (map[currentX][currentY+1] == street) {
personMove(map,currentX,currentY,currentX,currentY+1);
currentY++;
}
break;
case 'q':
case 'Q':
return 0;
break;
default:
break;
}
printMap(map);
if (currentY ==
col - 1) {
printf("哇哦,你出来了!\n");
break;
}
}
return 0;
}
相关文章推荐
- C语言小游戏—迷宫游戏的实现
- 数据结构应用:利用栈破解迷宫游戏
- 求迷宫通路问题
- [Qt] 迷宫随机生成和寻路算法 - Qt实现的迷宫小游戏
- 使用堆栈模型实现找迷宫的游戏
- C++ 迷宫游戏实现代码
- 迷宫游戏控制台版C++代码
- C++自动生成迷宫游戏
- 黑马程序员——C基础之二维数组
- 黑马程序员——C基础之冒泡排序
- 黑马程序员——C基础之一维数组
- 黑马程序员——C基础之内存分配函数
- 黑马程序员——OC基础---Foundation<NSString,NSArray,NSMultableString>
- 黑马程序员——C基础之推箱子游戏
- 黑马程序员——C基础之字符串处理函数
- 黑马程序员——C基础之疯狂猜数游戏
- 黑马程序员——C基础之位运算符
- 黑马程序员——反射
- 程序员面试问题搜集
- 黑马程序员——C基础之石头剪刀布游戏