TC官方合作论坛

标题: 帮我看看这段代码,给个想法 [打印本页]

作者: lytslyts    时间: 2015-5-8 15:41
标题: 帮我看看这段代码,给个想法
本帖最后由 lytslyts 于 2015-5-8 15:49 编辑

有个游戏,这个游戏没有坐标,人物是定点在屏幕中心的,中心点为400,235
我用的是找NPC的名字,找到后移动过去
每次走动的话 目标的XY值都会发生变化
用中心点跟NPC的XY坐标 之间的差值做比较,来判定距离,
距离近了就按Esc退出行走,距离远了就继续行走
不断的读取目标的XY值来判定距离
这个方法可行

可是有一个问题,如果中间与东西或者其他玩家卡主了就不走动了,
所以我想加一个判定卡位的功能
我自己有一个想法,但是不知道怎么实现,不知道该怎么写
想法是这样的
我用 中心点跟目标之间 的 距离值 有没有 发生变化 来判定是否卡位
如果 两者之前的 距离值 没有发生变化,说明卡住了,需要其他的操作比如说走位
但我不知道应该怎么写判断 两者之前的 距离值 没有发生变化
新手刚看视频学了几天
请高手给点指教,谢谢了



////调用功能的时候传入A,B,  A是目标点的鼠标X值,B是目标点的鼠标Y值
功能 距离判定(A,B)////中心点400,235
         调试输出("计算距离")
          变量 A差值,B差值
          距离开关 = 假 ////我做了这个开关,声明了全局变量,在调用这个功能的时候用来判定
          A差值 = 100
          B差值 = 100

    如果(400 >= A)
          A差值 = 400 - A
    否则
          A差值 = A - 400
    结束

    如果(235 >= B)
          B差值 = 235 - B        
    否则
          B差值 = B - 235
    结束   
   
    如果(A差值 <= 60 && B差值 <= 45)///////这个距离可以点到NPC
          调试输出("A差值:" & A差值 & "," & "B差值:" & B差值)
          dm.KeyPress(27)/////到达距离后按Esc停止移动
          等待(50)
          dm.KeyPress(27)
          距离开关 =
    否则
          调试输出("A差值:" & A差值 & "," & "B差值:" & B差值)
          距离开关 =
    结束
结束


作者: laowantong    时间: 2015-5-8 16:34
找出卡住时候的特征,跟找到NPC时的特征对比一下,不一样就继续走路,不知道你这是啥游戏,思路不清楚哦
作者: lytslyts    时间: 2015-5-8 16:53
laowantong 发表于 2015-5-8 16:34
找出卡住时候的特征,跟找到NPC时的特征对比一下,不一样就继续走路,不知道你这是啥游戏,思路不清楚哦 ...

没有特征,卡住了就是两者之间的距离没有发生变化,
比如我向你走过去,我们之间的距离就会缩短,
如果我碰到墙了走不到你面前了我们之间的距离就没有变化,因为我停住了
我想知道怎么计算 距离 有没有变化
先运行一次 计算距离,取值 第一次
然后行走,再计算一次距离,取值第二次
最后比较两次的距离,如果 第二次的值=第一次 说明没变化,也就是没走动
这个想法我觉得可行
可是不知道怎么写
作者: laowantong    时间: 2015-5-8 17:02
啥游戏
作者: lytslyts    时间: 2015-5-8 17:29
laowantong 发表于 2015-5-8 17:02
啥游戏

天堂1

作者: lytslyts    时间: 2015-5-8 17:35
laowantong 发表于 2015-5-8 17:02
啥游戏

谢了哥们
我自己搞定了
作者: lytslyts    时间: 2015-5-8 17:38
lytslyts 发表于 2015-5-8 17:35
谢了哥们
我自己搞定了

我是这样解决的
找色 得到第一次坐标值
第一次计算距离 取值
移动 改变坐标
找色 得到第二次坐标值
第二次计算距离 取值
然后第一次跟第二次的 取值相比较
作者: lytslyts    时间: 2015-5-8 18:02
lytslyts 发表于 2015-5-8 17:38
我是这样解决的
找色 得到第一次坐标值
第一次计算距离 取值

自己傻B了,思路死了
又想到一个想法
取色 ,取地板的颜色
先取色一次
走动
再取色一次
两次对比,如果两次颜色一样说明没有移动,卡主了
作者: lytslyts    时间: 2015-5-8 18:03
laowantong 发表于 2015-5-8 17:02
啥游戏

自己傻B了,思路死了
又想到一个想法
取色 ,取地板的颜色
先取色一次
走动
再取色一次
两次对比,如果两次颜色一样说明没有移动,卡主了




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1