|
马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
空间 通用地图
整型 X,Y,起点x,起点y,终点x,终点y,父节点x,父节点y,子节点x,子节点y //大写X Y为最大方块表
整型[][] 格子
整型[][] F
整型[][] G
整型[][] H
整型[][] 开启表
功能 逻辑型 按钮0_点击()
整型 列宽,行高,i=0,x,y
X=转换.字符型转整型(编辑框.获得文本("编辑框0"),0)
Y=转换.字符型转整型(编辑框.获得文本("编辑框1"),0)
格子=整型[X][Y]
F=整型[X][Y]
G=整型[X][Y]
H=整型[X][Y]
行高=400/Y
列宽=400/X
表格.设置大小("表格0",X,Y)
循环(i<X)
表格.设置行高("表格0",i,行高)
i=i+1
循环结束
i=0
循环(i<Y)
表格.设置列宽("表格0",i,列宽)
i=i+1
循环结束
表格.大小("表格0",x,y)
表格.填充("表格0")
如果(x==X||y==Y)
列表框.插入文本("列表框0","地图校准成功",1)
否则
列表框.插入文本("列表框0","地图校准失败",1)
如果结束
返回 真
//函数返回语句
功能结束
功能 逻辑型 A星()
整型 扫描点,下标,最小值,标号,最小值下标
开启表=整型[X*Y][2]
父节点x=起点x
父节点y=起点y
循环(真)
下标=0
扫描点=0
最小值=0
下标=0
最小值下标=0
G[父节点x][父节点y]=0
循环(扫描点<8)
选择(扫描点)
条件 0: //左上角
子节点x=父节点x-1
子节点y=父节点y-1
如果(格子[父节点x-1][父节点y-1]==0||父节点x-1>=0||父节点y-1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+14
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 1: //正上方
子节点x=父节点x-1
子节点y=父节点y
如果(格子[父节点x-1][父节点y]==0||父节点x-1>=0||父节点y>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+10
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 2: //右上方
子节点x=父节点x-1
子节点y=父节点y+1
如果(格子[父节点x-1][父节点y+1]==0||父节点x-1>=0||父节点y+1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+14
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 3://左
子节点x=父节点x
子节点y=父节点y-1
如果(格子[父节点x][父节点y-1]==0||父节点x>=0||父节点y-1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+10
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 4://右
子节点x=父节点x
子节点y=父节点y+1
如果(格子[父节点x][父节点y+1]==0||父节点x>=0||父节点y+1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+10
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 5://左下
子节点x=父节点x+1
子节点y=父节点y-1
如果(格子[父节点x+1][父节点y-1]==0||父节点x+1>=0||父节点y-1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+14
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 6://正下
子节点x=父节点x+1
子节点y=父节点y
如果(格子[父节点x+1][父节点y]==0||父节点x+1>=0||父节点y>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+10
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
条件 7://右下
子节点x=父节点x+1
子节点y=父节点y+1
如果(格子[父节点x+1][父节点y+1]==0||父节点x+1>=0||父节点y+1>=0)
G[子节点x][子节点y]=G[父节点x][父节点y]+14
H[子节点x][子节点y]=(数学.绝对值(终点x-子节点y)+数学.绝对值(终点y-子节点x))*G[子节点x][子节点y]
F[子节点x][子节点y]=G[子节点x][子节点y]+H[子节点x][子节点y]
下标=下标+1
开启表[下标][0]=子节点x
开启表[下标][1]=子节点y
如果结束
扫描点=扫描点+1
选择结束
标号=下标
下标=0
最小值=F[(开启表[0][0])][(开启表[0][1])]
循环(下标<扫描点)
下标=下标+1
如果(最小值>F[(开启表[下标][0])][(开启表[下标][1])])
最小值=F[(开启表[下标][0])][(开启表[下标][1])]
最小值下标=下标
如果结束
循环结束
子节点x=开启表[最小值下标][0]
子节点y=开启表[最小值下标][1]
如果(格子[子节点x][子节点y]==3)
列表框.插入文本("列表框0","找到终点",1)
跳出
跳出
如果结束
格子[子节点x][子节点y]=2
父节点x=子节点x
父节点y=子节点y
表格.设置项背景颜色("表格0",子节点x,子节点y,#0000ff)
循环结束
循环结束
返回 真
功能结束
//空间结束语句
功能 逻辑型 表格0_左键单击()
int x,y
逻辑型 单选框=单选框.获得状态("单选框0")
逻辑型 单选框1=单选框.获得状态("单选框1")
逻辑型 单选框2=单选框.获得状态("单选框2")
如果(单选框==真)// 障碍
表格.焦点项("表格0",x,y)
表格.设置项背景颜色("表格0",x,y,000000)
格子[x][y]=1
列表框.插入文本("列表框0",字符串.格式化("%d%d%s",x,y,"设置为障碍"),1)
如果结束
如果(单选框1==真) // 起点
表格.焦点项("表格0",x,y)
表格.设置项背景颜色("表格0",x,y,#ff00ff)
格子[x][y]=2
起点x=x
起点y=y
列表框.插入文本("列表框0",字符串.格式化("%d%d%s",x,y,"设置为起点"),1)
如果结束
如果(单选框2==真) // 终点
表格.焦点项("表格0",x,y)
表格.设置项背景颜色("表格0",x,y,#008000)
格子[x][y]=3
终点x=x
终点y=y
列表框.插入文本("列表框0",字符串.格式化("%d%d%s",x,y,"设置为终点"),1)
如果结束
返回 真
功能结束
功能 逻辑型 运行(整型 x,整型 y,整型 设)
格子[父节点x][父节点y]=设
选择(设) // 0空白 1 障碍 2起点 3终点4 路径
条件 0:
条件 1:
条件 2:
条件 3:
表格.设置项背景颜色("表格0",父节点x,父节点y,#ff0000)
选择结束
返回 真
功能结束
功能 逻辑型 热键1_热键()
线程.开启("通用地图.A星","")
返回 真
功能结束
功能 逻辑型 初始化()
热键.注册("热键1")
返回 真
功能结束
功能 逻辑型 退出_点击()
//这里添加你要执行的代码
辅助.退出()
返回 真
//函数返回语句
功能结束
空间结束
|
|