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,那程式就有可能,一路往下執行到結束,這樣就會失去,多選一的用途了。




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


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

免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
留言0
查看全部
發表第一個留言支持創作者!
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
派對遊戲需要多人才好玩,但實際上在玩Switch時,大多還是一至二人遊玩。 所以就來介紹我跟兒子一起玩過的兩人合作遊戲吧! 這邊主要還是著重在兩人合作過關或合作打怪。 若是只能兩人對戰的遊戲,就不在這裡介紹喔...
當初買Switch時,主要就是因為兒子想玩派對遊戲! 除了幾乎不降價的本家派對遊戲外,有些第三方的派對遊戲反而CP值高喔!
當初買Switch時,主要就是因為大一想玩派對遊戲! 我覺得Switch的派對遊戲要具備幾個特性:...
Switch的遊戲也有免費的喔! 有些免費的遊戲,其實還不錯玩呢! 不過,要玩這些免費遊戲,就必須透過eshop下載數位版。 所以,若不清楚數位版怎麼下載,可參考我之前寫過的文章嘍。 以下介紹的,就是我跟大一有玩過的免費遊戲...
正式成為NSO會員,就開始斯普拉遁3吧! 記得很久前初接觸CS(絕對武力)時,我就喜歡上這類的射擊遊戲! 當時,甚至沉迷到老婆下令把軟體從電腦上移除,才肯取消對我的冷戰! 之後,就也不再敢碰這類射擊遊戲。 直到入手了Switch,陸續買了遊戲...
分享了我敗的Switch週邊物,重頭戲還是遊戲的體驗! 目前共入手了三款實體卡跟三十幾款的數位版遊戲,看來,可以寫好幾篇啦!在分享我玩過的遊戲前,一定要先說說NSO會員。 Switch大部分的遊戲是不需要網路連線的,但有些遊戲則需要加入NSO會員,才能玩得更有趣豐富...
衷心建議可入手一支Pro手把搖桿!相信會大幅提昇玩遊戲的手感體驗。 至於副廠還是原廠,就看自己是大人還是小孩啦!哈! 對我而言,Switch的週邊物,記憶卡跟Pro手把搖桿是必備的! 至於以下我用過的週邊物,就是算敗家品啦!
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
派對遊戲需要多人才好玩,但實際上在玩Switch時,大多還是一至二人遊玩。 所以就來介紹我跟兒子一起玩過的兩人合作遊戲吧! 這邊主要還是著重在兩人合作過關或合作打怪。 若是只能兩人對戰的遊戲,就不在這裡介紹喔...
當初買Switch時,主要就是因為兒子想玩派對遊戲! 除了幾乎不降價的本家派對遊戲外,有些第三方的派對遊戲反而CP值高喔!
當初買Switch時,主要就是因為大一想玩派對遊戲! 我覺得Switch的派對遊戲要具備幾個特性:...
Switch的遊戲也有免費的喔! 有些免費的遊戲,其實還不錯玩呢! 不過,要玩這些免費遊戲,就必須透過eshop下載數位版。 所以,若不清楚數位版怎麼下載,可參考我之前寫過的文章嘍。 以下介紹的,就是我跟大一有玩過的免費遊戲...
正式成為NSO會員,就開始斯普拉遁3吧! 記得很久前初接觸CS(絕對武力)時,我就喜歡上這類的射擊遊戲! 當時,甚至沉迷到老婆下令把軟體從電腦上移除,才肯取消對我的冷戰! 之後,就也不再敢碰這類射擊遊戲。 直到入手了Switch,陸續買了遊戲...
分享了我敗的Switch週邊物,重頭戲還是遊戲的體驗! 目前共入手了三款實體卡跟三十幾款的數位版遊戲,看來,可以寫好幾篇啦!在分享我玩過的遊戲前,一定要先說說NSO會員。 Switch大部分的遊戲是不需要網路連線的,但有些遊戲則需要加入NSO會員,才能玩得更有趣豐富...
衷心建議可入手一支Pro手把搖桿!相信會大幅提昇玩遊戲的手感體驗。 至於副廠還是原廠,就看自己是大人還是小孩啦!哈! 對我而言,Switch的週邊物,記憶卡跟Pro手把搖桿是必備的! 至於以下我用過的週邊物,就是算敗家品啦!