不是電腦科學的學生如何用 Minecraft 來學寫程式

🐟Curtis Chan FishSunSun
Curtis’s Digital Life
7 min readJun 3, 2019

--

▲ 比起普通版本,我可以在教育版透過編寫吉祥物 (agent)擺放遊戲的方塊來學寫程式。

上個月(19年4月),微軟香港來了我的大學兩次舉辦講座。職員們介紹了遊戲 Minecraft (《我的世界》),並展示他們的其他教育科技在香港的研究項目。雖然我的本科是主修心理學,不過我對這些教育科技很感興趣。總的來說,Minecraft 的確可以令到一些年幼的學生更投入到課堂中,以及以一個不設限的虛擬世界裏讓學生的創意自由發揮。

上次我回顧了自己如何用 OneNote 來寫筆記。今次就講講我自己親身試用及探討一下我如何用這個遊戲學編程。

▲ 穿毛衣握著最新武器三叉戟的我,與我的吉祥物印有在微軟圖示的方塊堆前,沿著燈塔的指路光望上天空。

▼ 「我們很喜歡你這個角度看這個遊戲,Curtis!」

我本身都是 Minecraft 的玩家。自從這個講座才發現這遊戲也可以用在教育上,不只是作休閒娛樂之用。我用了大學提供的試用版,增長了一些編程知識。Minecraft ,即使對我這種不是主修電腦科學的學生。

作為練習,以下我試試如何編寫命令讓 Minecraft 教育版特有的吉祥物 (agent)擺放一個個方塊做一些圖案。自然地,我想不如就試一試「一個微軟公司的標誌」

另外,我亦附上了原始碼在文末。最後還有幕後花絮,講述我之前編程失敗。

聲明:我並沒有受到微軟或遊戲開發商魔讚協同公司的任何補償。

本文亦另備英文版本。English readers may check out the alternative version here.

目錄

前言
1 在 OneNote 中畫設計草圖
2 用 Excel 來仔細計劃方塊
3 用 MakeCode 來寫程式
3A 重覆函數
3B 製造指令
4 終於可以給予指令!
幕後花絮
原始代碼

▼ 在 macOS 上 Minecraft 教育版 1.9.2 版本的遊戲暫停畫面。

1 在 OneNote 中畫設計草圖

學習一個新事物,最好就是動手去做 (hands-on)。首先,我用 Apple Pencil 在 OneNote 中快速繪出那格四格圖案大約在草地上的樣子 — 一個簡單的小舞台。

2 用 Excel 來仔細計劃方塊

打開 Minecraft 之前,我還需要一個再詳細的建築圖則,指明各部件需要用到那一種方塊。透過 Excel ,我可以製作高準確的參考施工圖。不過首先我要選擇所有儲存格,再調整成一個個正方形。

巧用條件化格式來節省時間。我只需要打上一些顏色代碼(如 R=紅色)就可以繪出用甚麼麼染了色的方塊。好!參考圖則預備好了。那我如何讓吉祥物幫我按照這幅圖完成設計呢?

▲ 簡單規劃要用甚麼顏色的方塊。

▼ 條件格式化來標注方塊的位置。

3 用 MakeCode 來寫程式

當進到 Minecraft 的世界之後,我可以在 Mac 上 打 c 或在 iPad 上點一點吉祥物的圖示去打開 Code Builder。一按了這個快捷鍵,吉祥物就會迅間轉移到你的眼前。

3A 重覆函數

我先創造2個函數,來教導吉祥物有甚麼步驟去整出微軟的圖示出來。

在以下的截圖中,右面的函數checkLevel 顧名思意就是用來看看吉祥物所在的層數。視乎層數,我用if 來改變partLpartR 來擺置吉祥物要帶甚麼方塊去填充。(方塊#236, 官方方塊說明)

而左邊的函數levelBuild則用來告訴吉祥物當它每走一步就要在腳下放置相應的方塊。之後,它就會向上升起一層,並返會最初的 X 坐標起點。當一層完成後,變數levelCurrent會加一,給函數checkLevel重新安排新一層的要用上的方塊。

▲ 圖像化表示兩個最重要重覆調用的函數式。每走一步,吉祥物都會擺下新的方塊。

▼ 程式背後對應的施工圖。

3B 製造指令

接著,我就用 “on chat command” 並將它命名成run。這個指令中用了一個變數levelCurrent來決定要要重覆的次數。參看上圖,雖然設計上有七層,但每一層吉祥物只需要兩個函數就可以完成任務。

4 終於可以給予指令!

因為我已經在現場勘探好,我就選在這篇大空地試試。再打 c 或點點最頂聊天圖示顯示聊天界面。輸入預設指令名,即run,來告知吉祥物做事。像現實生活中,只

▼ 一段影片顯示我的吉祥物如何自動建出微軟的圖案出來。多謝您,你才是最辛苦的~

總結:希望更多學校可以應用 Minecraft 這類幫助學習的教育科技

學寫程式倚賴不少通用的技能。它可以訓練我們的決心及培養解決問題的思維。以上的指令其實還可以再優化,例如引入排列 (array)等,還有不同的可能性。

我愛心理學與科技,因為兩者都是為了人類過得更好。我認同人們應該要終生學習。透過這樣進修,人們就能容忍異見、減少偏誤、以及令到自己更靈活變通。

幕後花絮

▲ 真的是幕後,有點凌亂。

▼ 這個「簡單」的圖案花了我不少時間去做。撞板次數太多,雖然會有沮喪的時候,不過只要由頭再看多幾回官方手冊就能明白。

▲ 到最後,我終於找到方向。我一路試錯到我真的能讓我的吉祥物可以按我指令造一個圖案出來!!!

▼ 與我的吉祥物一齊觀看日出。它一直都在我背後密密支持我。

▲ 在 Minecraft 教育版內自拍

--

--

🐟Curtis Chan FishSunSun
Curtis’s Digital Life

讀心理學,鐘意科技同效率相關題材。A Psychology student is hooked on technologies and productivity. #地鐵迷 #非火車迷 #科幻 #電子化 #硬筆書法#手寫 #metro #digital #handwritten #calligraphy