7 GP
【RGSS/Ruby】判斷句,true/false/nil,及函式
作者:解凍豬腳│RPG 製作大師│2011-02-26 15:39:57│巴幣:13│人氣:1267
ㄤ骯所謂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
true跟false分別解釋作"真"與"假",都是一個常數(常數:為無法改變的一個值,像是1、2、3、圓周率等等)通常我們在事件裡的開關會看到ON/OFF,其實ON跟OFF跟系統裡面,分別是用true和false進行讀取。而true和false可以用來檢視系統的各個狀況,以維持腳本的完整性。比如說有個Window_Base視窗@window001,@window001.disposed?像是這個值就是用來取得"@window001"是否已經"被釋放",(註:"釋放"是把一個變數清空,使其成為nil,而nil這個東西,在後面會講到。)如果已經被釋放,就返回真(true)(註:「返回」可解作「把整個值當作」,像是@window001.disposed?這時候在系統裡就是true,因為@window001已經是被釋放的狀態。)這就是"真"(true)的定義及例子,false則與true的意義相反。接下來要說的是nil這個東西,nil在拉丁文中的意義是 "零",但是nil在這裡,實際上並不等於0,而是"無"的意思,而nil和false在某種程度上是相等的東西,如果聽不懂的話就把nil跟false分開用就好。
三、函式
函式也是不可或缺的一部分,首先來說一下函式是什麼吧,如果你國一下的數學沒有認真讀的話,你不會知道函式是什麼東西的。函式示意:原料→函式→成品也就是說,你往函式輸入一個東西之後,經過函式的處理及計算,會有一個成品出現。比如,f(x) = y = 3x+2意思就是說,如果你把一個值x丟入f(x)的這個函式,就會將x乘以三、再加上2,之後"返回"計算結果,像是f(3)經過處理之後,就會等於11。而在程式的世界中,函式是可以一次丟一堆東西進去,而且不見得一定要丟數字!函式在程式的世界裡面,通常被拿來"處理東西",而不是純粹計算。現在就直接切入主題,講基礎的定義方法吧!上面這段就相當於我剛剛說的f(x)=3x+2的函式。其中的def就是"定義函式"的意思,而return就是"返回",返回3x+2之後,f(3)得到的就會是11,比如說定義完成之後執行:這時候就會跳出寫著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的重點所在。
基本上都學會了嗎?我希望我寫了快兩個小時的教學,你們能認真看完。還有不懂的,就先自己摸索看看,如果還是沒有頭緒,直接問我就行。今天就先講到這裡了,如果反應熱烈,我就會寫更多教學文章給大家看,謝謝觀賞
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1243450
Some rights reserved. 姓名標示-非商業性 2.5 台灣
相關創作
同標籤作品搜尋:RPG|RM|RGSS|腳本|劇本|教學|函式|判斷|RPG 製作大師
留言共 10 篇留言
175278:
這個跟VB哪個難0..0 還是很不同所以難比較
不然我也想嘗試看看呵呵
02-26 19:22
解凍豬腳:
你碰過RMXP嗎?RGSS其實比VB還簡單...但是RGSS的程式碼要分大小寫...哭了
02-26 19:23
若蟬:
對我確實有用
感謝
03-21 16:26
爪孟爪:
看不懂[e21]
06-29 17:40
解凍豬腳:
那就要自己去摸索了[e16]
06-29 17:57
TEST001:
要如何利用RGSS作遊戲壓 我看的懂你說的這些數學 但還是沒有頭緒如果製作小遊戲@@"
08-05 09:07
解凍豬腳:
RPG Maker XP是必要工具
08-05 15:05
TEST001:
我有了 但我是簡體的 繁化補丁找不到 @@"
08-05 22:14
解凍豬腳:
別討論盜版的東西了。
08-05 22:20
Cats Eye:
請問一下
if @a == 3
print "@a的值不等於三"
end
這樣子不就不需要unless了嗎?
10-21 18:07
解凍豬腳:
print隨便你打說要顯示什麼都行
條件判斷那行 是「實際上」
print輸出那行 是「由程式告訴使用者」
並不會因為你print出來的東西不一樣就造成@a的實際值有所改變
10-21 18:11
Cats Eye:
那麼這樣的意思不就和unless一樣
if @a == 3
print "@a的值等於3"
else
Print"@a的值不等於3"
end
10-21 18:21
我要留言提醒:您尚未登入,請先
登入再留言
7喜歡★johnny860726 可決定是否刪除您的留言,請勿發表違反站規文字。
前一篇:【VB.NET】巴哈姆特...
後一篇:簽名檔徵台詞...