Recrit
【捨丸&KID】如何製作分歧劇情與變數介紹(4)
* Global變數為何?
* Local變數與Global變數
到此之前為止所說明的變數稱為local變數。
Local變數雖然會被保存於遊戲之中,但是在reset後遊戲本身在從頭開始時內容便會全部消失。(於遊戲途中紀錄的場合時,在那時的變數之值會被作為save data儲存下來)。
於遊戲中(Local)中所記憶的變數,稱為內部變數。
與此相對,有另一個被稱為Global變數的東西。
Global變數於遊戲的外側紀錄下data,在遊戲reset之後其值也不會消失不見。
於遊戲外(Global)所記憶的變數,稱為外部變數。
Point:Nscripter的Global變數
和其他的program soft在global變數、local變數的定義上有時會有些許差異。但是總之在使用Nscripter時記下:於遊戲執行內部所保存的變數為local 變數,而於遊戲外的檔案上留下data保存的變數為global變數。
* Global變數使用例子
Global變數會在這些時候使用。
只於遊戲的第一輪時表現prolog,第二輪時會跳過prolog開始執行。
紀錄下遊戲的道具、金錢,當在第二輪開始時能夠持有這些東西開始遊戲。
在看過結局之後會追加補充劇情。
在看過全部的結局後,開啟通往真正結局的劇情。
保存下所輸入的主角姓名,使其在第二輪之後也能夠使用相同的名字開始遊玩。
* 在使用Global變數時
在使用Global變數時必須先於定義區域中宣告。
預設值中0~199為local變數,200~4000為Global變數。
宣告時使用globalon指令。
程式碼
globalon
範例
*define
globalon
game
*start
Globalon為指令本體。
只要沒有在定義區域中輸入這個指令,則200~4000號的global變數無法使用。
雖然也能夠當成變數使用,但是和local變數不同,在save時不會將數值保存下來因此只能作為暫時利用的變數。
一旦做出此宣告之後,於nscr.exe所存在的檔案夾裡會增加gloval.sav的檔案並且將global變數的值保存於此。
* 改變global變數的界線
使用value能夠改變global變數和local變數的界線,使兩者的個數改變。
當local變數的號碼已滿時可以使用。
程式碼
;value<界線值>
範例
;value 500
*define
globalon
game
*start
;value為指令本體。
和普通的指令不同,必須在*define上的第一行宣告。
500為界線值。此例中到變數499號為止能夠作為local變數使用。
同樣會在第一行宣告的指令還有;mode800(將畫面切換為800x600 mode:請參考109頁),與其同時使用的狀況請輸入;mode800,value500。
* 在使用global變數必須注意的事項
Global變數雖然能夠被當成普通的變數使用。
但是必須注意的是,global變數的值會一直被保持著。
如果用於演算系的指令裡,每當執行遊戲就會被執行計算。因此在遊戲終了後想要將其清空的值請使用local變數。
* global變數範例
global變數的範例。
示範只有在第一輪遊戲中顯現prolog的例子。
Sample 只在第一輪顯現prolog /02/02-03-01/00.txt
「
;mode800
*define
clickstr"!?。」",2
globalon ;開啟global變數
game
*start
setwindow 45,354,25,4,22,22,0,1,20,1,1,#bbbbbb,40,340,620,460
bg "BG\093.JPG",1
if %900=1 goto *honbun
*prologue
每天一大早,天譴寶寶都會說你好!
*honbun
天譴寶寶說 你好!
*ending
mov %900,1
end
」
試著使用重複處理
* 所謂的重複處理是?
在製作普通的novel game時不太會用到,但是在開始製作較花費功夫的處理時常會使用到—for~next命令。
為「將同樣的重複X次」意義的命令。
* for~next的用途
for~next命令會依據所設定的次數,重複執行輸入在for和next之間的處理。
最常被用到的用法是拿來做計算回數的處理。
例如會在下面的場合用到。
以容積為5的杯子來汲水至容積為50的水桶中→重複到水滿了為止。
將圖像從畫面外(x640)移動至畫面內(x30)這動作重複表示
使用mp3的BGM音量增加到所設定的大小。
blt動畫處理的控制。
請先記住「在使用到重複處理時就用for~next」。
* 命令文的結構
程式碼
for 設定的初期值 目標數值 step數目
各種處理
next
範例
for %1=0 to 200 step 20
各種處理
next
for為命令本體。
%1為變數。0為變數的初期值。在進行記算次數的處理時會從這個數值開始。
to 200是目標值。變數到達這個數值後所重複的各種處理就會停止,開始執行next之後的命令。
step20為步幅大小,設定的是每次增減時的數值差大小。在省略沒有輸入時預設為1。
在此範例中,%1會從0開始每次增加20直到到達目標值200之前會重複for和next之間的處理十次。
* 使用範例
「
;mode800
*define
clickstr"!?。」",2
game
*start
bg "BG\093.JPG",1
lsp 0,":c;butterflyUp.jpg",224,95
print 1
for %1=0 to 200 step 20
msp 0,50,25,255
print 1
wait 500
next
click
end
」
亂數處理
* 所謂的亂數是?
讓電腦隨機選擇的數字稱為亂數。
例如在走過暴風雨中的吊橋時會有40%的失敗機率、考試會有70%的合格機率等想要使用機率來判定時,或是隨機變更進入書目時的圖像、每次開始遊戲時的畫面上的短文隨機出現等各種處理上會用到亂數。
Nscripter在想用到亂數時必須使用rnd(注意不是md是”r””n””d”)命令。
* 從0到任意數值之間亂數選取數值
程式碼
rnd 變數名稱,數值上限
範例
rnd %3,100
rnd是命令本體。
為RaNDom的縮寫。
%3為利用亂數產生命令的數值所代入的變數名稱。所產生的數值範圍為從0開始到上限值-1為止。
於範例中會從0~99的數值中隨機挑選一個數值代入變數%3。
* 從某個數值到某個數值之間亂數選取數值
當想要從某個數值到某個數值之間亂數選取一個數字時使用rnd2命令。
程式碼
rnd2 變數名稱,設定的開始數值,設定的終點數值
範例
rnd2 %3,80,150
rnd2是亂數命令的本體。
%3是變數名稱。
範例的意義為於數值80到150中隨機選取一的數字代入變數%3。
この記事にコメントする
この記事へのトラックバック
- この記事にトラックバックする