嘿,欢迎访问!

这里是全球最大的Minecraft(我的世界)教育版中文论坛社区
覆盖100+国家,分享最新的资源和攻略

立即注册 购买教育版授权账户
  • 欢迎 游客 光临!为了营造一个安全、和谐的社区环境,请遵守平台规范,文明交流,友善互动!。
    ⚠️ 重要提示 ,警惕诈骗 本论坛未与任何其他团队或盈利单位合作,请认准唯一官方团队“基岩科技”。⚠️
  • 目前免费账户已经补充,可以正常领取啦

教程 植树造林解析III

主题 作者

TigerEE

LV
21
 
木头
10
65
25
勋章
8
黄金
1,125.00🍪
白银
0🎵
Points
0
各位好,今天是11月5日,周六,我又回来了。
本期会是植树造林解析的终章,后面我会制作更多的教程。
话不多说,打开你的MCEE,开始写代码吧!
上次,我们将种树苗(一棵)的代码封装(将一段代码写进一个函数里),今天,我们要彻底完成植树造林项目。
首先,我们要让每一列的最后一格种上树苗,这很简单,不用我多说。看了第II章的应该明白。
接下来,我们要让智能体去到下一列的开头。这时候,我们需要用到下面几个语句:
[/COLOR] agent.get_position() # 1 agent.get_orientation() # 2 agent.teleport(pos, direction) # 3 position.get_value(Axis.X) # Axis.X又可替换为Asix.Y或Asix.Z, 4 x + y # 5, 扩展学习 x - y # 6 world(x, y, z) # 7
一共7条语句,其中 1, 4, 6, 7我们是学过的,我们就来讲2, 3, 5。
先从最简单的5号看起。一个+号,凡是上过小学的明白,这条语句是将两个数相加得结果。
接下来,我们看2号。
orientation n.方向
所以我们可以知道,这条语句是用来获取智能体方向的,在我们的项目中,这个值的结果应该是WEST。
最后是3号。
玩MC的大多数人应该都知道这么一条指令: /tp position(指代任意坐标) (最基础用法)
这里的tp正是3号语句中teleport(v.传送)的缩写。
同/tp一样,这个方法有一个direction参数(argument)。关于参数,之后的项目中会详细介绍。
这时候,就可以配合2号语句了。
现在,开始写代码吧!

首先,agent要传送,先写下一句:
agent.teleport()
接下来,求位置。
x:5 y:代理机器人y z:代理机器人z-1
即:
world(5, agent.get_position().get_value(Axis.Y),\ agent.get_position().get_value(Axis.Z) - 1) # 不懂的去看植树造林解析I
把这整段塞进agent.teleport里,然后打个英文逗号,在逗号后面输入
agent.get_orientation()
随后,将for i in range(13)开始的所有代码包进一个range(8)的for循环(for loop)内。
先输入:
for i in range(8):
在选中:
for i in range(13): place_sapling() agent.move(FORWARD, 1) place_sapling() agent.teleport(world(5, agent.get_position().get_value(Axis.Y),\ agent.get_position().get_value(Axis.Z) - 1), agent.get_orientation())
按下tab即可。
这时测试,天哪,agent.get_orientation()出bug了。
在这里,由于bug,只能使用WEST替代。
无bug时,可以使用其给项目代码增加灵活性。
接下来,这就是项目的最终代码了:
def place_sapling(): if not blocks.test_for_block(PODZOL, world(agent.get_position().get_value(Axis.X), agent.get_position().get_value(Axis.Y) - 1,\ agent.get_position().get_value(Axis.Z))): agent.place(DOWN) for j in range(8): for i in range(13): place_sapling() agent.move(FORWARD, 1) place_sapling() agent.teleport(world(5, agent.get_position().get_value(Axis.Y),\ agent.get_position().get_value(Axis.Z) - 1), WEST)
好了,我们下个项目见,拜拜!
 

附件

  • minecraft-Makeblock-Project-植树造林解析第三部分.zip
    1.8 KB · 查看: 241

最新资源

顶部