[wizs] 讓 input_to 一段時間後喪失功用
通常是 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)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19