中文偽春菜後援會論壇  

打印

[問題] 思考 & 困惑

請問這是什麼的系統啊?
我只摸過橘花2的AYA 對他比較熟XD

TOP

複製內容到剪貼板
代碼:
Select.iT
{        "\0\s[21]%username可以把心事和我說喔!\n\n\n"
        --
        "--\n目前記事數量 : %a\n--\n"
        --
        "\q[輸入訊息,input]\n/
        \q[查看記事,check]\n/
        \q[設定,set]\n"
}

Select.check//記事項目選擇
{        c = ""
        if a != 0{
                for i = 1; i < a+1; i++{
                y[a] = year; m[a] = month; d[a] = day; h[a] = hour; mi[a] = minute;
                c += "\q[%A[i]-- %y[i]/ %m[i] /%d[i] - %h[i] : %mi[i],Onshow,%i]\n\n\n[half]"
                }
        }
        else{
                "目前沒有項目。\n\n"
                --
                "\q[輸入訊息,input]\n"
                }
        --
        "%c"
        --
        "\1\s[10]\q[上一頁,iT]\n/
        \q[取消輸入,OnCancel]\n"
}
Select.input//輸入視窗開啟
{        "\![open,inputbox,Oninput1,30000]\n\0\s[40]請輸入標題\n"
        --
        "\1\s[10]\q[上一頁,check]\n/
        \q[取消輸入,OnCancel]\n"
}

Oninput1//標題輸入
{        a += 1; A[a] = reference0
        "\![open,inputbox,Oninput2,30000]\0\s[40]請輸入內容\n"
        --
        "\1\s[10]\q[上一頁,check]\n/
        \q[取消輸入,OnCancel]\n"
}
Oninput2//內容輸入
{        y[a] = year; m[a] = month; d[a] = day; h[a] = hour; mi[a] = minute;
        B[a] = A[a]+"\ndate : %year/ %month/ %day , %hour: %minute.\n\n"+reference0
        "輸入完成。\n"+Select.iT
}

Onshow//內容輸出
{        "%B[reference0]\n\n/
        \q[<上一頁>,check]\_q      \_q\q[<編輯>,edit,%a]\_q      \_q\q[<刪除>,Onreset,%(reference0)]\n"
}

Select.set//暫時使用的重置程式
{        for i = 1; i < a+1; i++{
                A[i] = ""
                B[i] = ""
                a = 0
        }
}

Onreset
{        A[reference0] = "";B[reference0] = "";a -= 1
        "\1\s[10]全部清除完成!\0\s[27]\n"
        Select.iT
}

TOP

選項的show改成Onshow,後面引述i改成%i
Select.show改成Onshow
On開頭的函數才能正確的接收使用reference0 reference1 reference2...等
Onreset同理
上一頁、編輯、刪除這些不要加在變數中儲存,那樣只會浪費空間XD
既然內容都一樣就放在Onshow函數就好了

大概是這樣吧
閒閒花了一個下午重新研究AYA
已經三年沒碰了orz

TOP

另外變數名稱取嚴謹一點,以後東西多了才不會搞混
像是note_title、note_data這樣,幫你修改比較好懂,以後你要維護也容易
然後區域變數宣告方法是在變數名稱前面加底線
像是_i=1

TOP

\q[選項名稱,選項要去的函數,傳給函數的引數]

On函數名稱
{ reference0=剛剛傳給函數的引數}

舉例的話...
\q[測是按鈕,OnTest,3333]
OnTest
{ "%(reference0)"}
這樣菊花就會顯示3333
因為現在reference0=3333

區域變數_i不會被儲存 離開這段函數後就會被消去
所有底線開頭的變數都是區域變數
不曉得你有沒有學過C或其他任何程式語言、腳本語言
稍微看看的話應該會比較好懂函數的引數和區域變數XD

TOP

On函數可以想成VB的Sub或 function
他們都是可以接受引數的函數
我記得VB寫在函數內變數都是區域變數
宣告在函數外的(類別內?)才是全域
不同的是AYA的全域變數會被自動儲存在cfg檔內
不過現在好多語言單靠區域和全域好像已經不夠區分變數的活動範圍了囧

TOP

咦咦 你是國中生嗎@@
是的話能寫這麼多也很厲害耶XD
國中有教VB嗎!?

TOP

原來如此,誤會了抱歉XD
你不太懂的地方是哪裡?
AYA的變數分兩種 一種是你現在用的全域變數
他在AYA的所有地方都可以使用
你創一個新的dic檔寫的程式碼內一樣可以用到之前創立的變數
也代表著每個變數名稱都是獨一無二的不能重複取一樣名稱
不然程式會出錯
然後關閉時會被儲存cfg檔案中保留

TOP

然後另一種是區域變數 名稱的開頭必須是底線
他存在的範圍只在創造他的大括號內
例如
for _i=1; _i<10 ;_i++
{ sum+=_i}
這個for迴圈跑完後_i的數值就會自動銷毀了
cfg檔也不會多一個無意義的數字
但sum是全域變數會被保留下來
所有要事先判斷變數的用途決定他是哪種變數
才能設計出更好懂更簡潔更有效率的程式碼

[ 本帖最後由 kyle 於 2013-7-3 14:16 編輯 ]

TOP

人在外面沒辦法好好看完
先檢查看看_i是不是重複使用到了?

TOP



當前時區 GMT+8, 現在時間是 2022-8-8 21:45

Processed in 0.014511 second(s), 9 queries, Gzip enabled.

清除 Cookies - 聯繫我們 - 中文偽春菜後援會 - Archiver - WAP - TOP - 界面風格