Minecraft(官方中文名為“我的世界”)是世界范圍內深受玩家喜愛的一款沙盒式建造游戲。在Minecraft中,我們可以自由搭建,把理想變為現實。Python是一種功能強大且非常適合初學者學習的語言。本書將Minecraft與Python程序結合起來,使用Python更好地控制Minecraft中的項目,比如一秒鐘就搭起一棟房子來。編程是有趣并充滿想象力的一件事,在Minecraft中也一樣。本書可以幫你在Minecraft中制作出各種各樣有趣的內容,這是你成為一個偉大的程序員或Minecraft大師必須邁出的一步。本書包含12章,分別為“設置你的電腦”“使用變量傳送”“利用數學快速搭建和長途旅行”“利用字符串聊天”“通過布爾運算判斷真假”“用if語句做小游戲”“用while循環制作舞會和花卉游行”“函數賜予你超能力”“用表和字典擊打東西”“Minecraft的for循環魔法”“從文件及模塊中保存和讀取建筑”“用面向對象編程將程序變優雅”。本書適合喜愛Minecraft、愿意學習編程的人學習和閱讀。
克雷格·理查森(Craig Richardson)是軟件開發人員,Python編程教育家。他曾經在Raspberry Pi基金會工作,曾經在高中教授計算機課程,并開設了許多基于Minecraft的Python編程課程。
Creatica 酷課致力于培養孩子們的創造力、設計思維、動手能力、解決問題的能力等基本思維和技能——即所謂創客教育。Creatica酷課是一群懷有教育夢想的創新實踐者,可以為學校與社會提供優質教育資源,希望通過鏈接產業與教育的方式,做影響一代人的教育事業。
目 錄
第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