iT邦幫忙

DAY 2
1

科學運算和資料處理的潛力新秀--Julia語言系列 第 2

Julia (2) -- 2048遊戲的架構,Julia的安裝和暖身

Blog好讀版

在這個30天的系列裡頭,我想用project-oriented的方法來介紹Julia:先把2048這個小遊戲化整為零,拆成一個一個小部份。當要開始寫某個小部份code的時候再來介紹需要的語法和函式就可以了。
我並不想把程式語言按著說明手冊一個一個介紹下來,因為我不覺得我可以用30天部落格的形式做得比Julia官方的說明手冊好。我的說明重點會放在Julia和其他高階語言的差別,以及使用上的注意事項,希望可以和官方文件達成相輔相成的效果。

在開始介紹Julia的語法和特性之前,先來定義一下這個2048小遊戲:

我們想要實際作出的2048小遊戲大概是像下面的文字輸出這樣:

  .   .   .   2
  .   .   .   8
 16   4   .   .
  .   .   .   .

current score: xxxx
Enter the next direction:

使用介面就是使用基本的輸出輸入。因為是學習目的,界面有點醜,也只能將就將就,畢竟user-friendly不是最重要的考量。另外,為了讓程式再簡化一點,上下左右鍵我們選擇vim-like的定義:

K: 上

J: 下

H: 左

L: 右

使用者每移動一步之後,程式會隨機選擇一個空格放上新的數字,90%的機率會放2,而10%的機率會放上4。每次合併後,新的分數是舊的分數加上被合併格子的數字的兩倍。

因此這個遊戲會有兩個主要部份(或是物件):
第一個是board物件,它掌管目前2048盤面的狀況,當使用者輸入方向時,它會把盤面演化到下一步,並判斷遊戲能否再繼續進行。

第二個是game物件,它扮演了電腦和玩家中間的介面,它處理玩家的輸入的指令,然後把最新盤面的狀面印在螢幕上。

第三個部份是AI代理人(AI agent), 把這個小遊戲實作出來之後,之後就可以在這個框架再加上一個AI agent,讓程式自己去找尋通往2048的道路。

讓我們再把主題拉回到Julia,

Julia的安裝

Julia的安裝非常簡單,想省事的人只要去官網下載已經編譯好的binary file就可以了。

用homebrew的MacOS使用者也可以用homebrew來安裝,我自己也是使用Homebrew來安裝Julia。目前Julia的安裝並沒有在官方的homebrew formula裡頭,而是由Julia lang的團隊在維護,有需要人可以去這個網頁看使用說明。

NB: 用Homebrew安裝時可能會有gcc版本的問題,有時候可能需要把homebrew原本安裝的gcc移除之後,重新安裝新版本的gcc,詳情請見這裡。從github issues上面的回應狀況來看,Julia的維護團隊回應還蠻快的。真的遇到了問題,issues也爬過了,就不要吝於回報,Julia的維護團隊也鼓勵使用者這麼做。

安裝之後執行Julia,會看到類似如下的畫面:


鍵入1+1然後按Enter,出現2的話就表示安裝成功了XD

初試Julia

我個人認為最短的時間熟悉Julia基本操作的方法是花一個小時看MIT的這個tutorial。它是Julia的team在MIT辦的一個小tutorial,覺得不想花太久時間跟一票MIT師生在那邊瞎耗的人可以直接下載該課程的投影片檔。然後自己動手把指令一個一個打上去,花不到半小時的時間,就可以很快地對這個語言有個初步的感覺。Python/Matlab/Octave的使用者應該會覺得有些語法很熟悉,學習曲線應該不會太陡。

工具準備好,也稍微熟悉了一下之後,明天我們就捲起袖子來實作2048。


上一篇
Julia(1) - Why Julia?
下一篇
Julia (3) -- 2048遊戲實作開始
系列文
科學運算和資料處理的潛力新秀--Julia語言30

尚未有邦友留言

立即登入留言