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
留言分享你的想法!
avatar-img
開心做遊戲 Happy Making Game
11會員
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
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
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、物件改變會影響實體。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
Thumbnail
這篇內容,將教你如何安裝GameMaker,並更改語言設定。包括GameMaker的下載說明、版本說明、安裝說明、語系更改。
Thumbnail
這篇內容,將教你如何安裝GameMaker,並更改語言設定。包括GameMaker的下載說明、版本說明、安裝說明、語系更改。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News