24小时接单的黑客网站

破解教程,破解软件,破解补丁,破解密码,破解软件下

迷宫破解代码(迷宫求解代码)

本文目录一览:

c语言,用二维数组解决迷宫问题。来段完整的代码吧。

#includestdio.h

#define MaxSize 20

typedef struct{

int i;

int j;

}BOX;

typedef struct{

BOX data[MaxSize];

int length;

}PathType;

void display(PathType path)

{

static int time = 0;

int k;

printf("输出第%d条路径:\n", ++time);

for (k = 0; kpath.length; k++)

printf(" (%d %d)", path.data[k].i, path.data[k].j);

printf("\n");

}

void mgpath(int mg[20][20], int xi, int yi, int x2, int y2, PathType path)

{

int di, i, j;

if (xi == x2yi == y2)

{

path.data[path.length].i = xi;

path.data[path.length].j = yi;

path.length++;

display(path);

}

else{

if (mg[xi][yi] == 0)

{

di = 0;

while (di4)

{

path.data[path.length].i = xi;

path.data[path.length].j = yi;

path.length++;

switch (di)

{

case 0:

i = xi - 1;

j = yi;

break;

case 1:

i = xi;

j = yi + 1;

break;

case 2:

i = xi + 1;

j = yi;

break;

case 3:

i = xi;

j = yi - 1;

break;

}

mg[xi][yi] = -1;

mgpath(mg, i, j, x2, y2, path);

mg[xi][yi] = 0;

path.length--;

di++;

}

}

}

}

int main()

{

PathType path;

int i, j;

int M, N;

int x1, x2, y1, y2;

int mg[20][20];

scanf_s("%d%d", M, N);

for (i = 0; iM; i++)

for (j = 0; jN; j++)

{

scanf_s("%d", mg[i][j]);

}

scanf_s("%d%d%d%d", x1, y1, x2, y2);

path.length = 0;

mgpath(mg, x1,y1,x2,y2,path);

return 0;

}

c++编写一个迷宫游戏,求完整代码。最好能有适当的注释。

#include stdio.h

#include iostream

#include conio.h

#include windows.h

#include time.h

using namespace std;

#define Height 25//高度,必须为奇数

#define Width 25 //宽度,必须为奇数

#define Wall 1 //用1表示墙

#define Road 0 //用0表示路

#define Start 2

#define End 3

#define up 72

#define down 80

#define left 75

#define right 78

#define flag 5

int map[Height+2][Width+2];

int x=2,y=1; //玩家当前位置,刚开始在入口处

class Migong

{

public:

void gotoxy(int x,int y); //移动坐标的函数声明

void shengcheng(int x,int y); //随机生成迷宫的函数声明

void display(int x,int y); //显示迷宫的函数声明

void chushi(); //初始化迷宫的函数声明

};

class Wanjia:public Migong //玩家类由迷宫类派生来

{

public:

void gonglue(int x,int y);

void shang(int x,int y);

void xia(int x,int y);

void zuo(int x,int y);

void you(int x,int y);

void game(); //游戏运行包括移动的函数声明

};

void Migong::gotoxy(int x,int y) //移动坐标 这是使光标 到(x,y)这个位置的函数.调用 COORD 需要#include.

{

COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );

}

void Migong::shengcheng(int x,int y) //随机生成迷宫

{

int c[4][2]={0,1,1,0,0,-1,-1,0}; //四个方向 //数组c 0 1 向右

// 1 0 向下

// -1 0 向上

// 0 -1 向左

int i,j,t;

//将方向打乱

for(i=0;i4;i++)

{

j=rand()%4; //随机生成j

t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; //将c[i][0]和c[j][0]交换

t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; //类似上

}

map[x][y]=Road; //当前位置设为路

for(i=0;i4;i++) //沿四个方向设置

if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) //沿c[i][0]、c[i][1]方向前2步如果是墙

{

map[x+c[i][0]][y+c[i][1]]=Road; //让该方向前一步设为路

shengcheng(x+2*c[i][0],y+2*c[i][1]); //在该方向前两步继续生成地图 因为这里是递归函数,当执行到最后一点发现都不能走的时候,

//会返回到上一个函数,也就是上一个点,再次判断是否可以产生地图 ,知道地图上所有点被遍历完。

}

}

void Migong::display(int x,int y) //显示迷宫

{

gotoxy(2*y-2,x-1);

switch(map[x][y])

{

case Start:

cout"入";break; //显示入口

case End:

cout"出";break; //显示出口

case Wall:

cout"■";break; //显示墙

case Road:

cout" ";break; //显示路

case up:

cout"↑";break; //在攻略中的标记 下同

case down:

cout"↓";break;

case left:

cout"←";break;

case right:

cout"→";break;

case flag:

cout" ";break; //标记,防止攻略遍历时候无线循环

}

}

void Migong::chushi()

{

int i,j;

srand((unsigned)time(NULL)); //初始化随机种子

for(i=0;i=Height+1;i++)

for(j=0;j=Width+1;j++)

if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宫 默认四周是路

map[i][j]=Road;

else map[i][j]=Wall;

shengcheng(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //从随机一个点开始生成迷宫,该点行列都为偶数

for(i=0;i=Height+1;i++) //边界处理 把最开始默认为路的堵上,以免跑出迷宫

{

map[i][0]=Wall;

map[i][Width+1]=Wall;

}

for(j=0;j=Width+1;j++) //边界处理

{

map[0][j]=Wall;

map[Height+1][j]=Wall;

}

map[2][1]=Start; //给定入口

map[Height-1][Width]=End; //给定出口

for(i=1;i=Height;i++) //i初始为1,结束为height,以免画出外围

for(j=1;j=Width;j++) //画出迷宫 同上

display(i,j);

}

void Wanjia::game()

{

int x=2,y=1; //玩家当前位置,刚开始在入口处

int c; //用来接收按键

while(1)

{

gotoxy(2*y-2,x-1);

cout"☆"; //画出玩家当前位置

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(30,24); //到达此坐标

cout"到达终点,按任意键结束";

getch();

break;

c=getch();

}

if(c!=-32)

{

c=getch();

switch(c)

{

case 72: //向上走

if(map[x-1][y]!=Wall)

{

display(x,y);

x--;

}

break;

case 80: //向下走

if(map[x+1][y]!=Wall)

{

display(x,y);

x++;

}

break;

case 75: //向左走

if(map[x][y-1]!=Wall)

{

display(x,y);

y--;

}

break;

case 77: //向右走

if(map[x][y+1]!=Wall)

{

display(x,y);

y++;

}

break;

case 112: //按下P

gonglue(2,1);break; //如果按下P执行攻略函数

}

}

}

}

void Wanjia::shang(int x,int y)

{

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(52,20); //到达此坐标

cout"到达终点,按任意键结束";

getch();

exit(0);

}

if(map[x-1][y]!=Wallmap[x-1][y]!=upmap[x-1][y]!=downmap[x-1][y]!=leftmap[x-1][y]!=rightmap[x-1][y]!=flag)

{ //当移动后的下一个位置没有被走过且不是墙

map[x][y]=up;

display(x,y);

x--;

gonglue(x,y); //递归,攻略下一个点

}

}

void Wanjia::xia(int x,int y)

{

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(52,20); //到达此坐标

cout"到达终点,按任意键结束";

getch();

exit(0);

}

if(map[x+1][y]!=Wallmap[x+1][y]!=upmap[x+1][y]!=downmap[x+1][y]!=leftmap[x+1][y]!=rightmap[x+1][y]!=flag) //当移动后的下一个位置没有被走过且不是墙

{

map[x][y]=down;

display(x,y);

x++;

gonglue(x,y); //递归,攻略下一个点

}

}

void Wanjia::zuo(int x,int y)

{

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(52,20); //到达此坐标

cout"到达终点,按任意键结束";

getch();

exit(0);

}

if(map[x][y-1]!=Wallmap[x][y-1]!=upmap[x][y-1]!=downmap[x][y-1]!=leftmap[x][y-1]!=rightmap[x][y-1]!=flag) //当移动后的下一个位置没有被走过且不是墙

{

map[x][y]=left;

display(x,y);

y--;

gonglue(x,y); //递归,攻略下一个点

}

}

void Wanjia::you(int x,int y)

{

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(52,20); //到达此坐标

cout"到达终点,按任意键结束";

getch();

exit(0);

}

if(map[x][y+1]!=Wallmap[x][y+1]!=upmap[x][y+1]!=downmap[x][y+1]!=leftmap[x][y+1]!=rightmap[x][y+1]!=flag) //当移动后的下一个位置没有被走过且不是墙

{

map[x][y]=right;

display(x,y);

y++;

gonglue(x,y); //递归,攻略下一个点

}

}

void Wanjia::gonglue (int x,int y)

{

gotoxy(2*y-2,x-1);

cout"☆"; //画出玩家当前位置

if(map[x][y]==End) //判断是否到达出口

{

gotoxy(52,20); //到达此坐标

cout"到达终点,按任意键结束";

getch();

exit(0);

}

shang(x,y); //上下左右

xia(x,y);

zuo(x,y);

you(x,y);

map[x][y]=flag; //当上下左右都无法走的时候,即为死路,因为递归函数开始向后,所以讲死路点值置为flag,变成无形之墙。

display(x,y);

}

int main()

{

cout" 移动迷宫 "endl;

cout"--------------------"endl;

cout"欢迎来到移动迷宫游戏"endl;

cout"--------------------"endl;

cout"游戏说明:给定一出口和入口"endl;

cout"玩家控制一个五角星(☆)从入口走到出口"endl;

cout"系统会记录你所走的步数"endl;

cout"按回车进入游戏";

cout"(按下P键可以获得攻略。)";

getch();

system("cls"); //清屏函数 ,清除开始界面

Wanjia w1;

w1.chushi();

w1.game(); //开始游戏

// w1.gonglue(2,1); //功略显示

getch();

return 0;

}

————————————————

版权声明:本文为CSDN博主「失落之风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:

喜欢的源码拿走,把小赞赞留下

求迷宫求解的C++代码?

#includeiostream

#includefstream

using

namespace

std;

struct

DataType

//定义描述迷宫中当前位置的结构类型

{

int

x;

//x代表当前位置的行坐标

int

y;

//y代表当前位置的列坐标

int

pre;

//pre表示移动到下一步的方向

};

struct

Move

//定义下一个位置的方向

{

int

x;

int

y;

};

struct

LinkNode

//链表结点

{

DataType

data;

LinkNode

*next;

};

//下面定义栈

class

stack

{

private:

LinkNode

*top;

//指向第一个结点的栈顶指针

public:

stack();

//构造函数,置空栈

~stack();

//析构函数

void

Push(DataType

data);

//把元素data压入栈中

DataType

Pop();

//使栈顶元素出栈

DataType

GetPop();

//取出栈顶元素

void

Clear();

//把栈清空

bool

IsEmpty();

//判断栈是否为空,如果为空则返回1,否则返回0

};

/////////////////////////////////////

/////////LinkList.cpp文件////////////

#include"LinkList.h"

stack::stack()

//构造函数,置空栈

{

top=NULL;

}

stack::~stack()

//析构函数

{

/*

LinkNode

*p=top;

while(top!=NULL)

{

p=top;

top=top-next;

//

delete

p;

}*/

}

void

stack::Push(DataType

x)

//把元素data压入栈中

{

LinkNode

*TempNode;

TempNode=new

LinkNode;

TempNode-data=x;

TempNode-next=top;

top=TempNode;

}

DataType

stack::Pop()

//使栈顶元素出栈

{

DataType

Temp;

LinkNode

*TempNode;

//if(top==NULL)

return

NULL;

//

else

//

{

TempNode=top;

top=top-next;

Temp=TempNode-data;

delete

TempNode;

return

Temp;

//

}

}

DataType

stack::GetPop()

//取出栈顶元素

{

return

top-data;

}

void

stack::Clear()

//把栈清空

{

top=NULL;

}

bool

stack::IsEmpty()

//判断栈是否为空,如果为空则返回1,否则返回0

{

if(top==NULL)

return

true;

else

return

false;

}

移动迷宫一共几部

别人说三部可是我下的小说有4部。第一部是迷宫行者(Maze Runner),第二部是炙热试炼(Scorch Trials),第三部夺命逃跑(Death Cure),第四部还没看完(Kill Order)。

第一部跑出迷宫后他们被送到沙漠,第三部回到研究室后托马斯拒绝做记忆恢复,然后逃跑。去了一个城市,但是纽特已经被感染,后来托马斯一枪打死了纽特,最后塔莉莎死了。jorson要托马斯的脑子,但是另一个女医生认为就算有了脑子他们构建脑袋蓝图也很难有用,所以把200个免疫者送到了一个世外桃源,这里jorson最后被托马斯掐死了。第四部刚开始塔莉莎是活着的,在他们进入迷宫之前。

C语言迷宫,要完整代码的

#includestdio.h

#includeconio.h  

int migong[10][10]= //设置迷宫,最外围1为墙 里边0为可走路径 1为障碍

{    

    {1,1,1,1,1,1,1,1,1,1},

    {1,0,0,0,0,0,0,1,1,1},

    {1,0,1,1,1,1,1,0,0,1},

    {1,0,1,0,0,0,0,0,0,1},

    {1,0,0,0,1,0,1,1,1,1},

    {1,1,1,1,0,0,1,1,1,1},

    {1,0,0,0,0,1,1,1,1,1},

    {1,0,1,1,0,0,1,1,1,1},

    {1,0,0,0,0,0,0,0,0,1},

    {1,1,1,1,1,1,1,1,1,1}

};

int num;

struct

{

int x,y,d;

}lj[100];//x,y分别为垂直和水平方向

void start()

{

int top=0,x,y,d,find;//d为设置方向,上下左右。find为设置找不找得到路

lj[top].x=1;

lj[top].y=1;

migong[1][1]=-1;

find=0;d=-1;

while(top-1){

if(lj[top].x==8lj[top].y==8) 

{

printf("迷宫路径如下:\n");

printf("start-");

for(x=0;x=top;x++)

{

printf("(%d,%d)- ",lj[x].x,lj[x].y);//把找到的路径输出

num++;

if(num%8==0)

printf("\n");

printf("-end!\n");

}

while(d4find==0){

d++;

switch(d){

case 0:x=lj[top].x-1; y=lj[top].y;  break;//方向为上

case 1:x=lj[top].x;   y=lj[top].y+1;break;//方向为右

case 2:x=lj[top].x+1; y=lj[top].y;  break;//方向为下

case 3:x=lj[top].x;   y=lj[top].y-1;}//方向为左

if(migong[x][y]==0)

find=1;

}

if(find==1){     //判断是否找得到

lj[top].d=d;

top++;

lj[top].x=x;

lj[top].y=y;

d=-1;find=0;     //重新调整方向

migong[x][y]=-1;}

else{

migong[lj[top].x][lj[top].y]=0;

top--;d=lj[top].d; //找不到的话退栈

}

}

}

void main()

{

start();

getch();

}

  • 评论列表:
  •  竹祭征棹
     发布于 2022-08-26 10:59:56  回复该评论
  • .h#include time.husing namespace std;#define Height 25//高度,必须为奇数#define Width 25 //宽度,必须为奇数#define Wall 1 //用1表示墙 #define Road 0 //
  •  忿咬绿脊
     发布于 2022-08-26 07:34:38  回复该评论
  • 链表结点{ DataTypedata; LinkNode*next;};//下面定义栈classstack{private: LinkNode*top; //指向第一个结点的栈顶指针public: stack();
  •  断渊一镜
     发布于 2022-08-26 14:54:06  回复该评论
  • +1][y]!=upmap[x+1][y]!=downmap[x+1][y]!=leftmap[x+1][y]!=rightmap[x+1][y]!=flag) //当移动后的下一个位置没有被走过且不是墙 { map[x][y]=down; d
  •  性许笙沉
     发布于 2022-08-26 09:14:18  回复该评论
  • lue(x,y); //递归,攻略下一个点 }}void Wanjia::zuo(int x,int y){ if(map[x][y]==End) //判断是否到达出口 {

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.