Python-《原神》荒海雷立方机关破解二

Posted 梦之海岛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-《原神》荒海雷立方机关破解二相关的知识,希望对你有一定的参考价值。

文章目录

前言

  • 因为之前已经写过一篇文章介绍过了《原神》雷立方机关破解的文章,算法思路大同小异,就不介绍算法思路了。
  • 在输入机关方向的时候得注意看每个机关的方向,机关在不亮的时候比较难发现机关的方向

Python3在线工具|菜鸟工具

Python index()方法 | 菜鸟教程

Python-《原神》荒海雷立方机关破解一

一、问题

机关的位置

标记一下5个机关,方便理解

经过测试,击打机关会造成至少两个机关发生顺时针旋转(包括击打的机关)

击打的机关顺时针旋转的机关
pos1pos1 pos3
pos2pos1 pos2 pos3
pos3pos1 pos3 pos5
pos4pos3 pos4 pos5
pos5pos3 pos5

当5个机关的方向一致的时候就会解开,设朝向我们的方向依次为a、b、c、d

二、代码

需要注意打的时候别打到其他的机关,否则就得重新用代码算一次了
例子一

例子二

# 功能:原神,荒海雷立法机关破解
def Move1(lis_now, direction):
    '''移动机关pos1,将会让pos1、pos3顺时针旋转'''
    lis_now[0] = direction[(direction.index(lis_now[0]) + 1) % len(direction)]  # 移动pos1
    lis_now[2] = direction[(direction.index(lis_now[2]) + 1) % len(direction)]  # 移动pos3
    return lis_now
def Move2(lis_now, direction):
    '''移动机关pos2,将会让pos1、pos2、pos3顺时针旋转'''
    lis_now[0] = direction[(direction.index(lis_now[0]) + 1) % len(direction)]  # 移动pos1
    lis_now[1] = direction[(direction.index(lis_now[1]) + 1) % len(direction)]  # 移动pos2
    lis_now[2] = direction[(direction.index(lis_now[2]) + 1) % len(direction)]  # 移动pos3
    return lis_now
def Move3(lis_now, dircetion):
    '''移动机关pos3,将会让pos1、pos3、pos5顺时针旋转'''
    lis_now[0] = direction[(direction.index(lis_now[0]) + 1) % len(direction)]  # 移动pos1
    lis_now[2] = direction[(direction.index(lis_now[2]) + 1) % len(direction)]  # 移动pos3
    lis_now[4] = direction[(direction.index(lis_now[4]) + 1) % len(direction)]  # 移动pos5
    return lis_now
def Move4(lis_now, direction):
    '''移动机关pos4,将会让pos3、pos4、pos5顺时针旋转'''
    lis_now[2] = direction[(direction.index(lis_now[2]) + 1) % len(direction)]  # 移动pos3
    lis_now[3] = direction[(direction.index(lis_now[3]) + 1) % len(direction)]  # 移动pos4
    lis_now[4] = direction[(direction.index(lis_now[4]) + 1) % len(direction)]  # 移动pos5
    return lis_now
def Move5(lis_now, direction):
    '''移动机关pos5,将会让pos3、pos5顺时针旋转'''
    lis_now[2] = direction[(direction.index(lis_now[2]) + 1) % len(direction)]  # 移动pos3
    lis_now[4] = direction[(direction.index(lis_now[4]) + 1) % len(direction)]  # 移动pos5
    return lis_now
if __name__ == "__main__":  # 主函数
    lis_now = []  # 机关当前的方向
    direction = ["a", "b", "c", "d"]  # 机关的方向标记,a为正确的方向
    answer = [0, 0, 0, 0, 0]  # 正确的答案
    result = ["a", "a", "a", "a","a"]
    # print(direction[(dirction.index("d") + 1) % len(dirction)]) #测试
    for i in range(5):  # 输入
        lis_now.append(input(f"机关posi + 1当前的方向:"))
    for i in range(4):  # 循环1
        answer = [0, 0, 0, 0, 0]  # 重置
        Move1(lis_now, direction)  # 触发pos1
        answer[0] = (answer[0] + 1) % 4  # 记录pos1击打的次数
        if lis_now == result:  # 找到答案时
            print(answer)
            exit
        for j in range(4):  # 循环2
            Move2(lis_now, direction)  # 触发pos2
            answer[1] = (answer[1] + 1) % 4  # 记录pos2击打的次数
            if lis_now == result:  # 找到答案时
                print(answer)
                exit
            for k in range(4):  # 循环3
                Move3(lis_now, direction)  # 触发pos3
                answer[2] = (answer[2] + 1) % 4  # 记录pos3击打的次数
                if lis_now == result:  # 找到答案时
                    print(answer)
                    exit
                for g in range(4):  # 循环4
                    Move4(lis_now, direction)  # 触发pos4
                    answer[3] = (answer[3] + 1) % 4  # 记录pos4击打的次数
                    if lis_now == result:  # 找到答案时
                        print(answer)
                        exit
                    for l in range(4):  # 循环5
                        Move5(lis_now, direction)  # 触发pos5
                        answer[4] = (answer[4] + 1) % 4  # 记录pos5击打的次数
                        if lis_now == result:  # 找到答案时
                            print(answer)
                            exit

以上是关于Python-《原神》荒海雷立方机关破解二的主要内容,如果未能解决你的问题,请参考以下文章

Python-《原神》荒海雷立方机关破解一

Python-《原神》荒海雷立方机关破解一

扣达世界计算机科学二第31关森林矿工怎么过

HihoCoder1182 欧拉路(Fleury算法)

党政机关文件柜控制板定制设计 PC机远程监控 手机远程监控

党政机关公文格式