首页
/
每日頭條
/
遊戲
/
如何用scratch編寫一個闖關遊戲
如何用scratch編寫一個闖關遊戲
更新时间:2024-10-13 14:21:57
前言

上一節Scratch編程課程,我們已經實現了使用列表來記錄黑白棋子的落子情況。那麼,對于這些記錄在列表中的數值,我們約定0代表沒有棋子,1代表對應的位置是黑棋,2代表對應的位置是白棋。

今天的Scratch編程課程,我們就會使用這些數據,來判斷是否五子連珠。這裡,我還要特别告訴大家,本節課的代碼不是最終代碼,如果直接講最終代碼,大家很有可能聽不懂,所以我還是一步一步從頭說起。

落子在列表中的編号

請大家先看一下圖1。

上一節,我們講過,為了代碼容易理解,我們新建了“左下角開始的行數”和“左下角開始的列數”兩個變量。

這節課,同樣的道理,我們建立新變量“落子在列表中的編号”。為了更好地理解,請大家對比圖1和上一節課的代碼。

如何用scratch編寫一個闖關遊戲(50.Scratch青少年編程實例教程)1

圖1

那麼,現在,圖1中,一共有了3個變量,并且我們給它們都取了個有意義的名稱。也就是一看就知道這個變量是存放什麼數據的。它們的功能僅僅是方便代碼的閱讀麼?當然不是。另外一個重要的功能就是,後續的腳本如果想要計算“行數”、“列數”或者“編号”的時候,就不用再重新寫代碼計算了,直接使用這個變量就可以了。就像我前面課程講的,變量就像一個盒子,用來存放内容,大家都可以随時去查看變量裡存放了什麼内容。

判斷是否五子連珠

首先,我要告訴大家,我們首先進行橫向的判斷。也就是判斷落下的棋子和它左右兩端的棋子,能否五子連珠!當你把這部分理解了,其它三個方向,即上下、右上左下、右下左上,就都迎刃而解了。

現在,我們看圖2,和“更新落子情況”一樣,我們把“判斷是否五子連珠”寫在“自定義積木”中。

如何用scratch編寫一個闖關遊戲(50.Scratch青少年編程實例教程)2

圖2

下面我來解釋這段代碼:

  • “連珠總數”變量用來計算落下的棋子兩端,和它一樣顔色的棋子的總數,包括它自己,總數大于4,就判定為五子連珠。
  • 為了不影響圖1建立的三個變量,我們建立3個對應的臨時變量,即“臨時列數”、“臨時行數”、“臨時編号”。因為它們在重複執行中是變化的。
  • 進入重複執行。對落下的棋子的右邊所有的落子點,一個一個檢查,判斷是否有同樣顔色的棋子。如果,顔色一樣,“連珠總數”增加1;如果,顔色不一樣,那麼,再向右的落子點也沒必要檢查了,直接把“臨時列數”設為15或者其他大于14的數,重複執行的條件不再滿足,重複執行停止。可見,“臨時列數”的作用就是控制重複執行的次數。那麼,“臨時編号”為什麼每次重複執行都加1呢?那是因為,我們的編号,是從左下角開始的,所以,每向右一個落子點,它的編号相應地增加1。
  • 判斷是否顔色一緻的原理是:計算出當前判斷的落子點的編号,然後按照編号去列表中讀取落子點數據是0、還是1、還是2。造型編号對應了當前落子的顔色,将數據和造型編号對比,如果一緻說明顔色一樣,反之不一樣或者該點沒有落子。

再看圖3的代碼,他們是接着圖2的代碼的,為了方便講解,我将它分開。

  • 首先,“臨時編号”、“臨時列數”重新初始化為落下的棋子的編号和列數。也就是,我們把判斷的對象回到落子處。下面将在它的左邊,一個一個落子點進行判斷。如果,顔色一樣,“連珠總數”增加1;如果,顔色不一樣,那麼,再向左的落子點也沒必要檢查了,直接把“臨時列數”設為0或者其它小于2的數字,重複執行的條件不再滿足,重複執行停止。


如何用scratch編寫一個闖關遊戲(50.Scratch青少年編程實例教程)3

圖3

最後,對連珠總數進行判斷,如果大于4,發出赢棋廣播。

如何用scratch編寫一個闖關遊戲(50.Scratch青少年編程實例教程)4

圖4

演示效果

本節Scratch編程課程最終效果,我錄制了視頻,請大家點擊下面的視頻觀看。


本次Scratch編程課程就講到這裡,後續課程見!

本文所有圖片、視頻及文字内容,均為原創,轉載時請保留版權信息。

查看更多Scratch編程教程,請點擊下一行的了解更多,進入程序員豬豬的頭條主頁。

點擊關注,每天接收更新哦。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved