[wizs] 讓 input_to 一段時間後喪失功用

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/05/25 14:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
通常是 LIPS 系統在用的,比方說對話到一半,跳出 「三個選項」讓你選,而且還計時,你必須在時間內 回答不然時間到了選項框就消失=你不做任何選擇。   ┌────Time Out────┐   │  巴黎華擊團,出動! │   ↑  勝利的姿勢,決定! │   │  決勝的內褲,來吧! │   └────Time Start───┘ 它的做法是,先撰寫一個 input_to 用的物件。 input_to.c ============================================= int choice_one(object ppl,object origin_ob) { string str; write(@LONG   ┌────────────┐   │ 1.巴黎華擊團,出動!  │   │ 2.勝利的姿勢,決定!  │   │ 3.決勝的內褲,來吧!  │   └────────────┘ 請在10秒內選擇: LONG ); input_to("made_choice",0,ppl,origin_ob,str); return 1; } int made_choice(string str,object ppl,object origin_ob) { int n=atoi(str); if(n>0 && n<4) { ppl->set_temp("made_choice",n); // 玩家有做選擇 origin_ob->destroy_ob(ppl,this_object()); return 1; } else choice_one(ppl); return 1; } ========================================== 然後在讓玩家要做出選擇時這麼做... . . . ob=clone_object(__DIR__+"input_to.c"); // 先呼叫出該物件 call_out("destroy_ob",10,ppl,ob); // 設定一個 10 秒的 call_out ob->choice_one(ppl,this_object()); // 讓 ppl 觸發 ob 裡頭的 input_to return 1; } int destroy_ob(object ppl,object ob) { if(ob) { destruct(ob); // 這時候玩家就會從 input_to 狀態解除 if(!ppl->query_temp("made_choice")) // 代表玩家沒有做出選擇 執行沒有做出選擇的結果; else 執行有做出選擇的結果; ppl->delete_temp("made_choice"); // 然後統一刪除這個標記 } return 1; } 一、玩家在時限內做出選擇 這時馬上呼叫 origin_ob 的 destroy_ob 函數,則 ob 馬上被消滅、同時立刻執行選擇結果。 而之後等 10 秒的時間也到時,origin_ob 自己呼叫 了 destroy_ob 函數時,if(ob) 才做的事情,因為 此時 ob 已消失自然就不用再做一次。 二、玩家等時限到了 這時玩家停留在 ob 的 choice_one 函數的 input_to 區段,但是 origin_ob 於 10 秒後呼叫了 destroy_ob ,而 destroy_ob 判斷到 ob 存在,這時就 destruct 它,同時執行了玩家沒有做出選擇的判斷。 LIPS 的應用,還包括了原本應該在 10 秒內做出判斷,但 是玩家若「猶豫了五秒以上」時,就把其中幾個選項變更為 別種選擇。 這是應用在「我們必須判定玩家的確有"深思"這個問題應該 選什麼、而不是一問就馬上回答」這一方面,若玩家馬上回 答,就不會出現別的選擇。 例如一開始看到的畫面是..   ┌────Time Out────┐   │  先救老媽  │   │   先救老婆  │   │  │ <= 暗示了可能有第三個選項   └─←──Time Start───┘ 五秒過後跑出新的畫面..   ┌────Time Out────┐   │  先救老媽  │   ↑   先救老婆  │   │ 兩個都救  │ <= 暗示了可能有第三個選項   └────Time Start───┘ 有興趣的人可以玩玩看。這時要增設的判斷就是玩家在 五秒內回答的答案「不能有 3 這個選項」,選 3 必須 是在 5 秒後才行,也就是要多一個時間判斷。 Belldandys. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: laechan 來自: 115.80.177.58 (05/25 15:03)
文章代碼(AID): #1DtAWXqY (mud_sanc)
文章代碼(AID): #1DtAWXqY (mud_sanc)