接續上一篇文章的內容,在井字棋遊戲已經可以使用陣列(清單)來記錄棋盤的內容時,此時就可以根據清單的內容來判斷是哪一方可以獲得最終的勝利。此這個例子中,我們再準備一個用來宣告勝負的角色:

它的程式積木很簡單,在程式一開始時會隱藏自己,當在收到訊息時就把自己顯示出來,並說出相對應的文字,如下所示:

從上面的積木可以看出,它接受3個廣播訊息,分別是gameover,表示9個子已經下完還沒有分出勝負,另外win0就是執O的人獲勝,而win1表示拿X的人獲勝。為了記錄目前總共下了幾步棋,我們宣告了一個資料變數steps,並在程式一開始執行的時候把它清除為 0,如下:

接著在每一次玩家點擊角色,並做完必要的下棋的蓋章動作之後,就要開始檢查誰勝誰負,如下:

如同學們所看到的,這只是其中一個檢查,每次檢查的時候都要檢查清單中相對應的格子中是否有3個一樣內容的情形,如果有的話,就是有其中的一方已經完成連線,至於是哪一方,則由連線的格子中的數值來判斷。如果第一個判斷沒有分出勝負,則再進入第二個判斷,依此類推。

但是這樣的判斷方法有一個要留意的地方就是一開始的棋盤內容不能都是「-1」,因為它們也會一樣,這樣會造成判斷勝負上的困擾,所以在程式開始執行設定清單的時候,我們做了一些小改變如下:

這樣的話,棋盤上的清單內容一開始就會是從 -1到-9,就都不會一樣了。

如果下的這一步棋在所有的檢查都沒有分出勝負的話,就要計算目前下子的數目,如果到達9的話,就要提醒玩家是平手的狀態,其程式積木如下所示:

到上就算是完成全部的井字棋遊戲程式的實作了,以下是給同學們參考用的程式積木:

(412)