這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。有了這些概念,各位會更容易理解,要如何設計程式碼。
本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。
在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。
在幼幼班的內容裡,已經有簡單的介紹,if else的基礎概念。這裡的教學,將會更詳細的說明,之前沒有提到的使用方法。
我們先來看一下,官方的說明書裡,是如何定義if else的:
if (<expression>)
{
<statement> ;
<statement> ;
...
}
這邊需要補充一點,那就是官方對Statement的定義,是比較寬鬆的,只要是能夠運行的程式碼,都能夠被稱為Statement。
換句話說,像是「賦值(Assignment)」這種類型的表達式(Expression),也是會被分類成Statement。
至於if後方的表達式,一般都是放入比較運算(Comparison)或邏輯運算(Logical)的程式碼。因此通常會稱呼為「條件式」或「判別式」。
如果放入賦值、字串,這一類的表達式,雖然程式不會報錯,也能夠執行,但這是沒有意義的。因為if要收到布林值(Boolean)的資料,才會產生動作。
這是if的圖解:
這是一段if的範例:
//如果滑鼠的左鍵點下
if (mouse_check_button_pressed(mb_left)) {
//隨機改變座標的位置,但不會超出畫面
randomise() ;
id.x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
id.y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
}
通常我們會習慣,讓if裡面的程式碼,進行「縮排」的動作,就是按鍵盤上的「Tab」,來輸入一些「空白」的符號。
讓同一組,或是同一個區塊的程式碼,對齊到同一個縮排位置,是大多數工程師的習慣,因為這樣能更容易的讀懂程式碼。
另外,判別式的外側,通常會加上括號,雖然不使用,GameMaker也一樣能運作,但是加上括號後,就能更容易的讀懂程式碼。
//有加括號的判別式
if (a > 0) && (b > 0) {/*程式碼*/}
//沒加括號的判別式
if a > 0 && b > 0 {/*程式碼*/}
以下是if else的圖解:
這是一段if else的範例:
//如果a大於0,將座標設成(50,50)
//如果沒有,則把座標設成(10,10)
if (a > 0) {
id.x = 50 ;
id.y = 50 ;
} else {
id.x = 10 ;
id.y = 10 ;
}
else的功能,是當if的程式碼,沒有被執行的時候,就會執行else區塊裡的程式碼。
也因為這樣子的觸發條件,所以else的後方,是不需要放置判別式的。
以下是else if的圖解:
這是一段else if的範例:
//依照變數的條件,來改變實體的座標位置
if (a > 0) {
id.x = 0 ;
id.y = 0 ;
} else if ( a > 10) {
id.x = 10 ;
id.y = 10 ;
} else if ( a > 20) {
id.x = 20 ;
id.y = 20 ;
} else {
id.x = 30 ;
id.y = 30 ;
}
上面這段程式碼,會由上往下,來查看判別式的內容,只要發現true的數值,就會執行區塊裡的程式碼。執行完之後,會略過其他的else if和else,去執行下一段程式碼。
換句話說,就是一個多選一的程式碼,只要做完一個,其他的程式碼就不會去執行了。
else if沒有數量上限,可以依照需求來增減。至於最後的else,功能跟上個if else提到的一樣,只要上面所有的if都沒達成,那else就會執行。
不過,else的功能,是可有可無的,意思是,你也可以拿掉,只用if和else if。在這種情況下,只要條件都不符合,那就是去執行下一段的程式碼。
套娃式的if大概長這樣:
if (a > 0) {
a = a + 1 ;
b = a + c ;
if (b > 0) {
a ++ ;
c ++ ;
}
a = b + c ;
c = a + c ;
}
像這種,一層套一層的程式碼,在程式設計中,是很常見的事情。這也是為什麼,我會在前面的內容中提到,程式碼要利用縮排的方式,來進行撰寫。
如果沒有用縮排的話,就會長的像下面這樣,非常的難看懂:
//超不建議的撰寫方式
if (a > 0) {
a = a + 1 ;
b = a + c ;
if (b > 0) {
a ++ ;
c ++ ;
}
a = b + c ;
c = a + c ;
}
🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔
✨祝各位也能開心的做出好遊戲✨