必威电竞|足球世界杯竞猜平台

RGSS
來源:互聯網

RGSS(Ruby Game Scripting System)是一款由日本出品的游戲開發系統,基于面向對象的腳本語言Ruby開發,主要用于Windows 2D游戲的制作。它是RPG Maker系列的擴展功能,以Ruby為基礎的游戲腳本語言。

RGSS

日本的游戲制作軟件RPG Maker XP所使用的內部腳本系統,是ruby的擴展庫。

RGSS(Ruby Game Scripting System),中文意思是 Ruby 游戲腳本系統,是應用面向對象的腳本語言 Ruby 開發 Windows 2D 游戲的系統。使用 RGSS,就和 C 語言等程序語言那樣簡單,能創建完全原創的游戲系統。Ruby 是一種初學者也能很容易使用,并且功能強大的高級語言

本文檔是從 Ruby 的參考手冊上摘錄下使用 RGSS 的必要信息,加上關于 RGSS 獨特方法的解說重編輯而成。對于 RGSS 的用戶,在游戲程序設計方面不重要的部分進行了大幅刪減,對各處描述也稍作了修改。因此在描述上可能會出現不正確的情況。作為 Ruby 的參考,請注意那些非常簡單的東西。

RGSS中的腳本:

在RMXP(Rpg Maker XP)中,按F11就可以打開[腳本編輯器],左邊的窗口是腳本列表,右邊的窗口是腳本內容,左下角可以修改腳本名稱。

在RMXP(Rpg Maker XP)中,游戲開始運行后,總是從最上邊的腳本開始運行,依次往下,所以,經常把變量聲明、類聲明、函數聲明、函數定義的腳本放在上面,而MAIN腳本總是放在最后。

RGSS語法

變量類型:

全局變量 $var

實變量 @var

局部變量 var

常量 VAR

數據類型(注:RGSS中變量類型為弱變量,無需定義,只要初始化即可。):

數值型 0~9

浮點型 0~9,小數點

字符串型 加了""的在ASCII碼表上的任意字符。

布爾型 true/false

空型 nil

RGSS是Ruby的游戲腳本系統,所以關鍵字與Ruby原版大同小異,但也有少數修改,如:

RGSS1.02J(或更高版本)中,puts()函數功能被簡化為p,添加了print函數,

RGSS1.03J中添加了塊注釋方法,即以“=begin”開頭,以“=end”結束。

RGSS遇到換行符就自動結束當前的這一行,這一點是與VB相似的,當然,RGSS也可以象c語言那樣以西文分號結束,這點看習慣。

RGSS主程序開始與結束

begin

程序段

end

RGSS庫的開始與結束

modle 庫名

程序段

end

RGSS類的開始與結束

class 類名 < [父類]

程序段

end

RGSS自定義函數的開始與結束

DEF 函數名[(參數)]

程序段

end

RGSS庫的調用

include 庫名

RGSS類的調用

類名.new[(類中initialize函數的參數)]

RGSS自定義函數的調用

函數名[(參數)]

RGSS中的條件分歧

1.if語句

示例:

if $a == "66RPG7火箭炮"

print("歡迎來到#{$a}")

end

2.if...else語句

示例:

if $username == "admin" and $password == "abc"

print("你好,Admin")

else

print("您無權察看!!")

exit

end

3,if...elsif...else語句

示例:

if $name == "Tony" and $lastname == "Fox"

print("Welcome, Tony Fox!")

elsif $name == "Iceandsnow" and $lastname == "Fox"

print("Welcome, Iceandsnow Fox!")

else

print("unable Name")

end

4.case語句

case 變量

when 值

語句塊

when 值

語句塊

else

語句塊

end

RGSS中的循環

while ~ end在滿足特定條件期間進行循環的情況下使用 while 語句。

a = 0 # 為變量 a 賦值代入 0。

i = 1 # 為變量 i 賦值代入 1。

while i <= 5 # 當變量 i 為 5 以下時循環開始(重復以下處理),

a += i # 變量 a 加上 i 的值。

i += 1 # 變量 i 的值增加 1。

end # 循環結束。

p a # 顯示計算結果。

這個示例是求從 1 到 5 這五個數字總和的程序。在這里,變量 i 是用來產生從 1 到 5 這五個數字用的。當然變量名也可以不用 i,一般情況下循環處理用的變量會使用 i、j、k 為名稱。

那么,這個程序最重要的是 i += 1 這行。如果沒有這行 i 的值永遠為 1,而 i <= 5 的條件也會一直滿足,就會成為無限循環。因此,這里每次都向 i 加上 1 使得 i 的值依次變為 2、3、4、5、6 從而使得循環結束。

變量 a 和 i 的數值變化,如下表所示。

循環 a 的值 i 的值

初始狀態 0 1

1 次后 1 2

2 次后 3 3

3 次后 6 4

4 次后 10 5

5 次后 15 6

循環 5 次后,在 a 的數值里面實際上進行了 1+2+3+4+5 的計算,i 的值也超過了 5 而執行 end 使得循環結束。

然后以 p 命令顯示最終 a 的值,就會顯示出答案 15。

變化范圍

數值的范圍,例如類似于「從 1 到 5」這樣的概念就稱為變化范圍。

1..5

上述示例表示「從 1 到 5」的意思。使用 .. 運算符,就能作成一個變化范圍。

而且,使用 ... 運算符也可以。

1...5

和 .. 不同的是「不含最后一個數」。所以,這種情況實際上表示的是「從 1 到 4」的意思。

for ~ in ~ end

想在變化范圍表示的范圍內循環的情況下使用 for 語句。

a = 0 # 為變量 a 賦值代入 0。

for i in 1..5 # 變量 i 的值按從 1 到 5 的范圍變化,

a += i # 變量 a 加上 i 的值。

end # 循環結束。

p a # 顯示計算結果。

這個示例和使用 while 語句的示例完全相同,也是求從 1 到 5 這五個數字總和的程序,但比使用 while 的情況更加簡潔。在 while 中變量 i 加上 1 表示的是從 1 到 5 的范圍,然而在 for 中是用變量 i 按「從 1 到 5 的范圍」的順序代入來表示。表面看起來不同,但實際上進行的是意思完全相同的處理。

Ruby 中有許多語法,循環中也存在各種各樣不同的方法。在不同語法使用中,請按照這個示例提示的「讓編寫更簡便」的方式來思考。實際上,如果理解了條件分歧和循環的話,就能進行大部分邏輯運算了。

loop do ~ end

未指定循環次數和條件的情況下,也就是想進行無限循環時使用 loop 語句。這個與 while 和 for 語句的性質稍微有所不同,一般情況下沒有必要注意。

i = 0 # 為變量 i 賦值代入 0。

loop do # 循環開始。

i += 1 # 變量 i 的值增加 1。

p i # 顯示變量 i 的值。

end # 循環結束。

這個示例是「一邊把 i 的值加上 1,一邊顯示 i 的值」的程序,沒有結束條件。一旦運行的話就會連續顯示 1、2、3……。如果這種對話框不斷顯示的話,就算要結束程序也是不可能的,只能按著 F12 鍵不放強行關閉對話框,并點擊右上方的結束按鈕關閉程序。

break

想中途中斷循環就要使用 break 命令。

i = 0 # 為變量 i 賦值代入 0。

loop do # 循環開始。

i += 1 # 變量 i 的值增加 1。

if i == 5 # 如果變量 i 的值為 5 的話,

break # 中斷循環。

end # 條件分歧結束。

p i # 顯示變量 i 的值。

end # 循環結束。

上述示例在程序中加上了「i 等于 5 的就中斷循環」的條件。運行該程序,顯示 1、2、3、4 就結束了。

break 即使在 while 和 for 等其它方法作成的循環中也能使用。

樂華七子NEXT

在不中斷循環的情況下,跳過本次循環而進入下一次循環時使用 next 命令。

for i in 1..5 # 變量 i 的值按從 1 到 5 的范圍變化,

if i == 3 # 如果變量 i 的值為 3 的話,

next # 進入下一次循環。

end # 條件分歧結束。

p i # 顯示變量 i 的值。

end # 循環結束。

運行這個示例,會顯示 1、2、4、5。

程序示例

1,helloworld程序

begin

print("HelloWorld!!")

end

2,數值運算

begin

x = 10

y = 20

p x+y

end

3,條件判斷

begin

a = 10

if a>=5

print("a的值大于等于5")

else

print("a的值小于等于5")

end

end

4,循環

begin

for i in 成都地鐵13號線

print("這是第#次顯示")

end

end

begin

do

print("這是第#次顯示")

while i <= 4

end

begin

loop do

i++

print("這是第#次顯示")

if i = 4

break

end

end

end

5,函數調用

class My_Class

DEF mian # 主處理

x = 6

y = 5

addnum(x, y)

end

def addnum(num1, num2)

sum = num1 + num2

p sum

end

end

6,類的調用

begin

if $scene != nil

$scene.main

else

exit

end

$scene = Scene_MyClass.new

end

7,庫的生成及調用

module MYMODULE

DEF division(num1, num2)

sum = num1/num2

return sum

end

end

class My_Class

include MYMODULE

def main

x = 25

y = 16

z = division(x, y)

p z

end

RGSS默認腳本結構

Ruby Game Script System

├─Game_Actors 處理角色排列的類。

├─Game_BattleAction 處理行動 (戰斗中的行動) 的類。

├─Game_Battler 處理戰斗者的類。

│ ├─Game_Actor 處理角色的類。

│ └─Game_Enemy 處理敵人的類。

├─Game_Character 處理角色的類。

│ ├─Game_Event 處理事件的類。

│ └─Game_Player 處理主角的類。

├─Game_CommonEvent 處理公共事件的類。

├─Game_Map 處理地圖的類。

├─Game_Party 處理同伴的類。

├─Game_Screen 處理屏幕的類。

│ └─Game_Picture 處理圖片的類。

├─Game_SelfSwitches 處理獨立開關的類。

├─Game_Switches 處理開關的類。

├─Game_System 處理系統附屬數據的類。

├─Game_Temp 處理在沒有存檔的情況下的臨時數據的類。

├─Game_Troop 處理隊伍的類。

├─Game_Variables 處理變量的類。

├─interpreter 執行事件命令的解釋器中的命令的類。

├─Scene_Battle 處理戰斗畫面的類。

├─Scene_Debug 處理調試畫面的類。

├─Scene_End 處理游戲結束畫面的類。

├─Scene_Equip 處理裝備畫面的類。

├─Scene_File 處理游戲讀取、存檔畫面的基類。

│ ├─Scene_Save 處理存檔畫面的類。

│ └─Scene_Load 處理讀取畫面的類。

├─Scene_Gameover 處理游戲結束畫面的類。

├─Scene_Item 處理物品畫面的類。

├─Scene_Map 處理地圖畫面的類。

├─Scene_Menu 處理菜單畫面的類。

├─Scene_Name 處理名稱輸入畫面的類。

├─Scene_Shop 處理商店畫面的類。

├─Scene_Skill 處理技能畫面的類。

├─Scene_Status 處理狀態畫面的類。

├─Scene_Title 處理標題畫面的類。

├─Spriteset_Battle 處理戰斗的精靈的類。

├─Spriteset_Map 處理地圖的精靈的類。

├─Bitmap(RGSS) 位圖的類。

├─Color(RGSS) 顏色的類。

├─Font(RGSS) 字體的類。

├─Plane(RGSS) 平面的類。

├─Rect(RGSS) 矩形的類。

├─RGSSError(RGSS) 處理 RGSS 內部異常的類。

├─RPG7火箭炮(Module) 集合了 RPGXP 數據結構等的模塊。

│ ├─RPG::Cache(Module) 讀取 RPGXP 的各種圖片,建立并存儲 Bitmap 對象的模塊。

│ ├─RPG::Sprite(RGSS) 追加了 RPGXP 使用的各種效果處理的精靈的類。

│ │ └─Sprite_Character 角色顯示用精靈。

│ │ └─Sprite_Battler 戰斗顯示用精靈。

│ ├─RPG7火箭炮::Weather(RGSS) 用 RPGXP 事件指令顯示天氣效果(雨,風,雪)的類。

│ ├─RPG::Map(Data) 地圖的數據類。

│ ├─RPG::MapInfo(Data) 地圖信息的數據類。

│ ├─RPG::Event(Data) 地圖事件的數據類。

│ │ └─RPG::Event::Page(Data) 事件頁的數據類。

│ │ ├─RPG::Event::Page::Condition(Data) 事件頁“條件”的數據類。

│ │ └─RPG::Event::Page::Graphic(Data) 事件頁“圖像”的數據類。

│ ├─RPG::EventCommand(Data) 事件指令的數據類。

│ ├─RPG7火箭炮::MoveRoute(Data) 移動路線的數據類。

│ ├─RPG::MoveCommand(Data) 移動命令的數據類。

│ ├─RPG::Actor(Data) 角色的數據類。

│ ├─RPG::Class(Data) 職業的數據類。

│ │ └─RPG::Class::Learning(Data) 職業“學會的特技”的數據類。

│ ├─RPG::Skill(Data) 技能的數據類。

│ ├─RPG::Item(Data) 物品的數據類。

│ ├─RPG7火箭炮::Weapon(Data) 武器的數據類。

│ ├─RPG::Armor(Data) 防具的數據類。

│ ├─RPG::Enemy(Data) 敵人的數據類。

│ │ └─RPG::Enemy::Action(Data) 敵人“行為”的數據類。

│ ├─RPG::Troop(Data) 隊伍的數據類。

│ │ ├─RPG::Troop::Member(Data) 隊伍成員的數據類。

│ │ └─RPG7火箭炮::Troop::Page(Data) 戰斗事件頁的數據類。

│ │ └─RPG::Troop::Page::Condition(Data) 戰斗事件頁“條件”的數據類。

│ ├─RPG::State(Data) 狀態的數據類。

│ ├─RPG::Animation(Data) 動畫的數據類。

│ │ ├─RPG::Animation::Frame(Data) 動畫“幀”的數據類。

│ │ └─RPG::Animation::Timing(Data) 動畫“SE 與閃爍的時機”的數據類。

│ ├─RPG7火箭炮::Tileset(Data) 圖塊的數據類。

│ ├─RPG::CommonEvent(Data) 公共事件的數據類。

│ ├─RPG::System(Data) 系統的數據類。

│ │ └─RPG::System::Words(Data) 系統“用語”的數據類。

│ ├─RPG::AudioFile(Data) 聲音文件的數據類。

├─Sprite(RGSS) 精靈的類。

│ ├─Sprite_Picture 顯示圖片用的精靈。

│ ├─Sprite_Timer 顯示計時器用的精靈。

│ └─Arrow_Base 在戰斗畫面使用的箭頭光標的精靈。

│ ├─Arrow_Enemy 選擇敵人的箭頭光標。

│ └─Arrow_Actor 選擇角色的箭頭光標。

├─Table(RGSS) 多維數組的類。

├─Tilemap(RGSS) 管理元件地圖的類。

├─Tone(RGSS) 色調的類。

├─Viewport(RGSS) 視口的類。

└─Window(RGSS) 游戲內窗口的類。

└─Window_Base 游戲中全部窗口的基類。

├─Window_Selectable 擁有光標的移動以及滾動功能的窗口類。

│ ├─Window_Command 一般的命令選擇行窗口。

│ ├─Window_MenuStatus 顯示菜單畫面和同伴狀態的窗口。

│ ├─Window_Item 物品畫面、戰斗畫面、顯示瀏覽物品的窗口。

│ ├─Window_Skill 特技畫面、戰斗畫面、顯示可以使用的特技瀏覽的窗口。

│ ├─Window_Target 物品畫面與特技畫面的、使用對像角色選擇窗口。

│ ├─Window_EquipRight 裝備畫面、顯示角色現在裝備的物品的窗口。

│ ├─Window_EquipItem 裝備畫面、顯示瀏覽變更裝備的候補物品的窗口。

│ ├─Window_ShopCommand 商店畫面、選擇要做的事的窗口

│ ├─Window_ShopBuy 商店畫面、瀏覽顯示可以購買的商品的窗口。

│ ├─Window_ShopSell 商店畫面、瀏覽顯示可以賣掉的商品的窗口。

│ ├─Window_Message 顯示文章的信息窗口。

│ ├─Window_PartyCommand 戰斗畫面、選擇戰斗與逃跑的窗口。

│ ├─Window_DebugLeft 調試畫面、指定開關及變量塊的窗口。

│ └─Window_DebugRight 調試畫面、個別顯示開關及變量的窗口。

├─Window_Help 特技及物品的說明、角色的狀態顯示的窗口。

├─Window_Gold 顯示金錢的窗口。

├─Window_PlayTime 菜單畫面顯示游戲時間的窗口。

├─Window_Steps 菜單畫面顯示步數的窗口。

├─Window_SkillStatus 顯示特技畫面、特技使用者的窗口。

├─Window_EquipLeft 裝備畫面的、顯示角色能力值變化的窗口。

├─Window_Status 顯示狀態畫面、完全規格的狀態窗口。

├─Window_SaveFile 顯示存檔以及讀檔畫面、保存文件的窗口。

├─Window_ShopNumber 商店畫面、輸入買賣數量的窗口。

├─Window_ShopStatus 商店畫面、顯示物品所持數與角色裝備的窗口。

├─Window_NameEdit 名稱輸入畫面、編輯名稱的窗口。

├─Window_NameInput 輸入名稱的畫面、文字選擇窗口。

├─Window_InputNumber 信息窗口內部使用、輸入數值的窗口。

├─Window_BattleStatus 顯示戰斗畫面同伴狀態的窗口。

└─Window_BattleResult 戰斗結束時、顯示獲得的 EXP 及金錢的窗口。

【其中帶(RGSS)的類指內部類,帶(Data)的類指RMXP的數據類】

參考資料 >

生活家百科家居網