我的世界python代码_用Python在“我的世界”里建一个既能看时间又能当地标的大钟...

e7cd7b899e510fb38dfe9d2cd2a0b291d0430c39.png?token=9e29221de5e034c3655f9c673f3828f0&s=D43BE37AD674199CEB93CC11030050DB

在“我的世界”的天空里创建一个大表,来显示真实世界的时间。这样不仅可以使天空更加多彩,而且还能作为一个地标。当你浪的离家太远找不到归家的路了,只要在天空中看见它,你就会知道离家不远了。

77094b36acaf2eddf189df1585837bed3801936d.jpeg?token=c0f4ed90ae961c24650e4f2e73fbf744&s=F21C7E8657A3D8E45A2B826E03007078

Python语言现在很火爆,都火爆到了我的世界里来了。这样也给了玩家在命令方块外多了一种选择。废话少说,上代码:

import mcpi.minecraftstuff as minecraftstuf

minecraftstuff模块是Minecraft的一个扩展模块,专门用来处理2D和3D技术,可以用来画线、画圆、画球体啥的~~。所以,我们先要导入“import”这个模块。

def findPointOnCircle(cx, cy, radius, angle):x = cx + math.sin(math.radians(angle)) * radius y = cy + math.cos(math.radians(angle)) * radius x = int(round(x, 0)) y = int(round(y, 0)) return(x,y)

7aec54e736d12f2e382de7f84451af6684356891.png?token=b16df9814a4c112d321b1079b7f2ad4d&s=1EF3C601C2D908656801AC9103008086

创建一个函数,用于取得点在圆上的X、Y、Z坐标。这里需要使用三角函数(同学要好好学数学哟)。传入的参数是圆心的坐标,半径与角度。由于计算三角函数用到的是弧度,所以需要进行角度与弧度的转换。

mc = minecraft.Minecraft.create() mcdrawing = minecraftstuff.MinecraftDrawing(mc)

联接Minecraft,并创建出mcdrawing对象。以后画线的事就靠着这个的对象了。

pos = mc.player.getTilePos() clockMiddle = pos clockMiddle.y = clockMiddle.y + 25

取得玩家的位置坐标,然后在Y坐标上增加25个方块,来作为这个大钟的圆心坐标。

CLOCK_RADIUS = 20 HOUR_HAND_LENGTH = 10 MIN_HAND_LENGTH = 18 SEC_HAND_LENGTH = 20

定义时钟的圆半径以及时钟的时针、分针、秒针的长度。

mcdrawing.drawCircle(clockMiddle.x, clockMiddle.y, clockMiddle.z,CLOCK_RADIUS, block.DIAMOND_BLOCK.id)

调用mcdrawing函数将表盘画出来。这里是使用钻石方块完成的这件事。强烈建议玩我的世界时用英文,这样会提高使用命令方块与Python时的效率。

while True:

创建一下循环体。在循环体里面绘制时钟的时针、分针与秒针。

timeNow = datetime.datetime.now()

取得当前的时间,是真实世界的时间哟,可不是我的世界里的时间~~。

hours = timeNow.hour if hours >= 12: hours = timeNow.hour - 12 minutes = timeNow.minute seconds = timeNow.second

分别取得时、分、秒。

hourHandAngle = (360 / 12) * hours

根据当前的小时所处的时间换算出其偏转的角度。

hourHandX, hourHandY = findPointOnCircle(clockMiddle.x, clockMiddle.y,HOUR_HAND_LENGTH, hourHandAngle)

调用前面的findPointOnCircle函数,传入的参数是时钟的圆心X、Y坐标,时针的长度和当前偏转的角度。

mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z,hourHandX, hourHandY,clockMiddle.z,block.DIRT.id)

调用画线函数,从圆心到上一步取得的坐标画出时针。这里使用的材料是泥块,你可以根据个人喜好调整为其他的砖块。以此类推分别用自己喜欢的方块画出分针与秒针,注意分针与秒针取角度都是360/60。

time.sleep(1)

系统“睡”一秒钟,然后开始用空气方块替代掉原先的时、分、秒针。

mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z,hourHandX, hourHandY, clockMiddle.z,block.AIR.id)

分针与秒针的思路一样,不再重复。然后是没完没了的循环~~

267e05578a2ac2256d44cf6693b93d7e8357.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值