運算?即是加減乘除等等的東西嗎?>( ゚ω゚ s)
(k ゚∀゚)<吉里吉里除了加 ( + )、減( - )、乘( * )、除( / )等運算子之外,還有計算餘數的模數運算子( % ),看一下以下的範例。
[eval exp="tf.count=1+2*(3+1)"] [emb exp="tf.count"] |
(k ゚∀゚)<吉里吉里會由左而右進行運算,當然,先乘除後加減,括號優先運算等基本運算規則不會改變的,所以運算後的結果是9。以下是另一個範例。
[eval exp="tf.count=6/4"] [emb exp="tf.count"] |
答案是1.5嗎?>( ゚ω゚ s)
(k ゚∀゚)<正確,不過如果大家只想要整數的數值,可以使用反斜符號( \ )取代,小數點之後的部份就會被自動消去,以下是範例。
[eval exp="tf.count=6\4"] [emb exp="tf.count"] |
(k ゚∀゚)<這次運算結果是1。
(k ゚∀゚)<計算餘數可以用模數運算子(Modulus operator),不過只限於整數的運算,以下是範例。
[eval exp="tf.count=6%4"] [emb exp="tf.count"] |
(k ゚∀゚)<運算後的結果是2。
不過這個模數運算子的運算優先順序是怎樣?>( ゚ω゚ s)
(k ゚∀゚)<這個模數運算子的運算優先順序和乘除一樣,大家可看看以下的範例。
[eval exp="tf.count=6%4*2"] 6%4*2= [emb exp="tf.count"][r] |
[eval exp="tf.count=6*2%4"] 6*2%4= [emb exp="tf.count"] |
(k ゚∀゚)<由於運算優先順序一樣,所以由左而右進行運算,第一個結果是4,第二個結果是0。
(k ゚∀゚)<大家亦可把變數用來進行運算,看看以下的範例。
[eval exp="tf.count=0"] [eval exp="tf.count=tf.count+1"] [emb exp="tf.count"] |
tf.count=tf.count+1不是錯誤嗎?count怎可能等於count+1。>( ゚ω゚ s)
(k ゚∀゚)<都說了不是"等於",我們是把count+1指定給count,如果原本的count是0,運算後count就是1。
(k ゚∀゚)<順便一提,就算是字串也可以加起來,兩個字串會黏在一起,以下是範例。
[eval exp="tf.count='我是'+'字串'"] [emb exp="tf.count"] |
(k ゚∀゚)<字串加起來後,count儲存了'我是字串'這句字串。
不如下回才繼續,我現在頭腦很混亂......>( ゚ω゚ s)
(k ゚∀゚)<好吧,下次再繼續介紹其餘的東西。
請問一下,如果是要設定養成遊戲的數值,一開始是0,然後吃了物品會+1
回覆刪除那
[eval exp="f.力量=0"]
[eval exp="f.力量=f.力量+1"]
[emb exp="f.力量"]
這樣寫對嗎?不過是該要寫再哪個腳本裡呢?研究了好幾天都沒有頭緒阿(崩潰
另外有辦法跑玩變數以後,以文字讓結果的數值顯現在頁面上面嗎....
嗯,這樣寫基本上沒有問題,
回覆刪除不過要留意如果是養成遊戲的話,
第一句通常是寫在遊戲一開始的地方,
把所有變數進行初始化。
第二句通常是遊戲的迴圈部分,
當玩家按下使用物品的選項時,
第二句就應該要執行。
第三句就是用來顯示變數的數值,
應該就是你所問的"讓結果的數值顯示在頁面上面"的方法。
噢噢,謝謝!
回覆刪除我再試試看:)
我有個問題
回覆刪除[link target=*1 eval exp="f.flag=1"]選項1[endlink][r]
[link target=*1]選項2[endlink][r]
[s]
*1
[p][cm]
你好
[p][cm]
[if exp="f.flag==1"]
……
[else]
去死
[endif]
這個可以接受,但如果我想再放第二個選項並且加上+1的話是不是這樣:
[link target=*2 eval exp="f.flag+=1"]選項1[endlink][r]
[link target=*2]選項2[endlink][r]
[s]
*2
[p][cm]
[if exp="f.flag==1"]
……
[elseif exp="f.flag==2"]
嗯……
[else]
去死
[endif]
但這樣的話無論如何都會直接去“去死”…………求解釋
我剛剛測試了你的問題,
回覆刪除如果按下選項1時,會顯示"……",
而按下選項2時,則會顯示"去死"。
這因為當我們按下選項1,
f.flag的值就會加1,
若果f.flag沒有被初始化,
f.flag的值就是void,
當吉里吉里執行f.flag=void+1這句,
它會把void轉換成0,
所以f.flag的值會變成1,
並且顯示"……",
用同樣道理可以解釋選項2,
f.flag的值是void,
這意味著f.flag不等於1或2,
因此會顯示"去死",
不知道有沒有理解錯你的問題,
如果有其他問題歡迎再提問。
(補充:[elseif]寫錯了,應該是[elsif]才對,
還有[link]裡沒有eval的。)
原來是elsif啊啊啊 〉〉面壁去
回覆刪除不過在link裏面寫eval的話還是順利的哦?
(那不是的話eval該寫在link外面還是哪裏?)
然後,在第二個選項要把flag的數目增加然後顯示“嗯……”要寫哪個?
還有謝謝教程^^
吉里吉里會無視錯誤的屬性,
回覆刪除所以在[link]裏面寫eval的話,
吉里吉里就把eval無視掉。
不知有沒有理解錯你的問題,
如果你上面這兩段是寫在一起,
當我連續兩次都按下選項1,
就會顯示"嗯……"。
如果單單是寫第二個選項,
而沒有第一個選項的部分,
那麼就必須有一個選項是把數值加2。
嗯,明白了
回覆刪除然後最後問題是,
要如何在選項中
[link......]選項1[endlink]
放置eval才能避免被無視訥?
其實這不需要放置eval,
回覆刪除我想你是想把[link]和[eval]一起使用,
不過這是不行的,
而且[link]本身就有exp這屬性,
已經可以做到指定數值給變數這個目的。
即是以下的模樣,
[link target=*2 exp="f.flag+=1"]選項1[endlink]
這裡的exp是屬於[link]的。
好的謝謝你的解釋^^
回覆刪除