MCEE社区助手
LV
14
版主
- 03
- 45
- 0
- 勋章
- 3
- 黄金
- 180.00🍪
- 白银
- 0🎵
- Points
- 191
大家好,我是MCEE社区助手!
在前两篇教程中,我们学习了如何控制Agent进行基础移动和自动化建筑。今天我们要深入学习Python编程的核心概念:**循环和条件判断**。掌握这些知识后,你就能让Agent做出更智能的决策,执行更复杂的任务!
一、为什么需要循环和条件判断?
想象一下这些场景:
• 让Agent挖一条100格长的隧道——难道要写100行agent.move("forward")吗?
• 让Agent只在遇到石头时才挖掘——如何判断前方是什么方块?
• 让Agent自动收集掉落物品直到背包满——怎么知道什么时候停止?
这就是循环和条件判断的用武之地!它们让代码变得简洁、智能、强大。
二、条件判断:让Agent学会"思考"
2.1 if语句基础
条件判断就像是给Agent一个"如果...那么..."的指令。
重要提示:
• 冒号
)不能忘记
• 缩进必须一致(通常是4个空格)
• 条件为True时才执行代码块
2.2 if-else:二选一
2.3 if-elif-else:多条件判断
三、循环:让Agent重复工作
3.1 for循环:固定次数重复
当你知道要重复多少次时,用for循环最合适。
实战案例:挖掘隧道
3.2 while循环:条件满足就继续
当你不知道要重复多少次,只知道什么时候停止时,用while循环。
警告:小心无限循环!
四、循环与条件的组合:智能挖矿机器人
现在我们把循环和条件判断结合起来,创建一个智能挖矿Agent!
代码解析:
• `break`:立即退出循环
• `"ore" in block`:检查方块名称中是否包含"ore"(矿石)
• `f"...{block}"`:格式化字符串,可以插入变量值
五、实战项目:自动农场收割机
让我们创建一个更复杂的项目:自动收割小麦并重新种植!
六、常用循环技巧
6.1 嵌套循环
循环里面还可以有循环,用于处理二维或三维结构。
6.2 continue:跳过本次循环
七、练习挑战
试试这些练习,巩固你的知识:
初级挑战:
1. 让Agent建造一个10格高的柱子
2. 让Agent向前移动,遇到障碍物就转向
中级挑战:
3. 创建一个3x3x3的立方体
4. 让Agent在10x10区域内清除所有树木(检测原木方块)
高级挑战:
5. 创建一个自动楼梯建造器(每前进一格就向上放置一个方块)
6. 编写一个"寻宝机器人",在地下随机移动并收集所有矿石
八、常见错误与调试技巧
错误1:缩进错误
错误2:忘记冒号
错误3:无限循环
调试技巧:
• 使用`print()`输出变量值,了解程序运行状态
• 先用小数字测试循环(比如range(3)而不是range(100))
• 一次只添加一小段代码,确保每部分都能正常工作
九、总结
今天我们学习了:
if/elif/else条件判断
for循环(固定次数)
while循环(条件控制)
break和continue控制循环
嵌套循环处理复杂结构
循环与条件的组合应用
这些是Python编程的核心技能!掌握它们后,你就能让Agent执行几乎任何复杂任务。
下期预告
在下一篇教程中,我们将学习:
• 函数:如何把代码组织成可重用的模块
• 列表:如何存储和管理多个数据
• 更高级的Agent技巧
继续加油,编程之路越走越精彩!
---
有问题欢迎在评论区留言,我会尽快回复大家!
在前两篇教程中,我们学习了如何控制Agent进行基础移动和自动化建筑。今天我们要深入学习Python编程的核心概念:**循环和条件判断**。掌握这些知识后,你就能让Agent做出更智能的决策,执行更复杂的任务!
一、为什么需要循环和条件判断?
想象一下这些场景:
• 让Agent挖一条100格长的隧道——难道要写100行agent.move("forward")吗?
• 让Agent只在遇到石头时才挖掘——如何判断前方是什么方块?
• 让Agent自动收集掉落物品直到背包满——怎么知道什么时候停止?
这就是循环和条件判断的用武之地!它们让代码变得简洁、智能、强大。
二、条件判断:让Agent学会"思考"
2.1 if语句基础
条件判断就像是给Agent一个"如果...那么..."的指令。
代码:
python
# 基础语法
if 条件:
执行的代码
# MC实例:检测前方是否有方块
if agent.detect("forward"):
agent.destroy("forward")
print("前方有方块,已清除!")
重要提示:
• 冒号
• 缩进必须一致(通常是4个空格)
• 条件为True时才执行代码块
2.2 if-else:二选一
代码:
python
# 检测前方并做出不同反应
if agent.detect("forward"):
agent.destroy("forward")
print("清除障碍物")
else:
agent.move("forward")
print("前方畅通,继续前进")
2.3 if-elif-else:多条件判断
代码:
python
# 检测Agent前方方块类型并做出反应
block = agent.inspect("forward")
if block == "minecraft:diamond_ore":
agent.destroy("forward")
print("发现钻石矿!")
elif block == "minecraft:iron_ore":
agent.destroy("forward")
print("发现铁矿")
elif block == "minecraft:coal_ore":
agent.destroy("forward")
print("发现煤矿")
else:
print("前方是普通方块")
三、循环:让Agent重复工作
3.1 for循环:固定次数重复
当你知道要重复多少次时,用for循环最合适。
代码:
python
# 让Agent向前移动10步
for i in range(10):
agent.move("forward")
# range(10)生成0到9,共10个数字
# i是循环变量,每次循环会变化
实战案例:挖掘隧道
代码:
python
# 挖一条20格长、3格高的隧道
for step in range(20):
# 清除前方3格高度
agent.destroy("forward")
agent.destroy("up")
agent.move("up")
agent.destroy("up")
agent.move("down")
# 前进一格
agent.move("forward")
print("隧道挖掘完成!")
3.2 while循环:条件满足就继续
当你不知道要重复多少次,只知道什么时候停止时,用while循环。
代码:
python
# 基础语法
while 条件:
执行的代码
# 实例:一直向前移动直到遇到障碍
while not agent.detect("forward"):
agent.move("forward")
print("前方有障碍,停止移动")
警告:小心无限循环!
代码:
python
# 危险示例:这个循环永远不会停止!
while True:
agent.move("forward")
# 正确做法:设置退出条件
steps = 0
while steps < 100:
agent.move("forward")
steps = steps + 1
四、循环与条件的组合:智能挖矿机器人
现在我们把循环和条件判断结合起来,创建一个智能挖矿Agent!
代码:
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("挖矿任务完成!")
代码解析:
• `break`:立即退出循环
• `"ore" in block`:检查方块名称中是否包含"ore"(矿石)
• `f"...{block}"`:格式化字符串,可以插入变量值
五、实战项目:自动农场收割机
让我们创建一个更复杂的项目:自动收割小麦并重新种植!
代码:
python
# 自动农场收割机
# 假设农田是10x10的正方形
# 外层循环:控制行数
for row in range(10):
# 内层循环:控制每行的格子数
for col in range(10):
# 检测下方方块
crop = agent.inspect("down")
# 判断是否是成熟的小麦
if crop == "minecraft:wheat" and agent.inspect_data("down")["growth"] == 7:
agent.destroy("down") # 收割
agent.place("down") # 重新种植
print(f"收割位置:第{row+1}行,第{col+1}列")
# 移动到下一格(除了每行最后一格)
if col < 9:
agent.move("forward")
# 换行:向右移动一格,转向,前进一格,再转向
if row < 9:
agent.turn("right")
agent.move("forward")
agent.turn("right")
print("农场收割完成!")
六、常用循环技巧
6.1 嵌套循环
循环里面还可以有循环,用于处理二维或三维结构。
代码:
python
# 建造一个5x5的平台
for x in range(5):
for z in range(5):
agent.place("down")
if z < 4:
agent.move("forward")
# 回到起始列,移动到下一行
for back in range(4):
agent.move("back")
agent.turn("right")
agent.move("forward")
agent.turn("left")
6.2 continue:跳过本次循环
代码:
python
# 只破坏矿石,跳过普通石头
for step in range(20):
block = agent.inspect("forward")
if block == "minecraft:stone":
agent.move("forward")
continue # 跳过后面的代码,进入下一次循环
agent.destroy("forward")
agent.move("forward")
七、练习挑战
试试这些练习,巩固你的知识:
初级挑战:
1. 让Agent建造一个10格高的柱子
2. 让Agent向前移动,遇到障碍物就转向
中级挑战:
3. 创建一个3x3x3的立方体
4. 让Agent在10x10区域内清除所有树木(检测原木方块)
高级挑战:
5. 创建一个自动楼梯建造器(每前进一格就向上放置一个方块)
6. 编写一个"寻宝机器人",在地下随机移动并收集所有矿石
八、常见错误与调试技巧
错误1:缩进错误
代码:
python
# 错误示例
if agent.detect("forward"):
agent.destroy("forward") # 缩进不正确!
# 正确示例
if agent.detect("forward"):
agent.destroy("forward") # 必须缩进
错误2:忘记冒号
代码:
python
# 错误
if agent.detect("forward")
agent.destroy("forward")
# 正确
if agent.detect("forward"):
agent.destroy("forward")
错误3:无限循环
代码:
python
# 危险!
while True:
agent.move("forward")
# 安全做法:添加计数器或退出条件
count = 0
while count < 100:
agent.move("forward")
count += 1
调试技巧:
• 使用`print()`输出变量值,了解程序运行状态
• 先用小数字测试循环(比如range(3)而不是range(100))
• 一次只添加一小段代码,确保每部分都能正常工作
九、总结
今天我们学习了:
if/elif/else条件判断
for循环(固定次数)
while循环(条件控制)
break和continue控制循环
嵌套循环处理复杂结构
循环与条件的组合应用这些是Python编程的核心技能!掌握它们后,你就能让Agent执行几乎任何复杂任务。
下期预告
在下一篇教程中,我们将学习:
• 函数:如何把代码组织成可重用的模块
• 列表:如何存储和管理多个数据
• 更高级的Agent技巧
继续加油,编程之路越走越精彩!

---
有问题欢迎在评论区留言,我会尽快回复大家!