猫史档案馆


【Python作品分享】Minecraft求解要塞坐标工具【作品秀】

用户:SUS丶UnSUS丶Un查看:4 回复:5 评论:4 创建时间:2020-07-08T14:31:45


【作品展示】

center_image

 

【作品介绍】

Minecraft求解要塞坐标工具

只需两颗定位要塞

具体操作及原理分析:https://www.bilibili.com/video/BV1PJ411E72J

 

【作品源代码】

'''
    有了这个程序,妈妈再也不用担心我找不到要塞了~
    程序C语言版本为B站小泠君丶所作,Python版本为B站SUS丶城垣所作
    C语言源码喵NTFago/MC-yaosai-solve
    原理分析以及具体操作:https://www.bilibili.com/video/BV1PJ411E72J
    SUS丶Un个人首页:https://ntfago.github.io 欢迎来访~
    Python版有任何BUG请私信我: B站UID:355858066 QQ:2330153227
'''

print('''Minecraft 求解地牢坐标工具(Python版),制作SUS丶Un(萧垣)
        原程序编码格式为C语言,作者为B站小泠君丶
        C语言源码https://github.com/NTFago/MC-yaosai-solve
        原理分析以及具体操作:https://www.bilibili.com/video/BV1PJ411E72J \n\n''')
print('-------------现在,请输入你的测量数据--------------')

# -----------------数据采集-------------------
x = []         # 原地坐标列表
y = []         # 落地点坐标列表
for i in range(1, 4):
    x1 = float(input(f"请输入第{i}次原地x坐标:"))
    x.append(x1)
    y1 = float(input(f"请输入第{i}次原地y坐标:"))
    y.append(y1)
    x2 = float(input(f"请输入第{i}次末影珍珠落地x坐标:"))
    x.append(x2)
    y2 = float(input(f"请输入第{i}次末影珍珠落地y坐标:"))
    y.append(y2)
# print(x)
# print(y)

# --------------求解一次函数解析式-------------
k = []
b = []
j = 0
for i in range(3):
    k1 = round((y[j+1]-y[j])/(x[j+1]-x[j]), 3)
    b1 = round((y[j] - x[j]*k1), 3)
    j += 2
    k.append(k1)
    b.append(b1)
# print(k)
# print(b)

# -------------------求交点---------------------
Rx = []
Ry = []
for i in range(2):  # 这里求得1-2/2-3解析式交点
    Rx1 = round((b[i]-b[i+1])/(k[i+1]-k[i]), 3)
    Ry1 = round(Rx1*k[i]+b[i], 3)
    Rx.append(Rx1)
    Ry.append(Ry1)

Rx2 = round((b[2]-b[0])/(k[0]-k[2]), 3) # 求解1-3交点
Ry2 = round(Rx2*k[2]+b[2])
Rx.append(Rx2)
Ry.append(Ry2)
# print(Rx)
# print(Ry)

# ----------------误差分析计算区-----------------
# 排序
re_Rx = sorted(Rx)
re_Ry = sorted(Ry)
# 此时大小排列:Rx[0]>Rx[1]>Rx[2] 即L=Rx[0]-Rx[2]
RL=0.5*(re_Rx[0]+re_Rx[2])
RH=0.5*(re_Ry[0]+re_Ry[2])

# ----------------------结果输出-----------------
print(f"计算成功!要塞位于({RL}, {RH})\n\n")
print("-----------------调试信息--------------")
for i in range(1,4):
    print(f'确认输入:第{i}次({x[i]},{y[i]})')
print(f'确认交点:({RL}, {RH})')
input('按回车键退出程序')

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
StarGameStarGame

大佬的世界咱不懂

点赞0


评论


lsk666666lsk666666

emmmmmm

点赞0


评论


無一郎無一郎

emotion_编程猫_点赞

点赞0


评论


SUS丶UnSUS丶Un

更新啦更新啦,要塞求解更新啦~

要塞求解v1.1 修复一些已知错误

新作品指路:https://shequ.codemao.cn/community/319695

点赞1


评论


优秀的盒子精优秀的盒子精

666

点赞0


评论