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

GameMaker|if else|程式基礎

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

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


前置知識


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


if else的簡介


在幼幼班的內容裡,已經有簡單的介紹,if else的基礎概念。這裡的教學,將會更詳細的說明,之前沒有提到的使用方法。

我們先來看一下,官方的說明書裡,是如何定義if else的:

if (<expression>)
{
<statement> ;
<statement> ;
...
}


這邊需要補充一點,那就是官方對Statement的定義,是比較寬鬆的,只要是能夠運行的程式碼,都能夠被稱為Statement。

換句話說,像是「賦值(Assignment)」這種類型的表達式(Expression),也是會被分類成Statement。


至於if後方的表達式,一般都是放入比較運算(Comparison)或邏輯運算(Logical)的程式碼。因此通常會稱呼為「條件式」或「判別式」。

如果放入賦值、字串,這一類的表達式,雖然程式不會報錯,也能夠執行,但這是沒有意義的。因為if要收到布林值(Boolean)的資料,才會產生動作。


if


這是if的圖解:

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的圖解:

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的圖解:

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大概長這樣:

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 ;
}




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


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

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