案例要求
动态监测玩家位置,只有当玩家站到某个位置时,游戏才会输出“welcome home!”。
需求分析
- 动态监测玩家位置,需要用到前面讲到的while循环语句
- 判定玩家站到某个位置时,需要用到上节课讲到的判断语句
- 玩家站到某个位置时,退出动态监测,游戏输出“welcome home”!
游戏操作:
在游戏中放置一块地毯,并记录下这块地毯的位置
1.按E键打开背包,在装饰性方块中找到 地毯,拖到下方的物品栏中,按E键关闭背包
2.滚动鼠标滚轮,将地毯设为当前物品,鼠标右键放置一块地毯。
3.按F3查看信息,将鼠标左键指向地毯(即黑色实线框指向地毯),获取屏幕上
Looking at:后面的3个数值,即为地毯的位置,这里为-112 68 -260,练习时要重新获取游戏中地毯的具体坐标。
4,操作游戏,将玩家的位置移动到其他位置。移动玩家时,屏幕上不断输出玩家所在位置,当玩家移动到我们实现放置的地毯上时,屏幕输出welcome home!,程序终止,游戏屏幕上不再输出内容。
代码实现:
import mcpi.minecraft as minecraft
mc = minecraft.Minecraft.create()
while True:
pos = mc.player.getTilePos()
mc.postToChat("x=" + str(pos.x) + "y=" + str(pos.y) + "z=" + str(pos.z))
if pos.x == -168 and pos.y == 64 and pos.z == 177:
mc.postToChat("welcome home!")
break
关键代码解读
if pos.x == -168 and pos.y == 64 and pos.z == 177:
#判断玩家位置是否为我们设置的地毯的位置,如果是,执行子代码块
mc.postToChat("welcome home!")
#在游戏中输出welcome home!
break
#退出while循环
要点
- 注意区分
=
和==
,在Python中=
为赋值,==
为等值判断 - 多个条件需要同时判断时,可以用and运算符。
and运算符又称为与运算符,二元逻辑运算符。and两边的条件都为True时,即两个条件同时成立时,表达式结果为True,两个条件只要有一个不成为结果就为False。
例如: a and b
a | b | a and b |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
- 在嵌套多个流程语句(while/if)时,缩进要根据程序的预定目标进行缩进。
简而言之,遇到:
就要再缩进一个级别,一个缩进级别4个空格。
因此,while的子代码块要缩进1个级别(4个空格),while子代码块中的if语句的代码块要在原有缩进基础上再缩进一个级别(8个空格)。