植物大战僵尸吧 关注:576,083贴子:5,166,478

回复:春、曾,底线矿——以理论计算薄纱海量测试

取消只看楼主收藏回复

大方向上,曾在大多数常规少io炮阵中面对的僵尸无非三样:矿工,蹦极,小鬼。到目前为止矿工研究完了,方法论也有了,下一步可能会把之前整合过所有的冰杀小偷测试全盘重制一遍,终极目标是对后场小鬼与底线炮组合的完全解析,就是我上一篇专栏中提到的大纲。后者这几天做了一点,也只是冰山一角,需要量化的东西很多,阵设构型更多,总之还有很长的路要走。但时间紧迫,回过神来2022年已经过了一大半,而我还在浪费时间,不觉令人感叹。下半年肯定有够忙的,如果今年搞不出来,明年就更没时间搞;再以后,可能连玩2F生存的机会都不会有了。先就写这么多,后续可能会做少许修改。


IP属地:新疆来自Android客户端16楼2022-08-31 16:38
回复
    Ref.
    *使用工具:RND_3_4,TSV_5_0,ShowMe,PvZ Tools_v2.7.2,WPF修改器;
    *部分数据及计算方式来源于吧友【逆命-断水】【不在宝前】,在此深表感谢;
    *感谢吧友【overthereis】指出的问题,现已修正并添加了补充注释。


    IP属地:新疆来自Android客户端17楼2022-08-31 16:39
    回复
      2026-01-27 05:12:18
      广告
      不感兴趣
      开通SVIP免广告
      任务完成擦个腚先


      IP属地:新疆来自Android客户端18楼2022-08-31 16:39
      回复
        坏了,word的上标小字忘转了


        IP属地:新疆来自Android客户端19楼2022-08-31 16:42
        回复
          单机贴吧


          IP属地:新疆来自Android客户端20楼2022-08-31 16:54
          收起回复
            夜 有 所 思


            IP属地:新疆来自Android客户端51楼2022-10-02 17:48
            回复
              关于四静曾守底(怎么又翻出来了)。
              首先这个被蹭的概率以我的能力是没法算出来理论值的,不过后来我转念一想,如果能把这个情形抽象出来,或许可以写个程序模拟?
              于是lz说干就干花了两个半天给它干出来了,不得不说还是比较简单的。


              IP属地:新疆来自Android客户端52楼2022-10-02 17:53
              回复
                这部分内容没打草稿,说一下大致思路吧。
                如上面正文所说的,曾的攻击存在浮动。所以很明显我们需要生成一串范围是186~200的随机数,模拟曾的攻击间隔;在此条件下加入第一至四发的相对命中时机。比如说本轮攻击间隔190,那么命中第一发就是190-74=116,第二发-28为88,…后面差不多。只要攻击间隔这个rnd确定了,其后的命中时刻就跟着确定了。


                IP属地:新疆来自Android客户端53楼2022-10-02 17:59
                回复
                  2026-01-27 05:06:18
                  广告
                  不感兴趣
                  开通SVIP免广告
                  需要注意的是我们模拟的是静曾,所以在它改变状态前的子弹发射倒计时是恒为0的,如果有僵尸进入其防区,曾需要等待本轮倒计时结束,然后从下一轮倒计时开始进行上面的攻击计算。


                  IP属地:新疆来自Android客户端54楼2022-10-02 18:02
                  收起回复
                    所以为了避免从一开始就算成动曾,给程序加一个flag标志位标记曾的状态:1是动曾,0是静曾。


                    IP属地:新疆来自Android客户端56楼2022-10-02 18:06
                    回复
                      再说说矿工。
                      对这玩意儿来讲我们只用到它的两个属性,一是血量,二是啃食时机。俩都是常量,说实话也没啥好讲的。


                      IP属地:新疆来自Android客户端57楼2022-10-02 18:08
                      回复
                        整个程序实质上是一个双层循环,内层每循环一次把游戏时间+1并做相应判定;外层是测试的次数。
                        内层循环这里我偷了个懒,如果351内命中达到15次就直接退出,否则等待时间增至352判定为啃食自动退出。


                        IP属地:新疆来自Android客户端58楼2022-10-02 18:13
                        回复
                          有一点忘说了,就是上面最近一张图上的话。我猜测,这个起始间隔可能会是很影响测试的一个参数。如果相对同步,那结果可能方差会偏大,如果相对分散(平均),也许结果会是一个很不错的范围。
                          我的程序在初始化随机数的时候生成了两个范围,一个是186~200,一个是1~200,可以说上面讲的两种都占了。前文说的起始间隔是后者,取值对应矿工站稳时曾本轮剩余的倒计时。


                          IP属地:新疆来自Android客户端59楼2022-10-02 18:26
                          回复
                            所以大体上就这样了。写完后我迫不及待把外层参数调到很大,比如说下面这张图。共计10万次测试,失败次数172,概率为0.172%。推测真实情况下的概率应该在1~3千分‰之间(废话
                            上述样本运行完花了我半个小时的时间,但感觉还能再压缩一下,毕竟我C艹水平不高。后续折腾一下看把代码发在哪个地方好,欢迎大佬优化。


                            IP属地:新疆来自Android客户端60楼2022-10-02 18:33
                            回复
                              2026-01-27 05:00:18
                              广告
                              不感兴趣
                              开通SVIP免广告
                              没人看就没人看吧,至少发出来以后搬运有个来头也方便修改


                              IP属地:新疆来自Android客户端61楼2022-10-02 18:35
                              回复