当前位置:首页 » 编程软件 » 跑迷宫的脚本

跑迷宫的脚本

发布时间: 2022-08-10 16:42:59

⑴ VB编写游戏时要如何写迷宫的脚本

游戏是自己写的,脚本当然也是自己设计定义的,没有什么标准

⑵ 求洛奇英雄传 刷迷宫的 按键精灵脚本

你有辅助的话 就跳迷宫吧 想升级就刷图、现在挂迷宫没经验了 就算你刷了 过完图照样还是几十万的经验和82AP

⑶ 如何用scratch制作障碍迷宫

可以参考这个例子(但它编的不好),再自己加改进

我自己有编过一个,如果你要的话,可以把你的邮箱给我,O(∩_∩)O

⑷ 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;i<4;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;i<4;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]!=Wall&&map[x-1][y]!=up&&map[x-1][y]!=down&&map[x-1][y]!=left&&map[x-1][y]!=right&&map[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]!=Wall&&map[x+1][y]!=up&&map[x+1][y]!=down&&map[x+1][y]!=left&&map[x+1][y]!=right&&map[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]!=Wall&&map[x][y-1]!=up&&map[x][y-1]!=down&&map[x][y-1]!=left&&map[x][y-1]!=right&&map[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]!=Wall&&map[x][y+1]!=up&&map[x][y+1]!=down&&map[x][y+1]!=left&&map[x][y+1]!=right&&map[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 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41572774/java/article/details/84035598
喜欢的源码拿走,把小赞赞留下

⑸ 用FL做一个迷宫游戏,要用ActionScript 3.0写脚本。急用!!快交了·谢谢

这个是写在时间轴上的.
把舞台设置成800*800才能看全:

import flash.display.Shape;
import flash.display.Sprite;
import flash.display.StageScaleMode;
import flash.events.KeyboardEvent;
import flash.geom.Point;
import flash.text.TextField;
import flash.ui.Keyboard;

/** 地图宽*/
var mapW:int = 20;
/** 地图高*/
var mapH:int = 20;
/** 格子大小*/
var gridSize:int = 40;
/** 地图数据*/
var mapDataArr:Array = [];
/** 终点*/
var finalPoint:Point = new Point;
/** 出生点*/
var startPoint:Point = new Point;
/** 当前位置*/
var curPostion:Point = new Point;
/** 玩家*/
var player:Shape = new Shape;
/** 信息文本*/
var infoText:TextField = new TextField;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.stageWidth = 1000;
stage.stageHeight = 800;
player = new Shape();
player.graphics.beginFill(0xFF0000);
player.graphics.drawCircle(20,20,10);
player.graphics.endFill();

init();

this.stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey);
infoText = new TextField;
infoText.autoSize = "left";
infoText.textColor = 0x00ffff;
addChild(infoText);

/**
* 初始化
* */
function init():void
{
mapDataArr = [
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,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,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1
];
drawMap(mapDataArr);
infoText.text = "";
finalPoint = new Point(18,19);
startPoint = new Point(0,1);
curPostion = new Point(0,1);

player.x = curPostion.x * gridSize;
player.y = curPostion.y * gridSize;
addChild(player);

}
/** 绘制地图*/
function drawMap(arr:Array):void
{
this.graphics.clear();
this.graphics.beginFill(0x000000);
var len:int = arr.length;
for(var a:int = 0;a < len;a++)
{
if(arr[a] == 1)
{
this.graphics.drawRect(int(a%mapW)*gridSize,int(a/mapW)*gridSize,gridSize,gridSize);
}
}
this.graphics.endFill();
}
/**
* 按键 ,开始走路了
* @param evt
*
*/
function onKey(evt:KeyboardEvent):void
{
var point:Point = new Point;
switch(evt.keyCode)
{
case Keyboard.UP:
point.x = curPostion.x;
point.y = curPostion.y-1;
if(!isRight(point))
{
return;
}
curPostion = point;
player.x = curPostion.x * gridSize;
player.y = curPostion.y * gridSize;
break;
case Keyboard.DOWN:
point.x = curPostion.x;
point.y = curPostion.y+1;
if(!isRight(point))
{
return;
}
curPostion = point;
player.x = curPostion.x * gridSize;
player.y = curPostion.y * gridSize;
break;
case Keyboard.LEFT:
point.x = curPostion.x-1;
point.y = curPostion.y;
if(!isRight(point))
{
return;
}
curPostion = point;
player.x = curPostion.x * gridSize;
player.y = curPostion.y * gridSize;
break;
case Keyboard.RIGHT:
point.x = curPostion.x+1;
point.y = curPostion.y;
if(!isRight(point))
{
return;
}
curPostion = point;
player.x = curPostion.x * gridSize;
player.y = curPostion.y * gridSize;
break;
}
if(curPostion.x == finalPoint.x && curPostion.y == finalPoint.y)
{
trace("Game Over!");
infoText.text = "找到出口了啊";
}
}
/** 判断一个点是否正确*/
function isRight(p:Point):Boolean
{
if(p.x < 0 || p.x > 19) return false;
if(p.y < 0 || p.y > 19) return false;

return mapDataArr[p.y*mapW + p.x] == 0;
}

⑹ 如何用C++编写一个迷宫游戏,高分求代码!!!!!!!!!!!!!

#include "graphics.h"
#include "stdio.h"
#define N 10
#define M N*N-4+1 /*堆栈最大值,用来保存路口信息*/
#define UP 1
#define DOWN -1
#define LEFT 2
#define RIGHT -2
#define UP_M man.x-1>=0&&a[man.x-1][man.y] /*人当前位置的上一个位置*/
#define DOWN_M man.x+1<N&&a[man.x+1][man.y]
#define LEFT_M man.y-1>=0&&a[man.x][man.y-1]
#define RIGHT_M man.y+1<N&&a[man.x][man.y+1]
#define ENTER 3 /*岔路的入口*/
#define HAVE 2 /*某条路已经走过*/

struct cross across,stack[M]=;
int top=1;
int PX=70,PY=40;
struct man;

/*迷宫定义,1表示路,可自行更改迷宫的路径,可使全为1,看效果等*/
int a[N][N]={0,0,0,1,1,0,1,1,1,0,
1,1,0,1,0,1,1,0,1,0,
0,1,1,1,1,0,1,1,1,1,
1,0,1,0,1,1,1,0,1,0,
1,1,1,1,0,0,1,1,1,1,
1,0,1,0,1,1,1,0,1,0,
0,0,1,1,1,0,1,1,1,0,
1,1,1,0,1,0,1,0,1,0,
0,0,1,0,1,1,1,0,1,1,
0,1,1,0,0,1,0,0,0,0};

void init_man() /*初始化人的状态,要求迷宫入口须在左侧*/
{int i;setcolor(WHITE);
for(i=0;i<N;i++)
if(a[i][0]) {man.x=i;man.y=0;
if(a[i][1]) man.s=RIGHT;
else if(i+1<N&&a[i+1][0]) man.s=DOWN;
else if(i-1>=0&&a[i-1][0]) man.s=UP;
else
return ;}
if(i==N)
}

void show_map() /*显示迷宫*/
{int i,j;

for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i][j]) {setfillstyle(1,WHITE);
bar(PX+j*20,PY+i*20,PX+j*20+20,PY+i*20+20);}
else {setfillstyle(1,LIGHTBLUE);
bar(PX+j*20,PY+i*20,PX+j*20+20,PY+i*20+20);}
setcolor(BLACK);
for(i=0;i<N;i++)
{line(PX+i*20,PY,PX+i*20,PY+20*N);
line(PX,PY+i*20,PX+20*N,PY+i*20);}
}

void show_man(int color)
{
setfillstyle(1,color);
bar(PX+man.y*20+5,PY+man.x*20+5,PX+man.y*20+20-5,PY+man.x*20+20-5);
}

int cross() /*岔路判断*/
{int count=0;
if(UP_M) count++;
if(DOWN_M) count++;
if(LEFT_M) count++;
if(RIGHT_M) count++;
return count;}

void move() /*依据人的移动状态而移动到新位置*/
{
show_man(GREEN);
switch(man.s)
{case UP:man.x-=1;break;
case DOWN:man.x+=1;break;
case LEFT:man.y-=1;break;
case RIGHT:man.y+=1;break;
}
show_man(LIGHTRED);
}

void back() /*回头走*/
{switch(man.s)
{case UP:man.s=DOWN;move();break;
case DOWN:man.s=UP;move();break;
case LEFT:man.s=RIGHT;move();break;
case RIGHT:man.s=LEFT;move();break;
}
}

void go_on() /*为通路且不是岔路时,继续向前走*/
{switch(man.s)
{case UP:if(UP_M) move();
else if(LEFT_M)
else if(RIGHT_M)
break;
case DOWN:if(DOWN_M) move();
else if(LEFT_M)
else if(RIGHT_M)
break;
case LEFT:if(LEFT_M) move();
else if(UP_M)
else if(DOWN_M)
break;
case RIGHT:if(RIGHT_M) move();
else if(UP_M)
else if(DOWN_M)
break;
}
}

int xin() /*判断人当前位置是否是新岔路口*/
{int i;
for(i=1;i<top;i++)
if(man.x==stack[i].x&&man.y==stack[i].y) return i;
return 0;
}

void () /*拷贝岔路信息到across结构体*/
{across.x=man.x;
across.y=man.y;
if(UP_M==1) across.up=1;
else across.up=0;
if(DOWN_M==1) across.down=1;
else across.down=0;
if(LEFT_M==1) across.left=1;
else across.left=0;
if(RIGHT_M==1) across.right=1;
else across.right=0;
}

void rukou() /*为岔路设置一个入口*/
{switch(man.s)
{case UP:across.down=ENTER;break;
case DOWN:across.up=ENTER;break;
case LEFT:across.right=ENTER;break;
case RIGHT:across.left=ENTER;break;
}
}

void xuanlu(struct cross *p) /*在岔路时,为人选一条路行走*/
{switch(man.s)
{case UP:if(p->up==1) p->up=HAVE;
else if(p->left==1)
else if(p->right==1)
else
break;
case DOWN:if(p->down==1) p->down=HAVE;
else if(p->left==1)
else if(p->right==1)
else
break;
case LEFT:if(p->left==1) p->left=HAVE;
else if(p->up==1)
else if(p->down==1)
else
break;
case RIGHT:if(p->right==1) p->right=HAVE;
else if(p->up==1)
else if(p->down==1)
else
break;
}
}

push(struct cross *p) /*把新岔路口入栈*/
{stack[top].left=p->left;
stack[top].right=p->right;
stack[top].up=p->up;
stack[top].down=p->down;
stack[top].x=p->x;
stack[top].y=p->y;
top++;
}

int wan(struct cross *p) /*当前人所在的岔路口走完否?*/
{int count=0;
if(p->left==1) count++;
if(p->right==1) count++;
if(p->up==1) count++;
if(p->down==1) count++;
if(count>0) return 0;
return 1;
}

void chukou(struct cross *p) /*人从出口出来*/
{if(p->up==ENTER) man.s=UP;
else if(p->down==ENTER) man.s=DOWN;
else if(p->left==ENTER) man.s=LEFT;
else man.s=RIGHT;
}

main()
{int c,k;
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"");
cleardevice();
show_map();
init_man();show_man(LIGHTRED);getch();delay(65000);
do{
switch(c=cross())
{case 1:switch(man.s)
{case UP:if(UP_M) move();
else back();break;
case DOWN:if(DOWN_M) move();
else back();break;
case LEFT:if(LEFT_M) move();
else back();break;
case RIGHT:if(RIGHT_M) move();
else back();break;}
break;

case 2:go_on();break;
case 3:
case 4:k=xin();
if(!k)
else {if(wan(&stack[k])) chukou(&stack[k]);
else xuanlu(&stack[k]);}

move();
break;
}
delay(65000);
}while(!kbhit());
closegraph();}

==================================================
编译环境:tc 2.0

⑺ 按键精灵如何制作走1步才显示下1步的,随机迷宫的脚本

找个会A星算法的高手来吧。。。

⑻ 倩女幽魂阿鼻监狱迷宫怎么跑的快

可以在网上买迷宫脚本
也可以:
①:迷宫起点和终点之间肯定是封闭图形,只要顺着通道一侧跑必定能跑到终点,不过花费时间有点长,这是个笨办法,嘿嘿,以前跑单机游戏里的迷宫就是用这个笨办法跑的。

②:迷宫一般是最远线路才是正确线路,所以模糊方向应该是往最外圈跑吧。还要记得终点大致在哪个方向,如终点在右上方你非要往左下方跑当然要跑冤枉路了。

③:游戏里的分岔路口一般都是三叉路口,可以在三岔路口把宝宝定在另一条未知通道处便于记忆,避免跑回头路。当然运气和直觉往往能起很大作用呵呵。

热点内容
链接sqlserver 发布:2024-05-20 04:27:53 浏览:208
ftp文件服务器扩容 发布:2024-05-20 04:22:21 浏览:645
linux心跳包 发布:2024-05-20 04:17:52 浏览:969
android打开数据库文件 发布:2024-05-20 04:16:07 浏览:571
塑料解压 发布:2024-05-20 03:50:09 浏览:75
python在服务器端开发 发布:2024-05-20 03:31:17 浏览:66
编程大冒险 发布:2024-05-20 03:19:27 浏览:637
阿瓦隆九个人怎么配置 发布:2024-05-20 02:57:47 浏览:758
sqlnotinexcept 发布:2024-05-20 02:53:10 浏览:342
激光切割编程教程难吗 发布:2024-05-20 02:49:57 浏览:926