迷宫游戏C语言实现
2015-08-20 22:06
447 查看
//
// main.c
// 444
//
// Created by 安广沛 on 15/8/14.
// Copyright (c) 2015年 agp. All rights reserved.
//
//##########
//#x########
//# ####
//# ### ####
//# ### #
//# ########
//# ####
//# ###
//##########
//for (int i = 0; i< 9 ; i++) {
// for (int j= 0; j<10; j++) {
// printf("%c",*(*(p+i)+j));
// }
// printf("\n");
//}
#include <stdio.h>
void daYinDiTu(char (* p)[11]){
for (int j= 0; j < 9; j++) {
printf("%s",p[j]);
printf("\n");}
}
//p=a=&a[0]
int main(int argc, const char * argv[]) {
char diTu[9][11]=
{
"##########",
"#x########",
"# ####",
"# ### ####",
"# ### #",
"# ########",
"# #### ",
"# ###",
"##########"
};
// char *p[]= {
// "##########",
// "#x########",
// "# ####",
// "# ### ####",
// "# ### #",
// "# ########",
// "# #### ",
// "# ###",
// "##########"
// };
//打印地图
daYinDiTu(diTu);
//提示用户,W,S,A,D分别控制方向上下左右
printf("W,S,A,D分别控制方向上下左右 \n");
//定义变量接收用户所输入的方向
char fangXiang;
int x1=1,x2=1,y1=1,y2=1;//x(0,8),y(0,9)
//用户输入方向
while (1) {
// 接受用户输入的方向
scanf("%c",&fangXiang);
getchar();// 接收回车
switch (fangXiang) {
case 'w':
case 'W':
x2 = x1-1;
if (diTu[x1-1][y2]==' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
x1 = x2;
}else
{
x2 = x1;
}
daYinDiTu(diTu);
break;
case 's':
case 'S':
x2 = x1+1;
if (diTu[x1+1][y2] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
x1 = x2;
}else
{
x2 = x1;
}
daYinDiTu(diTu);
break;
case 'A':
case 'a':
y2 = y1-1;
if (diTu[x2][y1-1] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
y1 = y2;
}else{
y2 = y1;
}
daYinDiTu(diTu);
break;
case 'd':
case 'D':
y2 = y1 + 1;
if (diTu[x2][y1+1] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
y1 = y2;
}else{
y2 = y1;
}
daYinDiTu(diTu);
break;
// Y = 9时
default:
printf("输入无效方向");
break;
}
if (y1 == 9) {
printf("恭喜你走出迷宫\n");
return 0;
}
}
//定义变量记录X当前的位置
//当y2等于10时,提示用户走出迷宫
//当遇到墙时,continue跳出当前循环
return 0;
}
// main.c
// 444
//
// Created by 安广沛 on 15/8/14.
// Copyright (c) 2015年 agp. All rights reserved.
//
//##########
//#x########
//# ####
//# ### ####
//# ### #
//# ########
//# ####
//# ###
//##########
//for (int i = 0; i< 9 ; i++) {
// for (int j= 0; j<10; j++) {
// printf("%c",*(*(p+i)+j));
// }
// printf("\n");
//}
#include <stdio.h>
void daYinDiTu(char (* p)[11]){
for (int j= 0; j < 9; j++) {
printf("%s",p[j]);
printf("\n");}
}
//p=a=&a[0]
int main(int argc, const char * argv[]) {
char diTu[9][11]=
{
"##########",
"#x########",
"# ####",
"# ### ####",
"# ### #",
"# ########",
"# #### ",
"# ###",
"##########"
};
// char *p[]= {
// "##########",
// "#x########",
// "# ####",
// "# ### ####",
// "# ### #",
// "# ########",
// "# #### ",
// "# ###",
// "##########"
// };
//打印地图
daYinDiTu(diTu);
//提示用户,W,S,A,D分别控制方向上下左右
printf("W,S,A,D分别控制方向上下左右 \n");
//定义变量接收用户所输入的方向
char fangXiang;
int x1=1,x2=1,y1=1,y2=1;//x(0,8),y(0,9)
//用户输入方向
while (1) {
// 接受用户输入的方向
scanf("%c",&fangXiang);
getchar();// 接收回车
switch (fangXiang) {
case 'w':
case 'W':
x2 = x1-1;
if (diTu[x1-1][y2]==' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
x1 = x2;
}else
{
x2 = x1;
}
daYinDiTu(diTu);
break;
case 's':
case 'S':
x2 = x1+1;
if (diTu[x1+1][y2] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
x1 = x2;
}else
{
x2 = x1;
}
daYinDiTu(diTu);
break;
case 'A':
case 'a':
y2 = y1-1;
if (diTu[x2][y1-1] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
y1 = y2;
}else{
y2 = y1;
}
daYinDiTu(diTu);
break;
case 'd':
case 'D':
y2 = y1 + 1;
if (diTu[x2][y1+1] == ' ') {
int f;
f = diTu[x1][y1];
diTu[x1][y1] = diTu[x2][y2];
diTu[x2][y2] = f;
y1 = y2;
}else{
y2 = y1;
}
daYinDiTu(diTu);
break;
// Y = 9时
default:
printf("输入无效方向");
break;
}
if (y1 == 9) {
printf("恭喜你走出迷宫\n");
return 0;
}
}
//定义变量记录X当前的位置
//当y2等于10时,提示用户走出迷宫
//当遇到墙时,continue跳出当前循环
return 0;
}
相关文章推荐
- C++中引用(&)的用法和应用实例(转)
- C/C++笔试面试系列之一
- C#与C++的命名空间
- 零基础学C语言 笔记一 变量 printf
- 从背后知道C语言程序是怎么运行的
- C++头文件与实现文件分别写什么
- C语言-函数
- C++ string学习(转)
- C++之程序时间统计类实现
- 二叉树的C++实现代码
- C++那些细节--函数的默认参数
- C语言中do...while(0)的妙用-避免goto
- 推箱子
- C
- C++,当函数参数或者返回值是对象......(★firecat推荐★)
- C++ Primer 5e chapter 7
- Python实例浅谈之三Python与C/C++相互调用
- 用C语言编程求水仙花数
- Kuhn_Munkres最大权匹配算法C++模板
- C++知识点随笔(五):虚继承