2024-08-08|閱讀時間 ‧ 約 7 分鐘

GameMaker|for迴圈|程式基礎

這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。有了這些概念,各位會更容易理解,要如何設計程式碼。

本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。


前置知識


在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。


for迴圈的簡介


如果我們希望,讓某段程式碼,重複執行N次,那我們就可以考慮使用「for迴圈」。

由於迴圈的種類有很多種,所以這種語法,通常都會稱呼為「for迴圈」,而不會簡稱為for,或是迴圈。

以下我們展示一段,for迴圈的使用範例:

//讓a++的程式碼,重複執行10次​
for (var _i = 0 ; _i <= 9 ; _i ++) {
a ++ ;
}


我們可以把for迴圈,理解成下面5個步驟:


1.將一個變數,進行賦值的動作


在上面的範例裡,我們定義了一個「_i」的局部變數,並將他設定為0。

這個變數的用途,是用來判定,for迴圈是否要繼續執行。


2.檢查for迴圈是否要結束


在上面的範例裡,用來檢查的判別式為「_i <= 9」,意思是,只要_i小於等於9,那for迴圈就繼續執行。

這邊給各位兩個口訣:「true就執行」或「false就跳出」,選一個記起來就好。


3.執行for迴圈裡的程式碼


在上面的範例裡,執行的程式碼是「a ++」。換句話說,每執行一次for迴圈,a就會執行+1的動作。


4.遞增或遞減,用來判定for迴圈的變數


在上面的範例裡,我們是用「_i ++」的程式碼,這表示每次執行完,for迴圈內的程式碼之後,_i就會執行+1的動作。

如果要用遞減,那就是使用「--」的符號。


5.返回步驟2,決定要不要繼續執行


以這段範例來說,_i會從0跑到9,換句話說,這個for迴圈總共會執行10次。


for迴圈


從上面的範例中,我們已經理解了,for迴圈的基本結構,這邊要再講解一些,使用for迴圈時,所需要知道的事項。

首先是變數範圍(Variable Scope),在上面的範例中,我們是使用局部變數,來定義_i,這是一個常見的作法。

也就是說,當這個for迴圈結束之後,_i就會被刪除,不會留在記憶體當中,畢竟,這個變數只是用來充當「計時器」,沒有必要繼續留著。


再來,這個_i變數,其實也可以應用在for迴圈裡面,例如以下的程式碼:

//利用for迴圈,讓a等於1加到10
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
}


第一次執行,a會等於1(0+1),第二次執行,a會等於3(1+2),第三次執行,a會等於6(3+3),以此類推下去,最後a就會變成1到10的總和。

因為變數遞增的性質,for迴圈十分適合用在,用來改變陣列(Array)裡的數值。

關於這方面的應用,將會在陣列的教學中講解:

GameMaker|Array 陣列|程式基礎


break


在switch的教學中,有講到break的語法,而在迴圈當中(任何類型的迴圈),也能使用break語法。

在迴圈當中,如果遇到break,表示終止「目前運行的整個迴圈」,例如以下的程式碼:

//當_i等於6時,迴圈中斷,因此a只會從1加到5
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
if (_i == 6) {
break ;
}
a = a + _i ;
}


上述之所以會說「目前運行的」,是因為迴圈也能「套娃式」的使用,如果是在內層的迴圈裡使用break,那跳出去之後,外層的迴圈依然會繼續執行。


continue


上一個break,是終止整個迴圈,那能不能,只跳過「某一段的迴圈」就好?答案是使用

「continue」的語法。

以下是continue的範例:

//只跳過+5的迴圈,其他迴圈都正常執行
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
if (_i == 5) {
continue ;
}
a = a + _i ;
}


這邊要注意一點,不管是break,或是continue,他們的「位置」很重要,因為在這些語法上方的程式碼,依然會執行,只有下方的內容,會被斷掉,例如:

//如果把break,擺到這個位置,那a就會變成1加到6
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
if (_i == 6) {
break ;
}
}

//完全沒有意義,因為加完才跳過,所以a最後還是變成1加到10
a = 0 ;
for (var _i = 1 ; _i <= 10 ; _i ++) {
a = a + _i ;
if (_i == 5) {
continue ;
}
}




🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔


✨祝各位也能開心的做出好遊戲✨

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.