minecraft吧 关注:2,550,776贴子:31,888,918

[Solved]农作物全解

取消只看楼主收藏回复

Hellow大家好,这里是补丁


IP属地:浙江1楼2018-06-06 15:52回复
    二楼备用


    IP属地:浙江2楼2018-06-06 15:52
    收起回复
      广告
      立即查看
      本帖不会出现什么:
      不会出现非常基础的农作物种植教程
      不会出现如各种农作物种子获得方法等基础问题
      不会出现可以在wiki等网站上找到的大部分详细事物(照这么说标题好像起的有点不对。。。)
      本贴会包含什么:
      会计算部分农作物效率最大化的种植方法
      会计算某些行为对生长效率的影响
      会记录各类植物的生长计算方式,并结合三者算出最大的效率


      IP属地:浙江3楼2018-06-06 15:59
      回复
        众所周知,南瓜(西瓜)的收获可以通过感应来进行全自动收获。一片区域中只要出来一个南瓜,就会被立即收割
        但是在实际生存中应用后,玩家普遍发现了两个问题:
        1.活塞推动太多,导致fps降低。
        2.推活塞声音太吵。
        于是就有了以下设计,通过一个定时器或者通过一个阳光传感器来定时收割


        IP属地:浙江4楼2018-06-06 16:21
        回复
          我第一次看到这种改进过的设计就感觉这样修改过之后效率应该会降低很多。但是因为家里电脑还算过得去,并且在生存里南瓜机都是早的比较远的。所以我从来都是用第一种设计。
          所以现在算出了实际降低的效率之后我也觉得很震惊。毕竟凭我原来的感觉,效率再怎么低也是不会低到到一半以下的,可实际结果却远低于我的想象。


          IP属地:浙江5楼2018-06-06 16:26
          回复
            我不想让这个帖子变成一个学术讨论贴,所以不会对接下来的计算进行太多数学上的解释,列出计算仅仅是为了证明结果的严谨性。
            因为计算结果和我想象的差的太多,我还特地让我的数学老师进行相同计算(骗他说这是自招题他还真信了),得出的结果是和我一样的。不过也确实可能是有什么东西我们都没有考虑到,如果有发现的吧友希望及时帮我指出。


            IP属地:浙江6楼2018-06-06 16:30
            收起回复
              一般来说,大型南瓜机的设计都是一个瓜藤分配一个生长土地的。也就是说南瓜生长的总速度是和还没生长出来的南瓜数目成正比的。
              每个南瓜生长出的平均时间都是唯一确定的,所以我们先假设一个瓜藤单位时间内能长出的瓜数为τ(这个致我们之后会进行详细的计算,在此先假设我们已经有了明确的结果)。再假设这个南瓜机的空着的总瓜藤数为A(这个数就目前这种略为简化过的模型中是对降低百分比没有影响的,但之后我们会做一些修正)
              那么第一种设计——也就是瞬间收获的设计——经过时间t后的收获就可算了,显然是 τ x A x t
              而第二种设计的A是个关于距上一次收割时间t的函数:A(t),那么这个效率就不能用初等数学的方法算出来了。
              不过还好虽然补丁是个高中生,但是是一个学过高数的高中生。用积分可以轻松算出结果
              先写出A(t)的微分式:
              再积分:

              得到:
              于是:
              所以:
              最后效率比为:


              IP属地:浙江9楼2018-06-06 17:25
              回复(7)
                光看这个结果好像并不太直观,那我们就带一些数字进去
                其实我还没有算τ。。。因为这个帖子是我一边算一遍更新的,不过根据我的经验来看应该五分钟(300秒)左右会长一个南瓜出来。。。所以这里先用1/300来代替
                如果是使用8分钟一次的收割机的话,和第一种设计效率比就正好略低于0.5,也就是说效率只有一半了。
                如果是使用阳光传感器,也就是二十分钟收割一次的话,效率就只有0.245,连四分之一都不到。
                所以我个人推荐:除非实在电脑不允许,还是用第一种设计吧。


                IP属地:浙江10楼2018-06-06 17:33
                收起回复
                  广告
                  立即查看
                  接下来是一个各类农作物效率的计算。


                  IP属地:浙江11楼2018-06-06 17:36
                  回复
                    可能很多吧友不知道像小麦这样的农作物是有抢夺营养这个设定的(mc其实远比你想象的更加科学
                    补丁记得在14年的时候在youtube上看到过一个对这个机制进行简单讲解,但是现在去找却找不到了。。。同学和我说wiki上也有这个,但是我没有找到。。。


                    IP属地:浙江12楼2018-06-06 17:39
                    回复
                      不过还好我找到了mc的源码,研究了几天后搞清了很多东西,其中就包括农作物的生长机制
                      当然我们只要看有关的代码就好了。这段代码定义的就是植物生长的方法,我们来大致看一下。
                      首先农作物生长与否是和所处的世界、农作物的位置(这也是我们主要要讨论的)、农作物的状态来决定的。
                      第一步,只有光照≥9时农作物才会生长
                      再通过计算一个修正值,来计算接收方块刻后(如果不明白的吧友可以理解为一段时间后)农作物生长的几率


                      IP属地:浙江13楼2018-06-06 17:46
                      回复
                        我本来是打算把所有如何计算这个修正值的代码全部解释一遍。。。但是在记录下所有获得这个修正值的方法和包含这个方法的类和这个类的父类和这个父类的父类和。。。。之后我就放弃了,打算直接上结果
                        大体上这个修正值计算方式是这样的:如果下方耕地为干的,则为2;如果是湿的,则为4。
                        在此基础上看在下方耕地旁边的八个方块。这些方块,如果是干的耕地,每个加0.25,如果是湿的耕地,每个加0.75。
                        之后再看这个农作物旁边:
                        (如果四个对角线上任意一个地方有相同的农作物,那么这个值就除以2。
                        如果直接连接的四个方块,也就是x方向和z方向的四个方块,这两个方向如果同时有相同的农作物,那么这个值就除以2)
                        这两个除以二不会同时起效,也就是说就算同时满足了以上两个条件,这个值还是只会除以2,而不是除以4。
                        最后生长的几率就是 1 / (向上取整(25 / 修正值))


                        IP属地:浙江14楼2018-06-06 18:07
                        回复

                          所以说如果我们采用混种(右侧)的话,效率会比全部种一种农作物(左侧)高三分之二


                          IP属地:浙江17楼2018-06-06 18:41
                          回复
                            不过当然,生长并不代表成熟。不同作物成熟需要的生长次数也不同,还好这个可以从wiki查到。这里列出wiki查得到的
                            仙人掌:15
                            甘蔗:15
                            小麦:7
                            土豆:7
                            马铃薯:7
                            末影花:5
                            地狱疣:3
                            可可豆:2


                            IP属地:浙江18楼2018-06-06 19:08
                            收起回复
                              广告
                              立即查看
                              接下来我们算一算之前跳掉的一部分:南瓜生长速度
                              实际上这个东西算出来是没有太大用处的,毕竟你就算知道大概多久之后一个南瓜会长出来也不会让它长得快一些
                              不过这就好像我们罚抄题目的时候,明知去数还没抄的遍数只会浪费自己的时间,我们还是会去数
                              引用某位登山家的名言:为什么要计算mc中的每一个数据?因为它就在那里


                              IP属地:浙江22楼2018-06-06 19:23
                              收起回复