![]() ![]() ![]() ![]() |
![]() |
|
![]() |
||
![]() |
do
{
// Wait for an event
EvtGetEvent(&event, evtWaitForever); ←これ
if (!SysHandleEvent (&event))
if (!MenuHandleEvent (0, &event, &error))
if (!appHandleEvent (&event))
FrmDispatchEvent (&event);
} while (event.eType != appStopEvent);
いずれにしても、入力は、上記ループのEvtGetEventの部分でやる必要があるので、
ゲームの状態を表す変数をつくったらどうでしょう。
#define State_forward_before_input ****(重複しない適当な数字)
#define State_forward_after_input ****
#define State_encounter_before_input ****
#define State_encounter_after_input ****
(長いので、OnBoardCでは、適当に省略して短くすべきでしょう(^_^;)
SForB, SForA, SEncB, SEncAくらいか(^_^;))
UInt16 game_state;
「前進に伴う処理中」「敵遭遇チェック中」のそれぞれ、入力があったかないかみたいなのを全部わけるわけて、処理ごとに、game_stateがどの状態であるか、という数字を入れて判別するわけです。
しかし、これはアタマがわるいので、処理の内容と、入力前後は、別のフラグにするべきかもしれません。
UInt16 game_state;
Boolean input_state;
とか。
ちょっと、alg-ljさんのケースでどうすれば、最適の状態変数ができるのかわかりませんが(^_^;)(ゲームに依存する)。
ちょうど、わたしのブロックくずしでやっているgsという変数みたいで、あのときも、たとえば、ゲームスタート前は、ずっと入力があるのを待って、入力がないと、ゲーム開始という状態にはなりません。また、最初のある一定の時間は、ボールがパドルにひっついてて、パドルと一緒に動いて、最初に狙うブロックを決めることができたりします。
入力については、いつも、イベントループのEvtGetEvent関数を使ってるんですが、何を処理するか、とか、あるいは、何かの状態になるまで次の状態にならないというのは、そういうゲームの状態の変数をつくって、やっています。
そのあたりのことではないかな、と思うんですが、的はずれなら、また、情報をお知らせください(^_^;)。
ちなみに、わたしの作った関数とか、再利用OKというか、printとかbitmapなんか、だれがつくってもああなりますから(^_^;)。