上一節中講過使用表格來存儲和處理遊戲中的資料。這一節我們直接上手,學習表格中的資料處理,我們将會實作以下的内容:
- 建立一個10行10列(10x10)的表格,預設值都設定為0
- 随機的在表格中插入一行資料1
- 逐行周遊,找到滿足條件的行(即整行的資料都是1)
建立表格
在“資料區”中點選“建立表格”按鈕,建立一個叫做“網格”的全局變量。
會看到一個表格編輯的視窗,點選“新增行”和“新增列”建立一個10行10列的表格。
将所有格子中的資料都設定為“0”,最後看起來應該是這樣。
這樣一個10x10的所有預設資料為0的表格就建立好了。
随機在表格中插入一行資料
為了友善示範,我在場景中增加了兩個按鈕,一個叫做“加入一行”,一個叫做“查找比對”。我們會把插入邏輯和查找邏輯分别放在對應的按鈕對象上。
你可以對照着下圖添加你的素材。
在“加入一行”對象上建立兩個局部變量:行号和列号。
接着,我們直接看代碼邏輯。
如果一下看不明白,也無需着急。對着下面的分析再多看幾遍。
因為我們的表格一共10行,是以這裡我們取了1~10之間的随機整數,作為将要設定的行,并且将這個數字儲存在了局部變量“行号”中(通常對于後續需要用到的資料,都會用局部變量來存儲)。循環開始前将列号設定為1,因為要從第1列開始依次向後設定,直到第10列。假設随機到了第1行後,開始進入循環,首先會将表格中第1行第1列的數字設定為1,接着第1行第2列,直到第1行第10列後,循環結束。這樣第1行中所有的10個數字就都從0變為了1。
接下來,我們驗證一下,點選預覽場景右側的下拉小箭頭,選擇“調試場景”。
調試場景像下面這樣,你以後會經常用到。點選“系統全局”可以看到我們建立的全局變量“網格”,滑鼠移動網格的資料上,會顯示目前網格的資料。
接着點選“加入一行”,可以看到我們為它建立的兩個局部變量,“行号”和“列号”。
現在,點選一下場景中的“加入一行”按鈕,你會看到“行号”和“列号”的局部變量發生了變化,目前“行号”為9,意味着我們随機到了數字9,即将表格中第9行的所有資料設定成了1。
看一下系統全局中的網格資料,是否是第9行被設定為了1。
第9行的資料确實都被設定為了1,證明了我們邏輯沒有問題。你可以多點選幾次“加入一行”按鈕,多設定幾行表格資料,在全局變量中檢視。
查找滿足條件的行
我們的查找邏輯是這樣的:從上往下,依次查找表格中的每一行,如果一行中所有的資料都是1,那麼記錄一下這一行的行号,直到表格查找結束。
首先,我們建立4個局部變量。
“行号”和“列号”用于循環,“都是1”用來表示目前一行的資料是否都是1,如果滿足條件的話設定為1,不滿足的話設定為0,
建立一個清單局部變量“比對行”,用于記錄目前滿足條件的行号,因為表格中可能會有多行滿足條件,是以這裡我們使用清單來記錄所有滿足條件的行号。
下面我們來看一下查找比對的邏輯:
這裡有一個難點就是“雙重循環”,如果你周遊的資料隻有一行的話,那麼隻需要一個循環就可以了,但是,當你要周遊10行10列的資料時,就需要用到“雙重循環”。一個循環用于行,一個循環用于列。它隻是看上去複雜,認真的分析一下其實不難了解。
我們從表格的第一行開始檢查,想象一下我們從表格中拿出了第一行資料,然後從這一行資料的第一個一直檢查到最後一個,看看是否有數字不為1,隻要有一個數字不為1,就證明這一行不符合條件,就沒有必要接着往下檢查了。檢查完一行後,如果它符合條件我們就把這一行的行号記錄下來,放到“比對行”的清單中。接下來再取出第二行,進行同樣的操作,直到取完第十行為止。
點選“調試場景”,檢查一下邏輯是否有問題,先點選幾次“加入一行”按鈕,随機的在表格中加入幾行資料。
接着點選“查找比對”按鈕,選擇“查找比對”,看一下“比對行”局部變量的資料。
如圖,找到了第7,6,1行是滿足條件的。
小提示:因為我們總是在清單中的第1項插入資料,是以最後的結果是[7,6,1],是倒序。真實過程是這樣的,檢查到第1行滿足條件,插入清單,清單變為[1],接着檢查到第6行滿足條件,插入清單,清單變為[6,1],接着第7行滿足條件,插入清單,清單變為[7,6,1]。
總結一下
這一節我們學習了表格的建立,設定,周遊和查找操作。并且學習了使用“調試場景”在遊戲運作時檢視全局變量和局部變量,來驗證邏輯是否正确。