作者brother21913.bbs@bbs.ntue.edu.tw (資料轉移中~~) 看板: itoc
標題Re: [功能]即時樂
時間芝山情緣 (2008/07/30 Wed 22:45:46)
※ 引述《hpo14.bbs@bbs.csie.ntust.edu.tw (雨)》之銘言:
> 沒有什麼動,只是把一些簡單的 if…else…
> 換成三元判斷,來縮減行數而已 (我大概只會這樣 QQ)
> 也順便把 do_move() 移到 draw_item() 的後面
> 排版也改成類似 maple-itoc 的方式,順便把一些前置的++, --,都改成後置的方式
> 其他遊戲的說明內容還請參照原作者的原文,本篇 code 若有任何錯誤也請幫忙指正
> 不知道有沒有更為漂亮的精簡方式 @@;;
> ps. 我有疑問,在 do_paint(x, y, mode) 裡面, int c 的值從哪來??
> = 以下為程式碼 =
> static void
> do_paint(x, y, mode)
> int x;
> int y;
> int mode;
> {
> int c;
> move(y * 2 + 3, 0);
> prints(" \033[1m│");
> prints("\033[4%dm %3d \033[40m│",
> ticket[c][page == 1 ? y : y + 9] == -1 ? 7 :
> mode == 1 ? (c == x ? 1 : 4) : 4,
> page == 1 ? (y*9) + c + 1 : (y*9) + c + 1 + 81);
> }
.... 以下恕刪
回答一下你最後一個問題,就是 do_paint 的 c 本來是包在 for 迴圈中的,
例如:
for( c = 0 ; c < 9 ; c++ )
{
prints("\033[4%dm %3d \033[40m│", ticket[c][page == 1 ? y : y + 9 ] ==
-1 ? 7 : c == x ? 1 : 4, page == 1 ? (y*9) + c + 1 : (y*9) + c + 1 + 81);
}
但是,你更新後的程式把整個迴圈都拿掉了,所以,當然找不到嘍!
你把上面最後一行 prints 包在 for 迴圈應該就可以了,
不過說真的,本來這段程式碼已經用了很多三元判斷,
你這麼一合併,好像更難讀懂了。
其他地方我到沒什麼意見,也很喜歡你的方式。
其實,還有一些地方可以修改,不過,在我來說,一方面很少在寫了,
要寫還要測試有無新的問題,而這支程式用了兩年基本都沒問題,所以
,就沒去改,留給有興趣的站長們。
另外,這支程式其實是有類似銀行帳戶金錢同步的問題喔!只不過問題
不大且有紀錄,所以,我就沒有多管了。
--
◣
██◣ ██▊ ◢█▉ ██▉ █ ▉ █ˍ_ ██▊ ▁ █ ▉ ▉ ▉ ˍ_▉ █◥
█▇▉ █▇▊ █ ▉ █ ▉ █ˍ_ █▇▊ ▌▉ █▇▉ ▉ ˍ_▉ ██
█▇▉ █◥◣ ██▉ █ ▉ █ █◥◣ ▇ ▉ ▇▇▉ ▉ ▉ ██
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
--
→↓ Origin: 國立臺北教育大學˙芝山情緣 bbs.ntue.edu.tw
↑← Author: brother21913 從 125-225-2-92.dynamic.hinet.net 發表