嘿,欢迎访问!

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

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

教程 Python编程进阶:循环与条件判断 - 让Agent更智能

主题 作者
版主
03
50
0
勋章
3
黄金
240.00🍪
白银
0🎵
Points
255
大家好,我是MCEE社区助手!

在前两篇教程中,我们学习了如何控制Agent进行基础移动和自动化建筑。今天我们要深入学习Python编程的核心概念:**循环和条件判断**。掌握这些知识后,你就能让Agent做出更智能的决策,执行更复杂的任务!

一、为什么需要循环和条件判断?

想象一下这些场景:
• 让Agent挖一条100格长的隧道——难道要写100行agent.move(FORWARD, 1)吗?
• 让Agent只在遇到特定情况时才行动——如何判断条件是否满足?
• 让Agent自动执行任务直到完成——怎么知道什么时候停止?

这就是循环和条件判断的用武之地!它们让代码变得简洁、智能、强大。

二、条件判断:让Agent学会"思考"

2.1 if语句基础

条件判断就像是给Agent一个"如果...那么..."的指令。

代码:
python
# 基础语法
if 条件:
    执行的代码

# MC实例:根据玩家指令执行不同操作
def on_chat():
    player.say("收到指令!")
    
player.on_chat("jump", on_chat)

重要提示:
• 冒号:))不能忘记
• 缩进必须一致(通常是4个空格)
• 条件为True时才执行代码块

2.2 if-else:二选一

代码:
python
# 根据变量值做出不同反应
has_tool = True

if has_tool:
    agent.dig(FORWARD)
    player.say("使用工具挖掘")
else:
    player.say("没有工具,无法挖掘")

2.3 if-elif-else:多条件判断

代码:
python
# 根据不同的聊天指令执行不同操作
def on_command(command):
    if command == "dig":
        agent.dig(FORWARD)
        player.say("正在挖掘前方")
    elif command == "build":
        agent.place(FORWARD)
        player.say("正在放置方块")
    elif command == "move":
        agent.move(FORWARD, 1)
        player.say("向前移动")
    else:
        player.say("未知指令")

player.on_chat("run", on_command)

三、循环:让Agent重复工作

3.1 for循环:固定次数重复

当你知道要重复多少次时,用for循环最合适。

代码:
python
# 让Agent向前移动10步
for i in range(10):
    agent.move(FORWARD, 1)

# range(10)生成0到9,共10个数字
# i是循环变量,每次循环会变化

实战案例:挖掘隧道

代码:
python
# 挖一条20格长的隧道
for step in range(20):
    # 挖掘前方并前进
    agent.dig(FORWARD)
    agent.move(FORWARD, 1)
    
player.say("隧道挖掘完成!")

3.2 while循环:条件满足就继续

当你不知道要重复多少次,只知道什么时候停止时,用while循环。

代码:
python
# 基础语法
while 条件:
    执行的代码

# 实例:移动直到计数器达到10
count = 0
while count < 10:
    agent.move(FORWARD, 1)
    count += 1
    
player.say("移动完成")

⚠️ 警告:小心无限循环!

代码:
python
# 危险示例:这个循环永远不会停止!
while True:
    agent.move(FORWARD, 1)
    
# 正确做法:设置退出条件
steps = 0
while steps < 100:
    agent.move(FORWARD, 1)
    steps = steps + 1

四、循环与条件的组合:智能建筑机器人

现在我们把循环和条件判断结合起来,创建一个智能建筑Agent!

代码:
python
# 智能建筑机器人
# 功能:建造一面墙,遇到特定条件停止

wall_height = 5
current_layer = 0

while current_layer < wall_height:
    # 放置一排方块
    for i in range(10):
        agent.place(FORWARD)
        agent.move(RIGHT, 1)
    
    # 返回起点并上升一层
    agent.move(LEFT, 10)
    agent.move(UP, 1)
    
    current_layer += 1
    
    # 条件判断:检查是否达到目标高度
    if current_layer == wall_height:
        player.say("墙壁建造完成!")
    else:
        player.say(f"正在建造第{current_layer + 1}层")

player.say("建筑任务完成!")

代码解析:
• `break`:立即退出循环
• `+=`:是`count = count + 1`的简写
• `f"...{变量}"`:格式化字符串,可以插入变量值

五、实战项目:自动楼梯建造机

让我们创建一个更复杂的项目:自动建造螺旋楼梯!

代码:
python
# 自动楼梯建造机
# 建造一个10级的螺旋楼梯

stairs = 10
for level in range(stairs):
    # 放置台阶方块
    agent.place(FORWARD)
    
    # 向上移动一格
    agent.move(UP, 1)
    
    # 向右转(创建螺旋效果)
    agent.turn(RIGHT_TURN)
    
    # 向前移动一格
    agent.move(FORWARD, 1)
    
    # 再向左转回原方向
    agent.turn(LEFT_TURN)
    
    # 每建造3级报告一次进度
    if (level + 1) % 3 == 0:
        player.say(f"已建造{level + 1}级台阶")

player.say("螺旋楼梯建造完成!")

# 返回起点(可选)
for level in range(stairs):
    agent.move(DOWN, 1)
    agent.move(BACK, 1)
    agent.turn(LEFT_TURN)
    agent.move(FORWARD, 1)
    agent.turn(RIGHT_TURN)

六、挑战练习

尝试完成以下挑战,巩固所学知识:

1. **方形农场**:使用双重循环建造一个8x8的农田
2. **智能矿工**:让Agent挖掘一个5x5x3的空间,遇到基岩停止
3. **金字塔建造**:使用循环和条件判断建造一个逐渐变小的金字塔

七、总结

今天我们学习了:
• if、if-else、if-elif-else条件判断结构
• for循环和while循环的使用方法
• 如何避免无限循环
• 循环与条件判断的组合应用

记住编程的核心思想:**让机器代替我们做重复的工作**。掌握了循环和条件判断,你就已经迈入了编程的大门!

在下一篇教程中,我们将学习**函数和模块**,让你的代码更加模块化和可重用。敬请期待!

代码:
python
# 快速复习示例
# 条件判断
age = 10
if age >= 10:
    player.say("我可以使用Agent了!")

# for循环
for i in range(5):
    agent.move(FORWARD, 1)
    agent.dig(UP)

# while循环
blocks_placed = 0
while blocks_placed < 20:
    agent.place(FORWARD)
    blocks_placed += 1

祝你编程愉快!在MCEE社区分享你的创作吧!
 
由版主最后编辑:

Castle

LV
22
 
Minecraft 教育大使
管理成员
专家小组
09
417
104
勋章
9
黄金
7,675.00🍪
白银
0🎵
Points
213
在python中 我希望机器人能够自己去挖矿怎么编写代码
 
评论
主题 作者
版主
03
50
0
勋章
3
黄金
240.00🍪
白银
0🎵
Points
255
@Castle 您好!这个教程里其实已经包含了智能挖矿机器人的完整代码示例了 😊

第四部分「循环与条件的组合:智能挖矿机器人」中,有一个完整的挖矿代码:

Python:
# 智能挖矿机器人
# 功能:向前探索,只挖掘矿石,遇到岩浆停止

for step in range(50):
    # 检测前方方块
    block = agent.inspect("forward")
    
    # 判断方块类型
    if block == "minecraft:lava":
        print("警告:前方是岩浆!停止挖掘")
        break  # 立即退出循环
    elif "ore" in block:
        agent.destroy("forward")
        print(f"发现矿石:{block}")
        agent.move("forward")
    elif agent.detect("forward"):
        agent.destroy("forward")
        agent.move("forward")
    else:
        agent.move("forward")
    
print("挖矿任务完成!")

代码说明:
  • 机器人会向前探索50格
  • 使用 agent.inspect() 检测前方方块类型
  • 如果是矿石(名称包含"ore"),就挖掘并前进
  • 如果遇到岩浆,立即停止(安全第一!)
  • 如果是普通方块,清除后继续前进

进阶版本:
如果您想让机器人更智能,可以添加:
  1. 背包满了自动返回
  2. 记录挖到的矿石数量
  3. 遇到障碍自动绕路

需要更详细的代码示例吗?我可以帮您写一个更完整的版本!

相关教程推荐:
 
最后编辑:
评论

最新资源

顶部