GameMaker|switch|程式基礎

更新 發佈閱讀 6 分鐘

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

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

raw-image


前置知識


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


switch的簡介


如果我們希望,透過某個變數(Variable)的「數值狀態」,來決定運行的程式碼,那就可以考慮使用「switch」。

由於switch和if else,在某些狀況下,是可以進行轉換的。因此這邊我們放兩段,功能一樣的程式碼,來讓各位裡解,switch的使用原理。

//這是if else的程式碼
if (a == 1) {
b = a + 1 ;
} else if (a == 2) {
b = a + 2 ;
} else {
b = a ;
}

//這是​switch的程式碼,功能跟上面那段一樣
switch (a) {
case 1:
b = a + 1 ;
break ;
case 2:
b = a + 2 ;
break ;
default:
b = a ;
break ;
}


簡單來說,switch的後方,放置要進行比較的變數,而case後面,則是放置要比較的數值資料(不一定要實數,字串、布林值也可以)。

在每個區塊結束後,需要加入「break」的語法,這表示跳出這個switch。雖然不加也行,但那會造成其他的運行結果,這會在更下方的內容中說明。

最後的default,功能就跟else一樣,也是可有可無的。


除了放置變數以外,通常還可以使用「會回傳數值的函式」,來當作要比較的條件,例如以下的程式碼:

//此函式的功能,是滑鼠的左鍵按下時,會回傳true,沒有的話,則回傳false
switch (mouse_check_button_pressed(mb_left)) {
case true:
id.x = 10 ;
break ;
case false:
id.y = 10 ;
break ;
}


switch


上面已經用簡單的範例,來解釋switch的基本用法,接下來,我們來看看官方的說明書,順便解釋一些,其他可行的用法。

以下是官方說明書的內容:

switch (<expression>)
{
case <constant1>:
<code>
break;
case <constant2>:
<code>
break;
//more cases (with breaks)
default:
<code>
break;
}


Constant,指的是數值資料,意思是只能放變數、實數、字串,等等的內容。不能放置賦值、比較、邏輯,這種類型的程式碼。

至於switch的後面,實際上可以放置,任何的表達式。以下展示一個,雖然可以運行,但實際上,沒有什麼意義的程式:

//1等於1,所以會回傳true的數值
//接著會因為"true等於true",而執行第一個case的程式碼
switch (1 == 1) {
case true:
show_message("true") ;
break ;
case false:
show_message("false") ;
break ;
}


break


我們直接看,以下的這段範例:

//當按下方向鍵,或是ASDW的按鍵時,能夠朝著上下左右移動
switch (keyboard_key) {
//按著"左"或"A"的時候,實體往左邊移動,移動速度是4
//以下皆是相同邏輯的程式碼,只是移動的方向不同
case vk_left:
case ord("A"):
id.x -= 4 ;
break ;

case vk_right:
case ord("D"):
id.x += 4 ;
break ;

case vk_up:
case ord("W"):
id.y -= 4 ;
break ;

case vk_down:
case ord("S"):
id.y += 4 ;
break ;
}


從上面的這段範例,我們就可以知道,break的位置,能夠影響switch的運行方式。

如果用簡單的比喻,可以把break,理解成「終止線」。當程式運行到終止線時,就會終止switch,去執行下一段的程式碼。

接著,我們把上面那段程式碼,稍微做個改良,看看會發生什麼事情:

//為了精簡,這邊只保留了,往左邊移動的區塊
//在左鍵的case裡,加入了一行,往左移動的程式,移動速度是4
switch (keyboard_key) {
case vk_left:
id.x -= 4 ;
case ord("A"):
id.x -= 4 ;
break ;
}


這裡直接秀GIF,讓各位看一下結果:

不一樣的移動速度

不一樣的移動速度


如果我們是用「A鍵」,那移動速度會是4,但如果我們改用「左鍵」,那移動速度就會變成8。

理由也相當簡單,因為當左鍵按下時,程式會執行「2次的移動」,才會遇到break,但如果是用A鍵,那就只會移動1次。

上述的例子,是switch的特殊用法,但同時,也是初學者常犯的錯誤。如果忘了加上break,那程式就有可能,一路往下執行到結束,這樣就會失去,多選一的用途了。




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


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

留言
avatar-img
開心做遊戲 Happy Making Game
12會員
68內容數
免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News