這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。有了這些概念,各位會更容易理解,要如何設計程式碼。
本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。
在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。
在我們常用的數學裡,加減乘除會被稱作運算子(Operator),而數字會被稱為運算元(Operand)。
在程式語言裡面,也是類似的概念,只是運算子的種類,不只有加減乘除,還有其他類型的運算子,例如:賦值運算子、比較運算子、邏輯運算子,等等。
而程式語言裡面的運算元,則是變數(Variable)、函式(Function),以及各種不同類型的數值。
在這篇教學中,只會介紹比較常用的運算子,並且在最下方,附上官方的說明書連結。
如果遇到沒見過的運算子,可以試著在說明書裡,尋找答案。
賦值的意義,已經在變數的教學中說明過,而「=」的符號,就是GameMaker中的賦值運算子。
//賦值運算子的使用範例
a = 3 ;
b = "Hi" ;
我們常見的加減乘除,就是所謂的算術運算子,只是除法的部分,會分的比較細,有取小數的、有取商數的、有取餘數的。
算術運算子的用法,跟我們常用的數學一樣,是先乘除,後加減,如果有遇到括號,則會先運算括號裡的內容。
此外,乘方(同個數連續相乘,例如:53)在GameMaker中,是使用Runtime Function來處理,而「不是」使用我們常見的「^」符號(^有另外的功能,但初學者用不到)。
下方將會展示一些例子:
a = 1 + 2 ; //結果,a=3
a = 3 - 1 ; //結果,a=2
a = 5 * 2 ; //結果,a=10
a = 9 / 2 ; //結果,a=4.5,這個是取小數
a = 9 div 2 ; //結果,a=4,這個是取商數
a = 9 mod 2 ; //結果,a=1,這個是取餘數
a = 9 % 2 ; //結果,a=1,這個是取餘數
a = 5 + 1 * 2 ;//結果,a=7,記得要先乘除,後加減,如果怕搞亂,建議加上括號
a = 5 + (1 * 2) ; //加上括號,會有比較高的辨識度
a = power( 5 , 3 ) ; //結果,a=125,這個函式代表5的三次方
上面是一些普通的運算,接下來會展示一些,利用算術運算子,和賦值運算子,所結合出來的特殊運算功能:
a += 1 ; //表示a=a+1
a -= 1 ; //表示a=a-1
a *= 2 ; //表示a=a*2
a /= 2 ; //表示a=a/2
a %= 2 ; //表示a=a%2
//div和mod,無法使用這種結合功能
最後要講一下,除了實數(Real Number)的計算之外,其他類型的資料,也有類似的用法,例如:字串(String)的相加。
不過,這邊沒打算進行講解,只是讓各位有這個概念。如果之後有遇到相關的範例,會再花點時間來說明。
所謂的遞增和遞減,分別是「++」和「--」,常見的用法如下:
a ++ ; //表示a=a+1
a -- ; //表示a=a-1
上述的功能,是在程式中,很常見的功能,不管是規劃計時器,或是改變物件的狀態,都有可能會使用到。
另外,遞增和遞減,還有類似「++a」、「b=++a」、「b=a++」的用法。
個人是覺得,初學者用不到這些功能,因此這邊並不打算講解。如果之後有遇到相關的範例,會再花點時間來說明。
所謂的比較運算子,就是大於、小於、等於,這種類型的運算功能。
比較運算子有個特色,那就是比較完之後,會回傳一個true或false的數值(算式成立,會回傳true,不成立的話,會回傳false)。
也因為這個特色,導致比較運算子,常常會搭配「if else」的功能來使用(if收到true會執行,收到false會不執行)。
以下是一些常用的範例:
if (a > b) {/*程式碼*/} //如果a大於b,就執行程式碼
if (a >= b) {/*程式碼*/} //如果a大於等於b,就執行程式碼
if (a < b) {/*程式碼*/} //如果a小於b,就執行程式碼
if (a <= b) {/*程式碼*/} //如果a小於等於b,就執行程式碼
if (a == b) {/*程式碼*/} //如果a等於b,就執行程式碼,注意,要使用"兩個等於"符號
if (a != b) {/*程式碼*/} //如果a不等於b,就執行程式碼,"驚嘆號"代表"不"的意思
邏輯運算子的用法,跟比較運算子相似,也是會回傳true和false的數值。如果用簡單的說法來舉例,大概就是:當A「和」B都成立的時候,就回傳true。
除了「和」以外,還有「或」、「互斥或」、「不」,這些邏輯運算子。
邏輯運算子通常會和比較運算子,一起做使用。以下會用一些範例,來做說明:
//如果a大於b,且c大於d,就執行程式碼(兩個都成立才能執行)(兩種符號通用)
if (a > b) and ( c > d ) {/*程式碼*/}
if (a > b) && ( c > d ) {/*程式碼*/}
//如果a大於b,或c大於d,就執行程式碼(其中一個成立就執行)(兩種符號通用)
if (a > b) or ( c > d ) {/*程式碼*/}
if (a > b) || ( c > d ) {/*程式碼*/}
//以下是"互斥或"的寫法,但暫時不說明,未來如果有用到,會再另外說明(兩種符號通用)
if (a > b) xor ( c > d ) {/*程式碼*/}
if (a > b) ^^ ( c > d ) {/*程式碼*/}
//"驚嘆號"表示"不"的意思,各位可以用"相反"的概念來理解
//當滑鼠左鍵"沒有"被按下時,就執行程式碼(有的相反是沒有)
if (!mouse_check_button_pressed(mb_left)) {/*程式碼*/}
這邊深入探討一下,最後一個「不」的範例。
範例裡的函式,會在滑鼠的左鍵按下時,回傳true的數值,但因為前面有個驚嘆號,因此訊號就會被「相反」,變成了false。
當if收到false的數值,就不會執行程式碼,最終,就變成了:當滑鼠左鍵「沒有」被按下時,就執行程式碼。
其實大部分的運算子,都已經講解過了,但如果你想要深入了解,其他比較進階的運算子,可以參考官方提供的說明書。
🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔
✨祝各位也能開心的做出好遊戲✨