c语言 迷宫问题 140

求在迷宫里添加些陷阱之类的好玩的元素,求各位大神拯救,地图部分省略了#include<stdio.h>#defineMAP_X39#defineMAP_Y43voidma... 求在迷宫里添加些陷阱之类的好玩的元素,求各位大神拯救 ,地图部分省略了
#include <stdio.h>

#define MAP_X 39
#define MAP_Y 43

void map() ;
void cm() ;

int wk[ MAP_X * MAP_Y ] = { } ;
int a = 1 ;
char com ;

int main( void )
{
int flg = 1 ;
int pz = 1599 ;

map() ;
while( flg != 0 )
{
cm() ;

switch( com )
{
case 'w' :
if( wk[ pz - 39 ] == 0 )
{
wk[ pz - 39 ] = 2 ;
wk[ pz ] = 0 ;
pz -= 39 ;
map() ;
}
else
{
printf( "コマンド入力 : " ) ;
}
break ;

case 's' :
if( wk[ pz + 39 ] == 0 )
{
wk[ pz + 39 ] = 2 ;
wk[ pz ] = 0 ;
pz += 39 ;
map() ;
}
else
{
printf( "コマンド入力 : " ) ;
}
break ;

case 'a' :
if( wk[ pz - 1 ] == 0 )
{
wk[ pz - 1 ] = 2 ;
wk[ pz ] = 0 ;
pz -= 1 ;
map() ;
}
else
{
printf( "コマンド入力 : " ) ;
}
break ;

case 'd' :
if( wk[ pz + 1 ] == 0 )
{
wk[ pz + 1 ] = 2 ;
wk[ pz ] = 0 ;
pz += 1 ;
map() ;
}
else
{
printf( "コマンド入力 : " ) ;
}
break ;

case 'e' :
printf( "ループの解放\n" ) ;
flg = 0 ;
break ;

}
}
}

void map()
{
int i ;

for( i = 0 ; i < MAP_X * MAP_Y ; i++ )
{
if( ( i / MAP_X ) == a )
{
printf( "\n" ) ;
a++ ;
}
switch( wk[ i ] )
{
case 1 :
printf( "■" ) ;
break ;

case 2 :
printf( "※" ) ;
break ;

case 3 :
printf( "寳" ) ;
break ;

default :
printf( " " ) ;
break ;
}
}
a = 1 ;
printf( "\n" ) ;
printf( "コマンド入力 : " ) ;
}

void cm()
{
scanf( "%s" , &com ) ;
}
1代表方块,0是可以走的路径, 各位大神能不能在我原有的基础上添加陷阱,感激不尽
展开
 我来答
亲爱的轮回29N
2014-06-14 · TA获得超过248个赞
知道答主
回答量:114
采纳率:0%
帮助的人:116万
展开全部
1是路径还是0是路径?
#include<cstdio>
#include<cstdlib>
enum se{
path,
block,
end,
mark
};
struct way{
int x;
int y;
}record[1000];
int maze[14][28]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,
1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,1,
1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,1,1,1,1,0,1,
1,0,0,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,1,1,1,1,0,1,
1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,
1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
void set_end(int ex, int ey){ //设置结束
maze[ex][ey] = end;
}
void printMaze(){
for(int i=0;i<14;i++) //迷宫图形化输出
{
for(int j=0;j<28;j++)
{
if(maze[i][j] == block)
printf("■");
else printf("□");
}
printf("\n");
}
}
void printResult(int length){
for(int i = 0; i < 14; i++) //迷宫路径图形化输出
{
for(int j = 0; j < 28; j++)
{
if(maze[i][j] == mark)
printf(">>");
else if(maze[i][j] == block)
printf("■");
else if(maze[i][j] == end)
printf("<<");
else if(maze[i][j] == path)
printf("□");
}
printf("\n");
}
for(int x = 0; x < length - 1; x++){
printf("<%d,%d> ->", record[x].x, record[x].y);
}
printf("<%d,%d> ", record[x].x, record[x].y);
printf("\n");
}
void search_path(int x, int y, int length){ // 递归寻找路径
if(maze[x][y] == end){
printResult(length);
system("pause");
exit(0);
}
else{
if(maze[x + 1][y] != block && maze[x + 1][y] != mark){
maze[x][y] = mark;
record[length].x = x;
record[length].y = y;
length++;
search_path(x + 1, y, length);
maze[x][y] = path;
length --;
}
if(maze[x - 1][y] != block && maze[x - 1][y] != mark){
maze[x][y] = mark;
record[length].x = x;
record[length].y = y;
length++;
search_path(x - 1, y, length);
maze[x][y] = path;
length --;
}
if(maze[x][y + 1] != block && maze[x][y + 1] != mark){
maze[x][y] = mark;
record[length].x = x;
record[length].y = y;
length++;
search_path(x, y + 1, length);
maze[x][y] = path;
length --;
}
if(maze[x][y - 1] != block && maze[x][y - 1] != mark){
maze[x][y] = mark;
record[length].x = x;
record[length].y = y;
length++;
search_path(x, y - 1, length);
maze[x][y] = path;
length --;
}
return;
}
}

int main(void)
{
set_end(12,26);
printMaze();
search_path(1,5,0);
printf("no path!"); //没有路径
return 0;
}
追问
感谢你的回答,不过我想要的是上面的基础上添加陷阱,完全新的看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式