MINECRAFT编程:使用Python语言玩转我的世界
  • 推荐5
  • 收藏10
  • 浏览8.0K

MINECRAFT编程:使用Python语言玩转我的世界

Craig Richardson (作者)  酷课创意教育 , 季鲁 (译者) 高丽阳 (责任编辑)

  • 书  号:978-7-121-38363-2
  • 出版日期:2020-04-01
  • 页  数:296
  • 开  本:16(170*240)
  • 出版状态:上市销售
  • 原书名: Learn to Program with Minecraft: Transform Your World with the Power of Python
  • 原书号:9781593276706
  • 维护人:林瑞和
电子书 ¥82.60
购买电子书
纸质版 ¥118.00
Minecraft(官方中文名为“我的世界”)是世界范围内深受玩家喜爱的一款沙盒式建造游戏。在Minecraft中,我们可以自由搭建,把理想变为现实。Python是一种功能强大且非常适合初学者学习的语言。本书将Minecraft与Python程序结合起来,使用Python更好地控制Minecraft中的项目,比如一秒钟就搭起一栋房子来。
编程是有趣并充满想象力的一件事,在Minecraft中也一样。本书可以帮你在Minecraft中制作出各种各样有趣的内容,这是你成为一个伟大的程序员或Minecraft大师必须迈出的一步。
本书包含12章,分别为“设置你的电脑”“使用变量传送”“利用数学快速搭建和长途旅行”“利用字符串聊天”“通过布尔运算判断真假”“用if语句做小游戏”“用while循环制作舞会和花卉游行”“函数赐予你超能力”“用表和字典击打东西”“Minecraft的for循环魔法”“从文件及模块中保存和读取建筑”“用面向对象编程将程序变优雅”。
本书适合喜爱Minecraft、愿意学习编程的人学习和阅读。
优质外版书,轻松学会Python编程,玩转Minecraft
Creatica 酷课致力于培养孩子们的创造力、设计思维、动手能力、解决问题的能力等基本思维和技能——即所谓创客教育。
Creatica酷课是一群怀有教育梦想的创新实践者,可以为学校与社会提供优质教育资源,希望通过链接产业与教育的方式,做影响一代人的教育事业。
欢迎阅读本书。你将会从本书中学到如何使用Python 编程语言来控制你的Minecraft 世界。你将会学习程序是如何工作的,以及如何使用你学到的知识来生成一座建筑、制作一些小游戏,把枯燥的Minecraft 转化为全新的游戏!在你读完这本书后,你将有能力用你学到的知识在Minecraft 中实现各种疯狂的想法。
编程是有趣并充满想象力的一件事,在Minecraft 中编程也一样。在这本书中学到的知识会让你利用Minecraft 制作出各种各样有趣的内容(如游戏、App 和一些有用的工具),这是你成为一个伟大
的程序员或Minecraft 大师必须迈出的一步。
为什么要学习编程编程的首要目的是教会你如何解决问题。你会学到如何把大的问题分割成一个个小的部分,再逐一解决掉。很多你要解决的问题需要你用一些奇思妙想来解决,你也会需要尝试各种新的思路。
另外编程还会教你逻辑思考的方式以及如何更好地计划和安排你的程序流程。即使你不从事电脑编程的工作,你所学到的解决问题的能力、创造力,以及思考问题的方式都将使你受益终身。
当然从事一个与程序相关的职业也是很有趣的,每天你都会迎接全新的挑战,即使你没有成为一个真正的程序员,写代码也会是一个很好的爱好。事实上,我最开始写代码也是作为一个爱好,直到后来我逐渐变成了一个全职的程序员。
最重要的是,写程序是十分有趣的,没什么能比看着自己编写的东西运行起来更酷了!
为什么要使用Python
那么我们为什么要使用Python 语言来编程呢? Python 是一种非常适合初学者学习的语言,它非常易于阅读和编写,而且你也可以使用Python 来编写一个完整的程序。
为什么要使用Minecraft
Minecraft 因其具有趣味性和创造性而风靡全球。在Minecraft 的世界中,你可以自由搭建你喜欢的东西,也可以轻易把理想变为现实。通过将Minecraft 与Python 程序连接起来,你可以更好地控制Minecraft 中的项目,甚至做一些更夸张的事情。通过编写程序,你可以一秒钟就搭起一栋房子来,但是只用Minecraft 就无法做到。
这本书包括什么
书中每个部分都会讲解Python 的一个知识点,当你按顺序读完这本书时,你会建立起自己的Python 编程体系。书中每一章都包含Python 是如何工作的、一些经典案例以及一些Minecraft 的任务。在这些任务中,你需要使用Python 和Minecraft 来协作完成。我会教你一些简单的程序框架,然后你需要自己把重点步骤补充好,以完
成整个程序。与此同时,你会学到作为一个程序员所应具备的基础能力——如何解决问题。
让我们一起看一下在每一章中你将会学到什么:
y 第 1 章:在“设置你的电脑”这一章中,我将会教你如何搭建Python 和Minecraft 环境,这样你就可以开始你的编程之旅啦!
y 第 2 章:在“使用变量传送”这一章中,我将会教你如何通过更改几个变量瞬间把你的游戏角色传送到指定的地方,你将会学到什么是变量,以及它们在程序中是如何存储的。你甚至会基于炫酷的传送能力在你的世界中来一场魔法传送之旅。
y 第 3 章:在“利用数学快速搭建和长途旅行”这一章中,我将会教你如何利用数学来快速搭建房屋。你想不想用不到一秒钟的时间搭好一栋房子?数学运算能帮你做到!你想不想跳得很高?数学运算也能帮你做到!
y 第 4 章:在“利用字符串聊天”这一章中,你将会学到如何用字符串来做一个聊天工具。在编程语言中,字符串代表文字。你会学到如何使用Python 语言在Minecraft 中传递消息给你和你的小伙伴们。
y 第 5 章:“通过布尔运算判断真假”这一章教你如何利用布尔代数来进行判断,因此你的程序可以回答你提出的问题。换句话说,你可以让你的程序告诉你这件事是真的(True)还是假的(False)。你的Minecraft Python 程序可以解答你各种各样的问题,例如:我是不是在水里?我是不是在一棵树上?我是不是靠近我的房子?
y 第 6 章:“用 if 语句做小游戏”这一章将布尔判断的使用提升了一个阶段。你将会学到使用if 语句让软件自己判断数据并做出决定。你有没有想过在Minecraft 中制作一个密码,只有你把特定的砖块放在特定的位置才可以激活它?使用if 语句就可以实现!
y 第 7 章:在“用 while循环制作舞会和花卉游行”这一章中,你会学到如何利用while 语句来做一些很炫酷的事情!你可以做一个程序让地板变出不同的颜色,也可以让鲜花排成一排跟随在玩家的后面!这是我最喜欢给别人展示的程序了。
y 第 8 章:在“函数赐予你超能力”这一章中,你会学到如何使用函数(functions)来瞬间建造一片森林或者一个城市。你也会学到如何重复调用程序的其他部分来让你的编程生涯变得轻松愉快。
y 第 9 章:在“用表和字典击打东西”这一章中,你会学到使用表(list)来制作一个小游戏。表是一个很有用的概念,它可以帮助你保存一些重要的信息。你可以使用表来让你的程序记住你的剑敲击过的所有砖块。再加几行额外的代码你就可以把它做成一个小游戏了!是不是很酷?
y 第10章:在“Minecraft的for循环魔法”这一章中,你会学到如何使用for 循环建造诸如金字塔这类的结构。你甚至可以用它做一些像素图画或者复制在Minecraft 中的建筑。你可以造一个伟大的雕像,然后复制出一支雕塑军队!
y 第 11 章:在“从文件及模块中保存和读取建筑”这一章中,你会用你的程序创建一个文件来保存你的建筑,之后你可以在另一个世界中把它们读取出来。换句话说,你可以把你的建筑制作成一个文件然后转移到任何地方。
y 第 12 章:“用面向对象编程将程序变优雅”这一章介绍了一些高端的知识, 比如类(class)、对象(object) 和继承(inheritance)。当你学完这一章后,你将会变成一个Python 大师。在课堂任务中,你先要写一段可以生成一栋建筑的代码,之后你将使用类、对象和继承的不同属性来复制出不同的建筑。只需要改动几行代码就可以产生诸如村庄、酒店等不同建筑。
y “砖块 ID 备忘单”是一个很有用的可以帮助你查找 Minecraft里面不同砖块的ID 的工具,你会在编程中经常使用到它。(见本书配套资源)

目录

目 录
第1章 设置你的电脑 ·······················1
准备好你的Windows PC ························· 2
安装Minecraft ······································ 2
安装Python ··········································· 3
安装Java ··············································· 4
安装Minecraft Python API和Spigot ···· 6
运行插件并创建游戏 ·························· 7
重新开始一个新的世界 ······················ 9
离线游戏 ············································ 10
改为生存模式 ···································· 11
准备好你的Mac ····································· 12
安装Minecraft ···································· 13
安装Python ········································· 15
安装Java ············································· 15
安装Minecraft Python API和Spigot····· 16
运行Spigot并创建游戏 ······················ 18
重新开始一个新的世界 ···················· 19
离线游戏 ············································ 20
改为生存模式 ···································· 20
设置你的Raspberry Pi ··························· 21
认识IDLE ··············································· 22
认识Python Shell ······························· 23
和IDLE的文本编辑器问好 ··············· 23
什么时候使用Python,什么时候
 使用文本编辑器 ···························· 25
本书中使用的提示符 ························ 26
测试你的Minecraft Python是否能运行 ··· 26
第2章 使用变量传送 ·····················28
什么是程序 ············································ 28
使用变量存储数据 ································ 29
程序语言的结构 ································ 30
变量的语法规则 ································ 31
如何改变变量的值 ···························· 32
整数 ···················································· 32
任务#1 传送你的角色 ···················· 33
浮点数 ················································ 38
任务#2 去你想去的地方 ················ 39
使用时间模块降低传送速度 ················ 40
任务#3 传送之旅 ···························· 41
排除bug ·················································· 43
任务#4 修正一个充满bug的
 传送程序 ········································ 44
你学到了什么 ········································ 46
第3章 利用数学快速搭建和长途
旅行 ···························································47
表达式和语句 ········································ 47
运算符号 ················································ 48
加法 ························································· 48
任务#5 堆砖块 ··································· 49
任务#6 超级跳 ··································· 51
减法 ························································· 52
任务#7 改变你脚下的砖块 ·············· 52
在参数中使用数学符号 ······················· 53
任务#8 快速搭建 ······························· 55
乘法 ························································· 58
除法 ························································· 58
任务#9 壮观的尖塔 ··························· 58
指数 ························································ 60
括号和运算顺序 ···································· 61
方便的数学技巧 ···································· 61
缩略符 ················································ 61
用随机数字玩游戏 ···························· 62
任务#10 跳到一个新的地方 ·········· 63
你学到了什么 ········································ 64
第4章 利用字符串聊天 ················65
什么是字符串 ········································ 66
print()函数 ·············································· 66
任务#11 你好,Minecraft世界 ······ 67
input()函数 ············································· 68
任务#12 写你自己的聊天信息 ······ 69
连接字符串 ············································ 71
将数字转换为字符串 ························ 71
连接整数与浮点数 ···························· 72
任务#13 在聊天中加入用户名 ······ 73
使用int()将字符串转变为整数 ············· 74
任务#14 使用input命令建立砖块 ··· 74
从异常中恢复 ········································ 76
任务#15 数字通行 ·························· 77
任务#16 神奇的记录仪 ·················· 79
你学到了什么 ········································ 81
第5章 通过布尔运算判断真假 ···82
布尔运算基础 ········································ 83
任务#17 停止打碎砖块 ·················· 83
关联布尔运算 ········································ 84
比较符号 ················································ 85
等于 ···················································· 85
任务#18 我在游泳吗 ······················ 86
不等于 ················································ 87
任务#19 我没有站在空气中吗 ······ 88
大于和小于 ········································ 89
大于或等于和小于或等于 ················ 90
任务#20 我在地面上吗 ·················· 91
任务#21 我在家附近吗 ·················· 92
逻辑算符 ················································ 93
and ······················································ 94
任务#22 我是否完全在水下 ·········· 95
or ························································· 96
任务#23 我在树上吗 ······················ 96
not ······················································· 97
任务#24 这个砖块不是西瓜吗 ······ 98
逻辑算符的顺序 ································ 99
我的数字在其他两个数之间吗 ······ 100
任务#25 我在房子里吗 ················ 100
你学到了什么 ······································ 102
第6章 用if语句做小游戏 ···········103
使用if语句 ············································ 104
任务#26 炸出一个坑 ···················· 105
else语句 ············································ 107
任务#27 是否阻止打碎砖块 ········ 108
elif语句 ············································· 109
任务#28 提供礼物 ························ 111
连接elif语句 ····································· 112
任务#29 传送到正确的位置 ········ 113
嵌套if语句 ········································ 115
任务#30 开一个秘密通道 ············ 115
用if语句来检测一个值的范围 ············ 117
任务#31 限制传送位置 ················ 118
布尔运算和if语句 ································ 120
任务#32 洗澡 ································ 121
你学到了什么 ······································ 123
第7 章 用w h i l e循环制作舞会
和花卉游行 ·······················124
简单的while循环 ································· 124
任务#33 随机的传送旅程 ············ 126
用变量count控制循环 ························· 128
任务#34 水的诅咒 ························ 129
无限while循环 ································· 130
任务#35 花朵小径 ························ 131
奇特的条件 ·········································· 132
任务#36 潜水比赛 ························ 133
布尔运算符和while循环 ················· 135
在while循环中检测值的范围 ········· 136
任务#37 做一个舞池 ···················· 136
嵌套if语句和while循环 ··················· 138
任务#38 点石成金 ························ 139
用break语句来结束while循环 ············ 140
任务#39 用循环创建永久聊天 ···· 140
while-else语句 ·································· 142
任务#40 热和冷 ···························· 142
你学到了什么 ······································ 145
第8章 函数赐予你超能力 ·········146
定义你自己的函数 ······························ 147
调用函数 ·········································· 147
带有参数的函数 ······························ 148
任务#41 创建一片森林 ················ 149
重构程序 ·········································· 151
任务#42 重构 ································ 152
用文档字符串做注释 ······················ 153
参数中的换行符 ······························ 154
函数返回值 ······································ 154
任务#43 砖块ID提醒器 ················ 156
在函数中使用if语句和while循环 ······· 157
if语句 ················································ 158
任务#44 羊毛颜色助手 ················ 159
while循环 ········································· 160
任务#45 到处摆放砖块 ················ 161
全局变量和局部变量 ·························· 163
任务#46 移动的砖块 ···················· 164
你学到了什么 ······································ 166
第9章 用表和字典击打东西 ····167
使用表 ·················································· 168
使用一个表项目 ······························ 168
改变表项目 ······································ 169
任务#47 高和低 ···························· 169
操作表 ·················································· 171
添加项目 ·········································· 171
插入项目 ·········································· 172
删除项目 ·········································· 173
任务#48 进度条 ···························· 173
把字符串看作表 ·································· 175
元组 ······················································ 175
用元组来设置变量 ·························· 176
任务#49 滑行 ································ 177
返回元组 ·········································· 178
表的其他有用的特征 ·························· 179
表的长度 ·········································· 179
任务#50 击打砖块 ························ 180
随机选取一个项目 ·························· 182
任务#51 随机砖块 ························ 183
复制表 ·············································· 184
项目和if语句 ···································· 185
任务#52 夜视剑 ···························· 186
字典 ······················································ 188
定义一个字典 ·································· 188
使用字典中的项目 ·························· 189
任务#53 观光指南 ························ 190
在字典中改变或添加项目 ·············· 191
在字典中删除项目 ·························· 192
任务#54 击打砖块的分数 ············ 192
你学到了什么 ······································ 194
第10章 Minecraft的for循环
     魔法 ··································195
一个简单的for循环······························ 195
任务#55 魔杖 ································ 196
函数range() ······································ 198
任务#56 魔法楼梯 ························ 199
用range()玩耍 ·································· 200
其他表函数 ·········································· 201
任务#57 柱子 ································ 202
任务#58 金字塔 ···························· 204
循环一个字典 ······································ 205
任务#59 记分牌 ···························· 206
for-else循环 ·········································· 207
退出for-else循环 ······························ 207
任务#60 钻石勘探者 ···················· 208
嵌套for循环和多维表·························· 209
考虑两个维度 ·································· 209
使用二维表中的值 ·························· 213
任务#61 像素艺术 ························ 214
用循环生成二维表 ·························· 216
任务#62 风化剥蚀的墙 ················ 217
考虑三个维度 ·································· 218
输出三维表 ······································ 219
使用三维表中的值 ·························· 223
任务#63 复制一座建筑 ················ 225
学到了什么 ·········································· 229
第11章 从文件及模块中保存
    和读取建筑 ··················231
使用文件 ·············································· 232
打开一个文件 ·································· 232
目录 XI
写入并保存一个文件 ······················ 233
读取一个文件 ·································· 234
读取文件中的一行 ·························· 235
任务#64 提醒单 ···························· 236
第一部分 写提醒单 ······················ 236
第二部分 展示提醒单 ·················· 237
使用模块 ·············································· 238
使用pickle模块 ································ 239
导入pickle ········································ 239
使用from语句导入一个函数 ·········· 241
使用*来调用全部的函数 ················ 242
给模块起个“外号” ······················ 242
任务#65 保存一座建筑 ················ 243
第一部分 保存建筑 ······················ 243
第二部分 读取建筑 ······················ 246
使用shelve模块存储大量数据 ············ 248
使用shelve打开一个文件 ················ 248
使用shelve添加、修改和
访问项目 ······································ 248
任务#66 存储一系列建筑 ············ 249
第一部分 将一座建筑保存到
收藏夹中 ······································ 250
第二部分 从收藏夹中读取
一座建筑 ······································ 250
使用pip安装新的模块 ························· 253
在Windows中使用pip ······················ 254
在Mac或者树莓派中使用pip ·········· 255
使用pip安装的模块:Flask ················ 255
任务#67 位置网站 ························ 257
你学到了什么 ······································ 257
第12章 用面向对象编程将程序
     变优雅 ·······························259
面向对象编程基础 ······························ 260
创建一个类 ·········································· 260
创建一个对象 ·································· 261
获取对象属性 ·································· 262
任务#68 位置对象 ························ 262
理解方法 ·············································· 264
任务#69 幽灵屋 ···························· 266
方法的返回值 ······································ 268
任务#70 幽灵城堡 ························ 269
创造多个对象 ······································ 271
任务#71 幽灵城 ···························· 272
类的属性 ·············································· 273
认识和了解继承 ·································· 275
继承一个类 ······································ 276
在子类中加入新方法 ······················ 277
任务#72 幽灵酒店 ························ 278
重写方法和属性 ·································· 280
任务#73 幽灵树 ···························· 283
你学到了什么 ······································ 284

读者评论

  • 6

    FoFTG发表于 2023/2/17 19:58:26
  • Traceback (most recent call last):
    File “C:\Users\YOGA\Documents\Minecraft Python\Learn to Program with Minecraft Code\chapter3-math\randomJump.py”, line 5, in <module>
    pos = mc.player.getPos()
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\minecraft.py”, line 66, in getPos
    return CmdPositioner.getPos(self, [])
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\minecraft.py”, line 32, in getPos
    s = self.conn.sendReceive(self.pkg + b”.getPos”, id)
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\connection.py”, line 62, in sendReceive
    self.send(*data)
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\connection.py”, line 39, in send
    s = b””.join([f, b”(“, flatten_parameters_to_bytestring(data), b”)”, b”\n”])
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\util.py”, line 10, in flatten_parameters_to_bytestring
    return b”,”.join(map(_misc_to_bytes, flatten(l)))
    File “C:\Users\YOGA\AppData\Local\Programs\Python\Python310\lib\site-packages\mcpi\util.py”, line 5, in flatten
    if isinstance(e, collections.Iterable) and not isinstance(e, str):
    AttributeError: module ‘collections’ has no attribute ‘Iterable’

    GLOBEsg发表于 2022/9/30 21:30:53
  • C:\Users\joann.LAPTOP-2L3IOFMH\Documents\Minecraft Python\Minecraft Tools>Install_API.bat

    C:\Users\joann.LAPTOP-2L3IOFMH\Documents\Minecraft Python\Minecraft Tools>python -m pip install minecraftPythonAPI.zip
    Traceback (most recent call last):
    File “C:\Users\joann.LAPTOP-2L3IOFMH\AppData\Local\Programs\Python\Python35\lib\runpy.py”, line 170, in runmoduleasmain
    “__main
    “, mod_spec)
    File “C:\Users\joann.LAPTOP-2L3IOFMH\AppData\Local\Programs\Python\Python35\lib\runpy.py”, line 85, in _run_code
    exec(code, run_globals)
    File “C:\Users\joann.LAPTOP-2L3IOFMH\AppData\Local\Programs\Python\Python35\lib\site-packages\pip__main
    .py”, line 29, in <module>
    from pip._internal.cli.main import main as _main
    File “C:\Users\joann.LAPTOP-2L3IOFMH\AppData\Local\Programs\Python\Python35\lib\site-packages\pip_internal\cli\main.py”, line 57
    sys.stderr.write(f”ERROR: {exc}”)
    會產生以上錯誤,原因?

    charles579发表于 2022/2/14 17:13:19
  • maohua发表于 2022/1/8 0:23:57
  • ctydsg发表于 2021/9/21 11:45:06