《编程农场》全成就指南

0 点赞
编程农场
转载

这是一篇关于《编程农场》全成就达成思路的指南。 请注意:本篇内容并不包含实现代码,而只是成就达成思路的提示。 介绍与提示 首先需要注意的是:本篇内容并不包含实现代码,而只是成就达成思路的提示。 也许有朋友会问——为什么呢?直接给代码难道不是更加干脆利落吗?这是因为: 这个游戏全成就范围内的内容不止要求写单段的小脚本,而鼓励玩家构建一个属于自己的方法库,如果直接挪用代码的话那么连通用库也需要一起搬过去——这样玩家自己本来花精力写的代码反而会成废笔,而可玩性则几乎丧失了; ——但如果真的需要参考代码,很多其他指南作者/讨论区玩家也发布了各自的实现代码!感谢他们! 还有就是我有些地方真的写的很不好…怯于示人哦(ˉ▽ ̄~) 《编程农场》在寓教于乐上可以说做得非常好,游戏中的各个植物/机制其实都对应了一些编程中常见的技巧和挑战。草和灌木——for循环和遍历 树——非紧密排布和循环用法拓展 胡萝卜——条件判断 南瓜——计数和存储 仙人掌——冒泡排序 恐龙——贪吃蛇寻路算法和哈密顿回路 迷宫——迷宫寻路算法(从基础的右手法则,到进阶的广度优先搜索、深度优先搜索甚至A*算法) 总而言之,本游戏是一个非常适合用于Python练手的小游戏,将耕种主题的增量游戏和Python自动化脚本编写非常巧妙地结合在了一起。如果只是浅尝一下,那么随自己喜好编写代码就好;但如果希望达成成就范围内的目标,这里有一些可能有帮助的提示:规范命名,对于常用的脚本用易读易辨认的英文命名,方便后续拓展引用;尽早建立通用方法库,减少反复编写重构简单逻辑的垃圾时间。推荐的通用方法包括不限于: goto:让无人机移动至指定坐标 浇水:判断土地是否达到目标湿度再决定是否浇水,以节省水量 以及各类植物以草地(clear())为起始的种植方法;人机协同,临门一脚/代码实现不了/实现过于复杂的时候不妨尝试手动介入(见识一下能工智人30万年的底蕴!) 不求最优但求能跑——这毕竟还是一个游戏,游戏的增量升级远比代码优化给到的提升强得多 【流程基本可获取成就】 ├技能树&简单增量相关

灌木丛 种植一丛灌木。

干草专业户 收获1000份干草。

胡萝卜 种植胡萝卜。 种植胡萝卜时,与其单独用一次遍历翻土,更推荐每经过一个地块时判断土地类型并决定是否翻土。

木材专业户 收获1000木材。

胡萝卜专业户 收获1000个胡萝卜。

树木 种植一棵树。 树的正北、正东、正西或正南方向地块上每存在一颗树,都会使其生长时间翻倍,所以树的理想种植排布应该是: 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1

南瓜 种植一棵南瓜。 种植南瓜时,最大收益自然是形成尽可能大的n*n南瓜饼。单无人机时,较优的方法是: 创建一个【已成熟地块】的列表,若当前地块已成熟则将坐标加入列表; for循环遍历坐标时如果坐标已经存在于【已成熟地块】,则直接跳过;若不存在,则调用goto函数前往坐标检查作物状态,决定是否再次种植; 这样可以避免无人机遍历所有地块,而只会径直前往下一个不存在于【已成熟地块】列表中的坐标。

南瓜专业户 收获1000个南瓜。

向日葵 种植一棵向日葵。 将向日葵的测量值存储在列表中,用【最大值函数】得出最优的可采收值,收获对应的向日葵即可。

能量专业户 收获1000能量。

仙人掌 种植一棵仙人掌。 与南瓜类似,但增加了二维矩阵的冒泡排序。 为了检测方便,可采用先横后竖的方法排序; 为一行(或一列)中坐标为(i,j)的仙人掌测量生长值并存储在字典中。例如:cache[(i, j)] = measure()。比较cache中相邻的元素,若均满足升序(无逆序对),则认为排序完成。例如:若cache[s,h] > cache[s + 1,h],则前往逆序元素队列坐标处,替换两者位置。 当排序完成后,统一收割所有成熟的仙人掌。

仙人掌专业户 收获1000仙人掌。

迷宫 生成一座迷宫。 *迷宫相关内容见后文

黄金专业户 收获1000黄金。

恐龙 装备恐龙帽。 恐龙相关内容见后文

骨头专业户 收获1000根骨头。

蒸蒸日上 扩张农场。

大型农场 农场达到最大规模。 ├程序相关

你好世界 运行你的第一个程序。

错误 造成一个运行时错误。 必得成就

无限循环 创建一个无限循环。 写一个while True即可

循环导入 创建一个导入循环。 建两个文件相互导入即可: 1. a.py import b def func_a(): print("这是a") b.func_b() 2. b.py import a def func_b(): print("这是b") a.func_a()

栈溢出 造成一次栈溢出。 在方法中调用自身导致溢出即可: def recurse(n): recurse(n + 1) recurse(1)

高阶编程 将一个函数作为参数传递给另一个函数。 如描述所说,函数本身也可以当作括号里的参数;无人机阵列的for_all(f)就是这样的一个函数传递 ├简单操作

杂技高手 来个后空翻。

时尚达人 装备一顶新帽子。

手感不错 抚摸小猪。

泥泞农场 让农场整体水位超过0.5。 无判断直接遍历浇水即可,可能需要升级一些无人机速度

宝藏猎人 解开一座填满整个农场的迷宫。 非常有用的全场迷宫生成: plant(Entities.Bush) substance = get_world_size() * 2**(num_unlocked(Unlocks.Mazes) - 1) use_item(Items.Weird_Substance, substance) 新手解迷宫推荐边走(一直靠左走/靠右走)算法,下面是一个极短且精巧的边走算法: def complete_maze(): ix, dirs = 0, [East, South, West, North] while get_entity_type() != Entities.Treasure: ix += 1 - move(dirs[ix % 4])*2 harvest()

妙手回春 治愈一株受感染的植物。 对感染的植物再次使用奇怪物质

长龙 让一只恐龙填满整个农场。 使用简单的哈密顿回路来布满农场。

巨型农场 使用多架无人机。 非常有用且易于拓展的多无人机阵列: def for_all(f): def row(): for _ in range(get_world_size()-1): f() move(East) f() for _ in range(get_world_size()): if not spawn_drone(row): row() move(North) └特殊操作

你搞错了 将一整片仙人掌按照错误的顺序排列。 如题,将大小比较逆转,达到左下大右上小的状态。需要额外注意一下边界情况。 我做的时候试了三四次才解锁,不知道是不是bug,不成功的朋友可以缩小农场大小再试试 更新:有玩家反应确实有触发问题,目前已知的情报: 1.全逆序排列后需要收割一下来触发成就解锁; 2.早期版本作者说确实没考虑到相同生长值绿仙人掌的情况,即存在绿色仙人掌就不行;所以即使全地块反向排布了但局部出现了生长值相等的情况也会判定“排序成功”了(但现在大概率修复了?); 3.最近的消息显示3x3和32x32排布都有玩家成功解锁的; 4另一个疑似bug的触发方法是在(0,0)位置种植一颗仙人掌,然后反复播种收割,这样可以直接解锁【相关内容】。

混沌编程 打开20个代码窗口。 只需打开,无需编写内容。

杂技大师 完成1000个后空翻。 可以在升级无人机速度后,编写循环程序挂机一段时间,也可以在解锁多无人机后,利用阵列功能一次性完成。

蜂群 同时使用32架无人机。 升级到最高级即可;到了这一阶段,推荐使用多无人机阵列结合之前的作物种植得到多无人机版本的种植方法,效率会高很多。

巨型南瓜 收获一颗32x32的南瓜。 需农场升级达到最大,种出全场南瓜(饼)

长度很重要 让一个恐龙的长度达到1000。 需农场升级达到最大,爬满哈密顿回路可达32*32=1024长度

时装秀 为5架无人机装备5顶不同的帽子。 注意分配给无人机的任务不能只是装备帽子,否则任务结束无人机就会消失。依然推荐用多无人机阵列,建立一个包含多种帽子的列表,让无人机按顺序佩戴并穿行农场即可。

循环利用 重复使用同一座迷宫300次。 迷宫的生成大小可调节。调整奇怪物质用量生成1*1(静止不动)或2*2迷宫(需要边走算法)后,不断对宝箱施加奇怪物质并计数300次,最后收割即可。

农业竞争 登上排行榜。 任意排行榜都可以,只需要跑完排行榜模拟登榜,而不用名列前茅 进阶成就 作物资源的竞速收获和巨量收获 这一部分开始是游戏比较棘手的地方,在进行以下这些成就挑战时,理想的情况是已经解锁了除???和高帽以外所有的升级项(也就是所有的效率/数值升级项)。 除此之外,其他效率增项如下: 保证水的储备量,运行时观察生长效率,如果植物生长跟不上无人机速度则提升触发浇水的水线阈值; 保证能量(非常重要)的储备量,直接倍增大部分效率; 使用多无人机序列种植; 特别的,对于干草、胡萝卜和木材:使用混合种植: 1.1. 满级混合种植提供800倍的产量加成,原本512的满级产量直接提升至409k; 2. 我尝试了【种植作物—派布无人机分身种植伴生作物—收获作物】的思路,但效率似乎没有预想中高; 3. 不过,按照列表顺序(干草→灌木→树→胡萝卜)种植,或者直接随机顺序种植,也能获得惊人产量。由于伴生作物的选择是随机的,伴生位恰好种到正确伴生植物的概率并不低,依然能得到期望为800/4(或是800/3?)的显著产量增幅。特别的,对于南瓜和仙人掌:农田升级之后场地会很大,虽然使用多无人机序列种植、排序速度飞快,但由于无人机相互之间的参数是无法传递的,南瓜和仙人掌即使排布好了可能也要检测很久。这时我们可以选择: 手动收割(更快更适合冲刺竞速收获成就),观察到成熟/排列完整后人工介入中断检测直接收割; 设定经验比例(不需要操作更适合挂巨量收获成就)。例如,单无人机种植南瓜时常用列表记录成熟南瓜坐标并与田地数量比较,而多无人机运行时,(成熟南瓜坐标列表长度)/(田地地块数量)在大于某个值时往往已经完全成熟了。(32*32+32无人机种植南瓜这个值大概在0.15-0.将这个经验值设为收获信号点可以极大节省时间。

干草大师 1分钟内收获2亿干草。

胡萝卜大师 1分钟内收获2亿胡萝卜。

木材大师 1分钟内收获10亿木材。

南瓜大师 1分钟内收获2000万南瓜。

仙人掌大师 1分钟内收获2000万仙人掌。

向日葵大师 1分钟内收获12000能量。

收获10亿干草。

木材大亨 收获10亿木材。

胡萝卜大亨 收获10亿胡萝卜。

南瓜大亨 收获1亿南瓜。

收获1亿仙人掌。

能量大亨 收获100000能量。 高阶资源的竞速收获和巨量收获 骨头和黄金的竞速收获都计算的是收获的平均效率; 一次恐龙探索中,骨头获得效率计算的是:【换帽时获得的骨头】/【从换上恐龙帽开始到换下恐龙帽的时间】; 一次迷宫探索中,黄金获得效率计算的是:【采收宝箱时获得的金币】/【建立迷宫开始到采收宝箱的时间】

恐龙大师 1分钟内收获100万骨头。 14*14农场大小跑满吃满头尾相接,可以刚好得到超过100万的骨头((14*14-1)²×32=1216800),也就是说只要在1分钟内跑满14*14大小农场即可解锁成就。保证充足的仙人掌和能量的情况下,如果只用哈密顿回环线路,花费的时间会恰好比1分钟多一些。 恐龙行走速度随着尾巴增长会逐渐增加,初期短尾时行走速度慢,所以沿哈密顿回路走会浪费很多时间。 我的方法是:当尾巴较短时(吃掉的苹果<14),直接使用【goto函数】移动到苹果坐标,当尾巴长度达标时,立刻更换行进策略,回到原点沿着哈密顿回路行进。第一阶段时经常会吃到尾巴,但没关系,吃到尾巴手动重开即可——因为我们只需要成功一次。 如果效率依然差一点点,可以尝试略微扩张农场大小至16*16或18*18,容错会高一些

迷宫大师 1分钟内收获200万黄金。 探索迷宫走到宝箱上方时,可以重新施加奇怪物质使迷宫反复刷新,期间迷宫的隔墙会逐渐消失,如果使用的是以宝箱坐标为导向的BFS/DFS走法,那么随着隔墙的减少,获得宝箱的速度也会越来越快,所以很容易想到用多无人机阵列同时探索32*32大迷宫获得最大乘数的金币。 ——但这是一个陷阱!或者说,有简单高效得多的方法提高金币采收效率: 因为我们总共有32架无人机,而这个数量足够多,足以铺满小型迷宫。

如图,可以用25架无人机铺满5×5的迷宫(也可以铺满2×4×4迷宫,这样能用上全部32架无人机效率更高),无论宝箱刷新到哪个位置,都能瞬间采收。重复施加奇怪物质宝箱坐标不动则可确定已经耗尽300轮循环,收获即可。 这个效率是远超出2M gold/1min的,目前无限制300轮迷宫排行榜前茅基本用的是这个方法。 260119更新,经评论区提醒目前版本因数值调整用25台无人机刷【迷宫大师】的方法在当前版本已经不管用了,但依然可以用2×4×4的暴力策略达成。

收获1亿骨头。 用【哈密顿回路】跑满32*32循环即可,可能要挂比较久的时间。

黄金大亨 收获1亿黄金。 用暴力破解同样能很快解锁。

然后呢? 解锁所有内容。 └最难成就

全自动化 登上【完全复位】排行榜。 最难的成就,也是整个游戏的终极挑战:设定好脚本后全程无介入直至运行至排行榜解锁。 使用之前的作物种植方法,但推荐微调一下重构成【种植xx直到存储量为num为止】的形式; 一步一调整,保证低阶资源储备,以供给高阶资源种植; 使用 quick_print(num_unlocked(Unlocks.解锁项目)) quick_print(num_unlocked(Unlocks.解锁项目, n))来检查各种升级或进阶升级需要的材料; 使用 if unlock(Unlocks.解锁项目: 通过quick_print('解锁项目 ok')来确认解锁是否成功; 优先升级农场大小和无人机速度,同时也要兼顾解锁各类植物的产量升级; 尤其需要注意的是,解锁了肥料之后对初级胡萝卜施肥无法得到奇怪物质!因为奇怪物质产量是胡萝卜的二分之一,但初级胡萝卜只有一点产量,所以解锁后至少需要对胡萝卜升级一次; 恐龙依然用哈密顿回路解即可; 迷宫尽可能使用BFS跑300层,也可以边走跑单层(比较慢)或攒一部分钱解锁多无人机暴力破解; 如果实在跑不通,可以参考相关攻略。⊡推荐的参考指南 入门参考: 比较简洁的自动种植收获: 关于迷宫解法的讨论: 用于最终成就的升级消耗查询: ⊡结尾