小屋創作

日誌2011-02-26 15:39

【RGSS/Ruby】判斷句,true/false/nil,及函式

作者:解凍豬腳

ㄤ骯

所謂RGSS

是RPG Maker XP中,

使用的腳本系統。(Ruby Game Scripting System)

因為我現在是發在小屋,

所以以上就是簡單介紹一下囉。



看到很多人都不知道該怎麼改/寫RGSS

常常出問題都只能問別人

我想要推廣這個觀念...

「給他魚吃,不如教他怎麼釣魚!」

今天就要講一些簡單、基本的RGSS囉!


一、判斷句

判斷句在RGSS中是非常重要的一環,

如果連這個都不會,

你就不用妄想要會RGSS了!

判斷句中,常用的有

if判斷句、unless判斷句 和 case判斷句,

那我就先從最簡單的if判斷句開始講囉。
(1)判斷句《if判斷句》

先來個示範吧:

if @a == 3
    print "@a的值與三相等"
end

以上這段的翻譯如下:

如果局部變數@a
# 局部變數是在同個腳本內可共用,到其他腳本就不行,局部變數名前面是@
# 另有一個"全局變數",所有腳本可以共用,開頭是$
與3相等的話,

就彈出一個msgbox,    # msgbox是一般寫程式的人對通知視窗的通稱

並在msgbox內顯示"@a的值與三相等"

這是最簡單的一個判斷句。

再來要加深了哦!

if @a == 3
    print "@a的值與三相等"
elsif @a == 4 and @b == 5
    print "@a的值是四,而且@b等於五"
elsif @a == 5
    print "@a和五相等"
else
    print "@a的值不三不四,也不是五"
end

接下來當然就是翻譯囉~

如果局部變數@a

與3相等的話,

就彈出一個msgbox,

並在msgbox內顯示"@a的值與三相等"
  
如果以上條件沒達到,且@a等於4、@b等於五的話,

就彈出"@a的值是四"的msgbox

如果以上條件都沒達到的話

就彈出"@a的值不三不四,也不是五"的msgbox(不三不四...?!)

上面的elsif是可以依照需求再延伸的,

所以你不必擔心說如果if判斷句要判斷多個條件時,該怎麼辦!

else必須寫在elsif之下,

如果elsif的條件跟else的條件都有達成,

那就只把elsif那段腳本執行完就直接跳到end了。
(2)判斷句《unless判斷句》

其實unless判斷句跟if判斷句一樣簡單

我這裡只概述一下就好。

unless @a == 3
    print "@a的值不等於3"
end

看出來是什麼意思了嗎?

其實unless就是if的相反,

我通常把它解釋作「如果沒有」。

(官方說明unless的方式太爛了,居然解釋作「除非」,這誰看得懂啊...)
(3)判斷句《case判斷句》

case判斷句很簡單,是個if判斷句偵測數值的簡約版,

case @variable01
when 1
    print "@variable01的值與一相等"
when 2
    print "@variable01的值是二"
else
    print "@variable01的值不是一,也不是二"
end

我對以上腳本的解釋是這樣的(這裡我逐句翻譯,比較好懂):

取得@variable01的值
如果它等於 1
    彈出"@variable01的值與一相等"的msgbox
如果它等於 2
    彈出"@variable01的值是二"的msgbox
如果都不是
    彈出"@variable01的值不是一,也不是二"的msgbox
結束分歧



二、true、false與nil

truefalse分別解釋作"真"與"假",

都是一個常數(常數:為無法改變的一個值,像是1、2、3、圓周率等等)

通常我們在事件裡的開關會看到ON/OFF,

其實ON跟OFF跟系統裡面,分別是用truefalse進行讀取。

truefalse可以用來檢視系統的各個狀況,以維持腳本的完整性。

比如說有個Window_Base視窗@window001,

@window001.disposed?

像是這個值就是用來取得"@window001"是否已經"被釋放",

(註:"釋放"是把一個變數清空,使其成為nil,而nil這個東西,在後面會講到。)

如果已經被釋放,就返回真(true)

(註:「返回」可解作「把整個值當作」,
像是@window001.disposed?這時候在系統裡就是true
因為@window001已經是被釋放的狀態。)

這就是"真"(true)的定義及例子,false則與true的意義相反。



接下來要說的是nil這個東西,

nil在拉丁文中的意義是 "零",但是nil在這裡,實際上並不等於0,

而是"無"的意思,

nilfalse在某種程度上是相等的東西,

如果聽不懂的話就把nilfalse分開用就好。


三、函式

函式也是不可或缺的一部分,

首先來說一下函式是什麼吧,

如果你國一下的數學沒有認真讀的話,

你不會知道函式是什麼東西的

函式示意:
原料→函式→成品

也就是說,

你往函式輸入一個東西之後,

經過函式的處理及計算,會有一個成品出現。

比如,f(x) = y = 3x+2

意思就是說,

如果你把一個值x丟入f(x)的這個函式,

就會將x乘以三、再加上2,之後"返回"計算結果,

像是f(3)經過處理之後,就會等於11。

而在程式的世界中,

函式是可以一次丟一堆東西進去,

而且不見得一定要丟數字!

函式在程式的世界裡面,

通常被拿來"處理東西",

而不是純粹計算。

現在就直接切入主題,講基礎的定義方法吧!

def f(x)
    return 3*x+2
end

上面這段就相當於我剛剛說的f(x)=3x+2的函式。

返回3和x相乘,再加上2而得出來的值。

其中的def就是"定義函式"的意思,

return就是"返回",

返回3x+2之後,f(3)得到的就會是11,

比如說定義完成之後執行:

print f(3)+2000

這時候就會跳出寫著2011的一個視窗。

但是以上都只是數學式的函式!

如果我想定義一個偵測值而處理東西的函式,

可以像以下一樣:

def function(var)
    if var > 100
        print "var大於100"
    else
        print "var不大於100"
    end
end

將這個函式定義完之後,我們只要執行

function(10000)

就會彈出"var大於100"的msgbox,

當然如果我執行

function(70)

就會彈出"var不大於100"的msgbox,

以上就是函式的基本定義方法,

至於要如何靈活運用,寫出一個好的函式,

就是寫RGSS的重點所在。



基本上都學會了嗎?

我希望我寫了快兩個小時的教學,你們能認真看完。

還有不懂的,就先自己摸索看看,

如果還是沒有頭緒,直接問我就行。

今天就先講到這裡了,如果反應熱烈,

我就會寫更多教學文章給大家看,謝謝觀賞

7

10

LINE 分享

相關創作

Anya Melfissa - 口說練習的秘訣

第七章 醫療所

月底製作日誌兼雜談-第51回(2024/04)

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】