TigerEE
LV
21
木头
- 10
- 65
- 25
- 勋章
- 8
- 黄金
- 1,125.00🍪
- 白银
- 0🎵
- Points
- 0
各位好,今天是11月5日,周六,我又回来了。
本期会是植树造林解析的终章,后面我会制作更多的教程。
话不多说,打开你的MCEE,开始写代码吧!
上次,我们将种树苗(一棵)的代码封装(将一段代码写进一个函数里),今天,我们要彻底完成植树造林项目。
首先,我们要让每一列的最后一格种上树苗,这很简单,不用我多说。看了第II章的应该明白。
接下来,我们要让智能体去到下一列的开头。这时候,我们需要用到下面几个语句:
一共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要传送,先写下一句:
接下来,求位置。
x:5 y:代理机器人y z:代理机器人z-1
即:
把这整段塞进agent.teleport里,然后打个英文逗号,在逗号后面输入
随后,将for i in range(13)开始的所有代码包进一个range(8)的for循环(for loop)内。
先输入:
在选中:
按下tab即可。
这时测试,天哪,agent.get_orientation()出bug了。
在这里,由于bug,只能使用WEST替代。
无bug时,可以使用其给项目代码增加灵活性。
接下来,这就是项目的最终代码了:
好了,我们下个项目见,拜拜!
本期会是植树造林解析的终章,后面我会制作更多的教程。
话不多说,打开你的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)
好了,我们下个项目见,拜拜!