TC官方合作论坛

 找回密码
 立即注册
查看: 1368|回复: 5

[源码分享] 发一个WSAD通用寻路源码

[复制链接]
发表于 2013-12-30 23:29:15 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
研究了几个小时
逻辑思维比较容易混乱无确定方向的
WSAD的通用寻路


功能 判断确认X和Y(下标)               \\按下W走1秒种判断走动X和Y那个坐标变动大小来确认那个是X和Y坐标并且确定X或者Y坐标的增大或者缩小和方向
    变量 坐标X前,坐标X后,坐标Y前,坐标Y后,效果
    超模.画图[下标].UseDict(0)
    坐标X前=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
    坐标Y前=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
    超模.画图[下标].keydownchar("w")
    辅助.等待(1000)
    超模.画图[下标].keyupchar("w")
    坐标X后=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
    坐标Y后=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
    如果(数学.绝对值(坐标Y前-坐标Y后)>=数学.绝对值(坐标X前-坐标X后))
        如果(坐标Y前<坐标Y后)
            效果=1
        否则
            效果=2
        如果结束
    否则
        如果(坐标X前<坐标X后)
            效果=3
        否则
            效果=4
        如果结束
    如果结束
    返回 效果
功能结束


功能 确定X和Y后判断方向(下标,效果)         \\ 通过上面的代码X或者Y坐标,然后来确定X或者Y坐标的增大或者缩小和方向
    变量 坐标X前,坐标X后,坐标Y前,坐标Y后,方向
    超模.画图[下标].UseDict(0)
    如果(效果==1||效果==2)
        坐标X前=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
        超模.画图[下标].keydownchar("A")
        辅助.等待(1000)
        超模.画图[下标].keyupchar("A")
        坐标X后=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
        如果(坐标X前<坐标X后)
            方向=1
        否则
            方向=2
        如果结束
    如果结束
    如果(效果==3||效果==4)
        坐标Y前=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
        超模.画图[下标].keydownchar("a")
        辅助.等待(1000)
        超模.画图[下标].keyupchar("a")
        坐标Y后=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
        如果(坐标Y前<坐标Y后)
            方向=3
        否则
            方向=4
        如果结束
    如果结束
    返回 方向
功能结束


功能 试炼寻路到指定坐标(下标,目标x,目标y,方向a,方向b)     \\ 以下确定那个是 X或者Y的坐标后和确定方向后寻路的代码并且防止人物打转,坐标误差值设置为1
    如果(方向a==1&&方向b==1)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("d")
                    超模.画图[下标].keydownchar("a")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("a")
                    超模.画图[下标].keydownchar("d")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("s")
                    超模.画图[下标].keydownchar("w")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("w")
                    超模.画图[下标].keydownchar("s")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==1&&方向b==2)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("s")
                    超模.画图[下标].keydownchar("w")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("w")
                    超模.画图[下标].keydownchar("s")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==2&&方向b==1)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("W")
                    超模.画图[下标].keydownchar("S")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("S")
                    超模.画图[下标].keydownchar("W")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==2&&方向b==2)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("w")
                    超模.画图[下标].keydownchar("s")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("s")
                    超模.画图[下标].keydownchar("w")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==3&&方向b==3)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("S")
                    超模.画图[下标].keydownchar("W")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("W")
                    超模.画图[下标].keydownchar("S")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==3&&方向b==4)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("S")
                    超模.画图[下标].keydownchar("W")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("W")
                    超模.画图[下标].keydownchar("S")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==4&&方向b==3)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("w")
                    超模.画图[下标].keydownchar("s")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("s")
                    超模.画图[下标].keydownchar("w")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
    如果(方向a==4&&方向b==4)
        变量 坐标x,坐标y
        超模.画图[下标].UseDict(0)
        循环(真)
            坐标x=超模.画图[下标].Ocr(865,1,905,15,"d8cfbe-303030",0.9)
            坐标y=超模.画图[下标].Ocr(925,1,965,15,"d8cfbe-303030",0.9)
            如果(坐标x!="")
                如果(坐标x<目标x)
                    超模.画图[下标].keyupchar("W")
                    超模.画图[下标].keydownchar("S")
                如果结束
            如果结束
            如果(坐标x!="")
                如果(坐标x>目标x)
                    超模.画图[下标].keyupchar("S")
                    超模.画图[下标].keydownchar("W")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y<目标y)
                    超模.画图[下标].keyupchar("A")
                    超模.画图[下标].keydownchar("D")
                如果结束
            如果结束
            如果(坐标y!="")
                如果(坐标y>目标y)
                    超模.画图[下标].keyupchar("D")
                    超模.画图[下标].keydownchar("A")
                如果结束
            如果结束
            如果(坐标x!=""&&坐标y!="")
                如果(数学.绝对值(坐标x-目标x)<=1&&数学.绝对值(坐标y-目标y)<=1)
                    跳出
                如果结束
            如果结束
        循环结束
        超模.画图[下标].keyupchar("s")
        超模.画图[下标].keyupchar("w")
        超模.画图[下标].keyupchar("a")
        超模.画图[下标].keyupchar("d")
    如果结束
功能结束


功能 测试寻路(下标,X,Y)      \\这就是测试寻路
    变量 方向x,方向y
    方向a=功能集.判断确认X和Y(下标)     \\确定X或者Y坐标和并且确定坐标增大或者缩小的方向
    方向b=功能集.确定X和Y后判断方向(下标,方向a)  根据确定X或者Y来确定方向并且确定坐标增大或者缩小的方向
    功能集.试炼寻路到指定坐标(下标,X,Y,方向a,方向b)
功能结束


回复

使用道具 举报

发表于 2013-12-31 00:23:20 | 显示全部楼层
是源码,支持,但是太长了,没耐心看。
回复 支持 反对

使用道具 举报

发表于 2013-12-31 09:28:08 | 显示全部楼层
真是太长....      没看完...   不过还是感谢楼主的无私奉献
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-31 14:08:52 | 显示全部楼层
用判断加传参
可以精简但是逻辑思维更加混乱
毕竟要确定X和Y的方向
所以必须8个寻路方向
回复 支持 反对

使用道具 举报

发表于 2014-1-3 18:59:29 | 显示全部楼层
哈哈,感谢分享
回复 支持 反对

使用道具 举报

发表于 2014-5-26 07:29:54 来自手机 | 显示全部楼层
感谢飞直接
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-6-1 16:17 , Processed in 0.040024 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表