2011年8月24日星期三

KAG教學---flag,變數(1)

(k ゚∀゚)<今次介紹的是變數(variable),變數不只是吉里吉里,差不多所有程式語言都用到變數。

這個字常常聽見,不過變數到底用來幹嘛?>( ゚ω゚ s)

(k ゚∀゚)<我先簡單介紹變數的定義,變數(variable)是一個有名稱的儲存空間,並且可用來儲存數值,我們亦可以隨時取用變數或指定某數值給變數。

(k ゚∀゚)<KAG 中的變數有三種,第一種是遊戲變數,這種變數在遊戲存檔時會一同記錄下來,第二種是系統變數,這種變數就算不存檔也記錄下來,第三種是暫時變數,這種變數不會進行任何記錄,當結束遊戲時變數內的數值就會消失。

(k ゚∀゚)<變數名稱的長度沒有限制,變數的數量亦沒有限制,倒是變數名稱有一些限制,變數名稱可以使用半形英文字母,包括小寫(a-z)和大寫(A-Z),或者是半形數字(0-9)和底線( _ ),亦可以使用全形文字,包括中文字和日文字等。

(k ゚∀゚)<還有,半形數字不能放在開頭第一個字。

如果是全形數字就沒有問題嗎?>( ゚ω゚ s)

(k ゚∀゚)<是的。

(k ゚∀゚)<而且KAG的變數名稱沒有保留字,所以基本上只要符合上述的條件就可使用,以下是一些正確或錯誤的變數名稱的例子。

正確:
name1
save_point
maxNum
變數1

錯誤:
3value
a&b
save point

(k ゚∀゚)<我們需要在變數名稱開頭加上一些字來表明變數的類型,名稱開頭為「f.」的是遊戲變數,名稱開頭為「sf.」的是系統變數,名稱開頭為「tf.」的是暫時變數。以下是一些例子。

f.flag1
這是遊戲變數,變數名稱是flag1。

sf.textSpeed
這是系統變數,變數名稱是textSpeed。

tf.count
這是暫時變數,變數名稱是count。

(k ゚∀゚)<KAG 的變數可儲存數值或字串,理論上,任何大小的數值或任何長度的字串也可以。

(k ゚∀゚)<不過要注意,以上提及的內容只適用於KAG ,TJS 的變數完全是別的架構和用法。

現在我知道什麼是變數,不過那麼我們怎樣使用變數?>( ゚ω゚ s)

(k ゚∀゚)<那麼我先介紹如何指定數值給變數,我們可用[eval]來指定數值,以下是範例。

[eval exp="tf.count=1000"]

(k ゚∀゚)<我們會在[eval]的exp屬性裡寫上指定的數值和變數,變數名稱後面加上等號( = ),然後把指定的數值寫在等號後面。

count等於1000嗎?>( ゚ω゚ s)

(k ゚∀゚)<不對,這個等號絕對沒有相等的意義,這點需要十分留意,它用來右邊的數值指定給左邊的變數,這個等號正式的名稱叫做指定運算子(Assignment operator),不過這裡暫時不詳細介紹,因為這是TJS的領域。

(k ゚∀゚)<上述的範例是把1000這數值指定給count這個暫時變數。

(k ゚∀゚)<大家亦可以把字串指定給變數,以下是範例。

[eval exp="tf.string1='這是文字'"]

(k ゚∀゚)<上述的範例是把'這是文字'這字串指定給string1這個暫時變數,我們必須將字串放在單引號內。

(k ゚∀゚)<還有,大家亦可以把一個變數指定給另一個變數,以下是範例。

[eval exp="tf.count1=1000"]
[eval exp="tf.count2=tf.count1"]

(k ゚∀゚)<上述的範例,我們把變數count1的數值(1000)指定給變數count2,count2內儲存了1000這個數值。

我有問題,我不知道是否成功地指定了適當的數值,因為根本看不到變數裡的數值......>( ゚ω゚ s)

(k ゚∀゚)<我們可用[emb]來顯示變數內的數值,並在exp屬性裡寫上變數名稱,以下是範例。

[eval exp="tf.count=1000"]
[eval exp="tf.string1='這是文字'"]
count的數值是
[emb exp="tf.count"]
[r]
string1的數值是
[emb exp="tf.string1"]

















(k ゚∀゚)<這樣就可以顯示變數內的數值,用處也算廣泛,特別是養成類遊戲,經常要顯示不同的數值,這些數值往往都是儲存在變數裡。

(k ゚∀゚)<今次暫時介紹到這裡,下次再見。

5 則留言:

  1. 咱想弄清楚下
    tf的意思是“重開遊戲后,變數會reset”?
    然後,sf和f的差別是在哪?咱縂覺得好象沒什麽區別……

    回覆刪除
    回覆
    1. 遊戲變數是指按下存檔時會記錄下來的變數,
      由於是儲存在存檔的檔案中,
      遊戲變數在不同的記錄檔可以有不同的值,
      現實例子就好像我們在遊戲的存檔介面上存檔,
      不同的記錄檔都記錄著遊戲變數與其值,
      當讀檔時吉里吉里就將那些遊戲變數讀回來。

      系統變數正如它的名稱一樣,
      設計的目的是給我們記錄系統所需要的變數,
      例如文字顯示速度,或者是設定CG圖和BGM是否在鑑賞模式裡顯示出來,
      都會用到系統變數記錄下來。
      跟遊戲變數就算玩家不去存檔,吉里吉里也會自動將它們記錄下來,
      系統變數不會因為玩家讀檔而不同的,因為系統變數是記錄在另一個獨立的檔案裡。

      暫時變數是用來記錄一些暫時使用的值,
      不會儲存到任何檔案裡,
      當結束遊戲時整個變數就會消失得一乾二淨。
      (你可以參考這篇http://kibitz2550.blogspot.hk/2011/09/vs-vs.html)

      刪除
    2. 呃……抱歉沒發現那帖子>_<||
      謝謝你的回復

      刪除
  2. 那麽,如果是像,通過全部路綫后,就會開設一個新的路綫,是用系統變數麽?

    回覆刪除