设为首页收藏官网网盘国家资源立人课堂 今天是: 2024-04-30    "全国交通安全反思日"  增强国民的交通安全意识投稿

立人创客乐享社区

 找回密码
 立即注册
成都市金牛实验中学校

立人小喇叭+ 发布

信息中心 立人创客游戏化学习三乐法新课程开始啦!欢迎交流分享
04-04 10:04
立人创客社: 祝愿世界太平!地球早日康复!
01-07 11:43
jnschool 请同学们严格遵守国家网络安全规定,文明上网!
01-07 11:41
查看: 515|回复: 0

用 Python 来玩 Minecraft

[复制链接] TA的其它主题

30

主题

4

好友

7779

积分

创客区长

Rank: 9Rank: 9Rank: 9

积分
7779
威望
1604
立人币
2977
贡献
1054
大金牛币
177
乐创奖
12
乐享奖
0
乐课奖
0
立人证书
0

突出创客优秀版主荣誉管理创客元老

发表于 2023-12-18 16:37:45 | 显示全部楼层 |阅读模式 |
<

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
让我们写几段程序来运行一下,看一看这个 API 究竟能实现哪些功能?首先,导入 Minecraft API 并创建相应的对象:
[Python] 纯文本查看 复制代码
from mcpi.minecraft import Minecraft
mc = Minecraft.create()

这里,我们得到了一个 mc 对象, 任何关于玩家和建筑物的编程都是基于这个对象来进行的。游戏的世界里,玩家人物、建筑物都有其相应的坐标。我们相当于在一个3D空间中进行编程,即存在 xy z 三个参数:x 为横向坐标、y 为高度坐标(注意,不是纵向)、z 为纵向坐标:
640.jpg

我们可以通过 mc 这个对象里封装的player对象来获得当前玩家人物的位置,应用 getTilePos 函数:
[Python] 纯文本查看 复制代码
position = mc.player.getTilePos()
x = position.x
y = position.y
z = position.z
print(x, y, z)
在特定地方放置指定的物质块,我们应用mc对象的setBlock函数来实现。如放置一个cubblestone块(前3个参数是坐标 xyz,最后1个参数是物质代号,cubblestone的代号是4):
[Python] 纯文本查看 复制代码
mc.setBlock(-564, 64, 675, 4)
640 (1).jpg

放置一个 glass 块(玻璃的代号是20):
[Python] 纯文本查看 复制代码
mc.setBlock(-564, 64, 675, 20)
640 (2).jpg

放置一个cubblestone,上面再放一把火炬(torch的代号是50,注意火炬的坐标需要的 y 值要比cubblestone1,以确定让火炬在cubblestone的上方):
[Python] 纯文本查看 复制代码
mc.setBlock(-564, 64, 675, 4)
# Cubblestone
mc.setBlock(-564, 65, 675, 50)
# Torch
640 (3).jpg

下面我们应用循环语句来批量构建一些“建筑”,比如连接这块陆地和对面小岛的一座“桥”:
[Python] 纯文本查看 复制代码
for i in range(100):   
    mc.setBlock(-564+i, 64, 674, 4)  
    mc.setBlock(-564+i, 64, 675, 4)
    mc.setBlock(-564+i, 64, 676, 4)
    # Bridge
640 (4).jpg

在桥的两侧每隔5个块单位放置1把火炬:
[Python] 纯文本查看 复制代码
for i in range(100):
    mc.setBlock(-564+i, 64, 674, 4)  
    mc.setBlock(-564+i, 64, 675, 4)
    mc.setBlock(-564+i, 64, 676, 4)
    # Cubblestone

    mc.setBlock(-564+i*5, 65, 674, 50)
    mc.setBlock(-564+i*5, 65, 676, 50)
    # Torch
640 (5).jpg

640 (6).jpg
我们在桥的中间建一个“柱子”:
[Python] 纯文本查看 复制代码
for i in range(50):
    mc.setBlock(-544, 64+i, 675, 4)
    # Pillar
640 (7).jpg
在桥的上方建一个“楼梯”:
[Python] 纯文本查看 复制代码
for i in range(100):
    mc.setBlock(-564+i, 64+i, 674, 4)
    mc.setBlock(-564+i, 64+i, 675, 4)
    mc.setBlock(-564+i, 64+i, 676, 4)
     # Staircase
640 (8).jpg 640 (9).jpg 640 (10).jpg
最后我们建一个稍微复杂一点的建筑——正方形的“城堡”。首先建一个正方形的“地基”(需要嵌套另一个循环):
[Python] 纯文本查看 复制代码
for i in range(30):
    for j in range(30):
        mc.setBlock(x+i, y, z+j, 4)
        # Foundation
640 (11).jpg

构建整个城堡,带有“玻璃天窗”:
[Python] 纯文本查看 复制代码
for i in range(30):
     for j in range(30):
        mc.setBlock(x+i, y, z+j, 4)
        # Foundation

        mc.setBlock(x+i, y+j, z, 4)
        mc.setBlock(x, y+j, z+i, 4)
        mc.setBlock(x+i, y+j, z+30, 4)
        mc.setBlock(x+30, y+j, z+i, 4)
        # Walls

        mc.setBlock(x+i, y+30, z+j, 20)
        # Glass ROOF
640 (12).jpg 640 (13).jpg

1
安装与配置编程环境
2
Hello World
3
创造方块
4
畅行无阻
5
点石成金
6
寻找钻石
7
长方体与金字塔
8
小木屋
9
迷宫
640.png 640 (1).png 640 (2).png 640 (3).png 640 (4).png 640 (5).png 640 (6).png 640 (7).png
楼主热帖
    
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开
Loading...
快速回复 返回顶部 返回列表