黑马程序员技术交流社区
标题: C语言中的二维数组 [打印本页]
作者: Mr.Qing 时间: 2014-9-10 20:57
标题: C语言中的二维数组
本人用二维数组设计一个迷宫的小游戏 望各位大牛 前来优化 使用函数进行封装 而且现在为何地图总打印出两遍
#include <stdio.h>
int main(int argc, const char * argv[])
{
//定义一个地图
char ch[5][5]=
{
{'*','*','*','*','*'},
{'*','o','*',' ',' '},
{'*',' ','*',' ','*'},
{'*',' ',' ',' ','*'},
{'*','*','*','*','*'}
};
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
printf("%c",ch[j]);
}
printf("\n");
}
int x=1;
int y=1;
char street= ' ';
printf("请通过w,s,a,d来控制小人\n");
char direction;
while (1)
{
scanf("%c",&direction);
// char z;
// scanf("\n",&z);
char temp;
switch (direction) {
case 's':
if (ch[x+1][y]==street) {
temp=ch[x][y];
ch[x][y]=ch[x+1][y];
ch[x+1][y]=temp;
x=x+1;
}
break;
case 'w':
if (ch[x-1][y]==street) {
temp=ch[x][y];
ch[x][y]=ch[x-1][y];
ch[x-1][y]=temp;
x=x-1;
}
break;
case 'a':
if (ch[x][y-1]==street) {
temp=ch[x][y];
ch[x][y]=ch[x][y-1];
ch[x][y-1]=temp;
y=y-1;
}
break;
case 'd':
if (ch[x][y+1]==street) {
temp=ch[x][y];
ch[x][y]=ch[x][y+1];
ch[x][y+1]=temp;
y=y+1;
}
break;
default:
break;
}
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
printf("%c",ch[j]);
}
printf("\n");
}
if (y==4)
{
printf("恭喜\n");
break;
}
}
return 0;
}
作者: 达摩八戒 时间: 2014-9-10 23:34
。。。。。这里传智的人很多的哦(⊙o⊙)哦。。。~~~
作者: 小月格子猫 时间: 2014-9-11 01:06
你这个迷宫根本就都不起来呀,至于你说的打印两遍,把scanf("%c",&direction);,%c前面加一个空格
就好了,还有你遍历数组的时候,没发现少些点什么吗??
下次代码写完整了,在发
作者: Mr.Qing 时间: 2014-9-11 14:10
这个我知道了 请大神指点我少了什么 我运行正常啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |