上一節Scratch編程課程,我們講了如何判斷橫向左右兩個方向是否五子連珠。
實際上,我們一共需要判斷8個方向,包括:上、下、左、右、左上↖、右下↘、右上↗、左下↙。
那麼,在上一節課代碼基礎上,稍加修改就能實現其它6個方向的判斷了。
可是,你會發現每個方向的代碼相似度非常高,也就是說我們可以從中找出一種規律,從而大大簡化代碼。在介紹我的優化代碼之前,我們先解決下落子點棋子重複落子的問題。
解決落子點棋子重複落子問題大家看下圖,增加一個判斷,判斷當前落子點的列表編号在列表中對應的值,如果值為0,說明該落子點可以落子;反之,不為0,說明該落子點已經有棋子了。
圖1
如何将8個方向的代碼,優化成一個自定義積木?大家看下圖,我把它們的計算格式進行了統一,然後用紅色标出了不同的地方。不同的地方有兩處,我們分别在自定義積木中設置參數a和b 。大家結合下面的代碼慢慢理解。
圖2
圖2是圖3中重複執行程序的執行終止判斷代碼,我把他們拆開,方便大家理解。
①是判斷是否找到相同顔色的棋子;②③④⑤判斷是否超出棋盤範圍。當沒有相同棋子或者超出了棋盤範圍,那麼,重複執行就終止了,因為沒必要再繼續在這個方向上查找了。
圖3
圖4
雖然是8個方向,但是我們計算連珠總數的時候,是兩個相對方向一起計算的,所以得兩個方向結合起來計數。具體程序見下圖。如果,總數超過4,那麼發出“五子連珠”的廣播。接收廣播的角色,根據當前落子是“黑棋”還是“白棋”,經過判斷後顯示“黑棋勝”或者“白旗勝”。
圖5
最後,我們兩個兩個地組合,對所有8個方向進行判斷。
圖6
演示效果教程寫到這裡,我們的五子連珠遊戲已經可以正常判斷勝負了,我和糖果兩個人玩了一局,感覺還真不錯。
本次Scratch編程課程就講到這裡,後續課程見!
本文所有圖片、視頻及文字内容,均為原創,轉載時請保留版權信息。
查看更多Scratch編程教程,請點擊下一行的了解更多,進入程序員豬豬的頭條主頁。
點擊關注,每天接收更新哦。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!