魔兽地图编辑器吧 关注:64,687贴子:3,831,949

【AI】拜吧教程——队列基础及应用

只看楼主收藏回复


茵蒂克丝镇楼本帖是本人的正式拜吧帖,虽然水平可能不高但还请大家多多支持


1楼2013-05-11 22:10回复

    一,队列是什么?
    队列是一种经典的数据结构(废话),在各种程序编辑和算法构建中有着广泛运用(又是废话)。而这种数据结构,在we中也大有用武之地(第三句废话)。
    所谓队列,就是一群数据排成一队。这些数据可以是数字,也可以是单位,还可以是字符串,更可以是naji(作死)。
    而既然叫做队列,就必然有队列的特点:先出队的一定是排头,新入队的一定是队尾(插队不算)。由这种特点,队列也被叫做先入先出表。
    二,如何组成队列?
    队列嘛,说到底也是一群数据,因此需要一个数组Q[n]来存储队列中每个元素。(废话
    接下来就是想想队列该干什么……嗯……入队……出队……插队(无视这条)……
    前文已经说过,队列中入队的一定会排到队尾,出队的一定是队头,所以只需要记下来队头在哪,队尾在哪就好了。为此可以引入队头变量h和队尾变量t来标记。
    一般来说,队头变量h指向真正队头的前一个位置(如果没有队头那么h=0)即Q[h+1]为队头,队尾变量t指向真正队尾的位置,即Q[t]为队尾。


    2楼2013-05-11 22:11
    收起回复
      三,入队和出队
      直接上图。




      3楼2013-05-11 22:13
      回复
        五,应用举例—英雄定时复活(豪华版)和模拟蚂蚁大
        1,英雄定时复活:首先上最经典的版本http://tieba.baidu.com/p/1016953793
        这里只是拿来对队列举个例子,这里的“豪华版”具体使用的可行性有待讨论(其实只是本人觉得等待太坑然后自己琢磨了一个队列实现的)。
        此法中如果循环队列溢出则会报错。
        二话不说,上图。(head,tail初始值均为0)



        5楼2013-05-11 22:16
        收起回复
          2,模拟蚂蚁大
          蚂蚁大就是时光倒流,回到5s前的状态。使用技能时必然不知道5秒前发生了什么,但是可以用队列记录,然后使用技能时直接弹出队头。这里为简便只回到15s前的生命百分比,其余可以举一反三,非常容易。
          这里循环队列溢出不会有任何问题,因为后面的记录一定要覆盖前面的,要不然……
          如果有些粗制滥造还请多多包涵~
          上图。



          6楼2013-05-11 22:17
          回复
            六,总结
            队列其实是很有用的一种数据结构,无论是在正经编程还是普通的触发器制作。某些看似不可思议的东西也许用队列就能实现(我不会说我是想不出来了)。总之,本教程只是抛砖引玉,希望各位能灵活地使用这种结构,做出更多更好的技能(这不是政治书这不是政治书这不是政治书这不是政治书这不是政治书……)。
            The End
            另附演示图下载:http://pan.baidu.com/share/link?shareid=544374&uk=185351876


            7楼2013-05-11 22:17
            回复
              说的好像很厉害,其实都是基础。用jass做ai最好。因为jass方便自定义函数。


              8楼2013-05-11 22:19
              收起回复
                楼主看看我写的这个ai半成品如何:【HTTP】tieba.baidu.com/p/2198180068


                9楼2013-05-11 22:24
                收起回复
                  习惯队列和栈打到一起…
                  #define qinit() {qs=0;qt=0;}
                  #define enq(x) {q[qt++]=0;}
                  #define deq() (q[qs++])
                  #define pop() (q[--qt])


                  来自Android客户端10楼2013-05-11 22:27
                  收起回复
                    额,栈刚好是 后进先出 。


                    IP属地:湖北来自Android客户端11楼2013-05-11 22:35
                    回复
                      不知这个能申精否?@najizhimo


                      13楼2013-05-11 22:50
                      回复
                        说实在这个算法简单过头了,不过看在写得还算是认真的前提下,还是加精吧,但是不算特别推荐。
                                          ————gal就是生存之道


                        IP属地:广东通过贴图神器上传14楼2013-05-11 22:57
                        收起回复
                          看到小黄书我就进来了


                          IP属地:山东15楼2013-05-11 23:00
                          收起回复
                            这精加得真随意


                            IP属地:广东17楼2013-05-11 23:09
                            收起回复