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 方法。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
派對遊戲需要多人才好玩,但實際上在玩Switch時,大多還是一至二人遊玩。 所以就來介紹我跟兒子一起玩過的兩人合作遊戲吧! 這邊主要還是著重在兩人合作過關或合作打怪。 若是只能兩人對戰的遊戲,就不在這裡介紹喔...
當初買Switch時,主要就是因為兒子想玩派對遊戲! 除了幾乎不降價的本家派對遊戲外,有些第三方的派對遊戲反而CP值高喔!
當初買Switch時,主要就是因為大一想玩派對遊戲! 我覺得Switch的派對遊戲要具備幾個特性:...
Switch的遊戲也有免費的喔! 有些免費的遊戲,其實還不錯玩呢! 不過,要玩這些免費遊戲,就必須透過eshop下載數位版。 所以,若不清楚數位版怎麼下載,可參考我之前寫過的文章嘍。 以下介紹的,就是我跟大一有玩過的免費遊戲...
正式成為NSO會員,就開始斯普拉遁3吧! 記得很久前初接觸CS(絕對武力)時,我就喜歡上這類的射擊遊戲! 當時,甚至沉迷到老婆下令把軟體從電腦上移除,才肯取消對我的冷戰! 之後,就也不再敢碰這類射擊遊戲。 直到入手了Switch,陸續買了遊戲...
分享了我敗的Switch週邊物,重頭戲還是遊戲的體驗! 目前共入手了三款實體卡跟三十幾款的數位版遊戲,看來,可以寫好幾篇啦!在分享我玩過的遊戲前,一定要先說說NSO會員。 Switch大部分的遊戲是不需要網路連線的,但有些遊戲則需要加入NSO會員,才能玩得更有趣豐富...
衷心建議可入手一支Pro手把搖桿!相信會大幅提昇玩遊戲的手感體驗。 至於副廠還是原廠,就看自己是大人還是小孩啦!哈! 對我而言,Switch的週邊物,記憶卡跟Pro手把搖桿是必備的! 至於以下我用過的週邊物,就是算敗家品啦!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
派對遊戲需要多人才好玩,但實際上在玩Switch時,大多還是一至二人遊玩。 所以就來介紹我跟兒子一起玩過的兩人合作遊戲吧! 這邊主要還是著重在兩人合作過關或合作打怪。 若是只能兩人對戰的遊戲,就不在這裡介紹喔...
當初買Switch時,主要就是因為兒子想玩派對遊戲! 除了幾乎不降價的本家派對遊戲外,有些第三方的派對遊戲反而CP值高喔!
當初買Switch時,主要就是因為大一想玩派對遊戲! 我覺得Switch的派對遊戲要具備幾個特性:...
Switch的遊戲也有免費的喔! 有些免費的遊戲,其實還不錯玩呢! 不過,要玩這些免費遊戲,就必須透過eshop下載數位版。 所以,若不清楚數位版怎麼下載,可參考我之前寫過的文章嘍。 以下介紹的,就是我跟大一有玩過的免費遊戲...
正式成為NSO會員,就開始斯普拉遁3吧! 記得很久前初接觸CS(絕對武力)時,我就喜歡上這類的射擊遊戲! 當時,甚至沉迷到老婆下令把軟體從電腦上移除,才肯取消對我的冷戰! 之後,就也不再敢碰這類射擊遊戲。 直到入手了Switch,陸續買了遊戲...
分享了我敗的Switch週邊物,重頭戲還是遊戲的體驗! 目前共入手了三款實體卡跟三十幾款的數位版遊戲,看來,可以寫好幾篇啦!在分享我玩過的遊戲前,一定要先說說NSO會員。 Switch大部分的遊戲是不需要網路連線的,但有些遊戲則需要加入NSO會員,才能玩得更有趣豐富...
衷心建議可入手一支Pro手把搖桿!相信會大幅提昇玩遊戲的手感體驗。 至於副廠還是原廠,就看自己是大人還是小孩啦!哈! 對我而言,Switch的週邊物,記憶卡跟Pro手把搖桿是必備的! 至於以下我用過的週邊物,就是算敗家品啦!