タイムリミット1

 タイムリミットの作り方のパターン1。
 タイムリミット3とは共通点もありますが、構造は全く別物です。

 数値変数
[スタート]…カウント開始時間、または+一時停止時間
[リミット]…タイムオーバー時間、または+一時停止時間
[残り]…タイムオーバーまでの時間
[経過]…カウント開始からの経過時間
[停止]…一時停止開始時間、または一時停止時間

 ユーザーレイヤー
〈表示〉…メッセージ表示
〈時間〉…カウントダウン表示

スタートページ」「待つ」「ごー」「どーだ」「一時停止」「解除」「ミニ」「ミニ続」「ミニ表」「ミニ消」「クリア」「オーバー」 +調整方法


「スタートページ」

スタートページ

 レイヤー制御〈表示〉
 レイヤー制御〈時間〉
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=Fごー サブルーチンコール「ごー」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=Fどーだ サブルーチンコール「どーだ」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=F一時停止 サブルーチンコール「一時停止」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=Fミニ サブルーチンコール「ミニ」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=Fクリア 移動「クリア」
 選択時に〜≠ノチェック無し
 [スタート]←[@経過時間]
 [リミット]←[スタート]+120
 メッセージ:スタート! (表示先レイヤー〈表示〉)
 移動「待つ」

 「スタートページ」でユーザーレイヤーを表示し、ダイナミックレイヤーを作成して準備します。
 ダイナミックレイヤーのID指定はサンプルでは0にしています。
 カウントダウンを始めた時間を[@経過時間]からとっておきます。
 [@経過時間]は、そのゲームを開いてから現時点まで何秒経過したかが出る数値変数です。
 [リミット]に[スタート]+制限時間(秒数)を入れます。
 サンプルでは制限時間を120秒=2分にしてあります。
 カウントダウンの準備が終わったので、「
待つ」に移動します。
「待つ」

待つ

 [残り]←[リミット]−[@経過時間]
 [経過]←[@経過時間]−[スタート]
 メッセージ表示:%経過%秒経過ー。残り%残り%秒ー。 (表示先レイヤー〈時間〉)
 IF[残り]≦0
  移動「オーバー」
 ENDIF
 〔しばらく待つ〕 100ミリ秒待つか、クリッカブル領域をクリックするまで待つ
 移動「待つ」

 「待つ」では残り時間、経過時間を計算してメッセージを表示し、残り時間が0以下になったら「オーバー」に移動してゲームオーバー。
 そうでなければしばらく待ち、「待つ」に再び移動します。

 〔しばらく待つ〕は、制限時間による解除∞ユーザー操作による解除≠同時選択すると、○秒経過するか、ユーザー操作があるか、どちらかで〔しばらく待つ〕が解除されるように出来ます。(参照:コミメカ3研究中間報告書 しばらく待つ
 サンプルでは、100ミリ秒経過するか、クリッカブル領域をクリックされるまで、待ちます。
 その間に「ごー」または「どーだ」のダイナミックレイヤーをクリックすれば、「ごー」「どーだ」をサブルーチンコール、メッセージを表示して、「待つ」に戻り、残り時間・経過時間を計算して表示し直し、また待ちます。
 何事もなく100ミリ秒経過すれば、「待つ」の先頭に移動し、時間表示を更新して、また待ちます。
 これが延々と続きます。

 [残り]←[リミット]−[@経過時間] は、
 例えばリミットがゲームを開いてから150秒後で、現在ゲームを開いてから60秒経っていれば、150-60=90秒 残り時間がある、という計算になります。
 [経過]←[@経過時間]−[スタート] は、
 例えばゲームを開いてから30秒後にそのコーナーを始めて、現在ゲームを開いてから60秒経っていれば、60-30=30秒 コーナーを始めてから経っている、という計算になります。
 この時、サンプルのように[メッセージの表示]で残り時間・経過時間を表示する場合は、表示エフェクトなし(一括表示)≠ノして、最後に<KEY>は入れないでください。
 表示する、という動作の後すぐに次の〔しばらく待つ〕を実行させる為です。
 [残り]≦0 であれば、残り時間が0秒または−1秒〜なので、「オーバー」に移動。
 [残り]≦0でなければ、まだ時間があるので、待ちます。
「ごー」「どーだ」

ごー

 メッセージ表示:ごー。 (表示先レイヤー〈表示〉表示エフェクトなし=j
 サブルーチンから復帰
どーだ

 メッセージ表示:どーだ。 (表示先レイヤー〈表示〉表示エフェクトなし=j
 サブルーチンから復帰

 短いメッセージを表示する例です。
 テキストレイヤーで表示すると時間表示の切り替えの際に消えてしまうので、ユーザーレイヤー〈表示〉に表示しています。
 表示してサブルーチンから復帰し、「待つ」に戻ります。
「一時停止」

一時停止

 メッセージ表示:一時停止中です。 (表示先レイヤー〈表示〉)
 [停止]←[@経過時間]
 ダイナミックレイヤー ID:1 移動先「解除」 すべての範囲を有効♂譁ハ全体
 〔しばらく待つ〕 マウスクリックされるまで待つ
 移動「解除」

 一時停止します。
 数値変数[停止]に、一時停止を始めた時間を入れておきます。
 画面全体を覆うダイナミックレイヤーを作成し、そのダイナミックレイヤーをクリックする、または「Enter」「Shift」キーを押すと、「解除」に移動します。
「解除」

解除

 ダイナミックレイヤーの消去 ID:1
 [停止]←[@経過時間]−[停止]
 [リミット]←[リミット]+[停止]
 [スタート]←[スタート]+[停止]
 メッセージ表示:一時停止解除 (表示先レイヤー〈表示〉)
 サブルーチンから復帰

 「一時停止」から「解除」に移動し、一時停止を解除します。
 「一時停止」で作成した、画面全体を覆うダイナミックレイヤーを消去。
 [停止]に一時停止時間を計算して入れます。
 一時停止した分タイムリミットが伸びるので、[リミット]に足します。
 逆算して[スタート]も遅くなることになるので、[スタート]にも一時停止時間を足します。
 サブルーチンから復帰し、「待つ」に戻ります。
「ミニ」

ミニ

 メッセージ表示:ミニ
 ダイナミックレイヤー ミニ続 ID:2 サブルーチンコール「ミニ続」
 ダイナミックレイヤー ミニ表示 ID:2 サブルーチンコール「ミニ表」
 ダイナミックレイヤー ミニ消す ID:2 サブルーチンコール「ミニ消」
 サブルーチンから復帰

 「ごー」「どーだ」「クリア」「一時停止」が使用不可の状態で、一時停止はせずカウントダウンは続けていく例です。
 「ミニ続」「ミニ表」「ミニ消」をサブルーチンコールするダイナミックレイヤーを作成し、サブルーチンから復帰して「待つ」に戻ります。
 「ミニ続」へのダイナミックレイヤーは、画面全体を覆います。
 画面全体を覆うことで、「ごー」「どーだ」などはクリック出来なくなります。
「ミニ続」

ミニ続

 サブルーチンから復帰
 「ミニ」で作成した、画面全体を覆うダイナミックレイヤーからサブルーチンコール。
 ミニを続けるので、何もせずサブルーチンから復帰して「待つ」に戻ります。
「ミニ表」

ミニ表

 メッセージ表示:ミニ表示
 サブルーチンから復帰

 「ミニ」で作成したダイナミックレイヤーからサブルーチンコール。
 役割は「ごー」「どーだ」とほぼ同じです。
「ミニ消」

ミニ消

 ダイナミックレイヤーの消去 ID:2
 メッセージ表示:ミニ消去。
 サブルーチンから復帰

 ミニを消します。
 「ミニ」で作成した、画面全体を覆うダイナミックレイヤーを消去し、サブルーチンから復帰して「待つ」に戻ります。
「クリア」

クリア

 ダイナミックレイヤーの消去 ID:0
 メッセージ表示:(空白)
 メッセージ表示:クリア!
 マウスクリックされるまで待つ
 移動「スタートページ」

 プレイヤーがカウントをクリアします。
 「ごー」「どーだ」等のダイナミックレイヤーを消去して、終わりです。
「オーバー」

オーバー

 ダイナミックレイヤーの消去 ID:0
 ダイナミックレイヤーの消去 ID:2
 メッセージ表示:(空白)
 メッセージ表示:オーバー!
 マウスクリックされるまで待つ
 移動「スタートページ」

 タイムリミットが来たので、タイムオーバー。
 ミニ表示中にタイムオーバーになる場合もあるので、ダイナミックレイヤーはID:0もID:2も消去して、終了です。

調整方法

 調整のポイントは、
・制限時間
・選択
・メッセージの内容
・切り替え時間
・カウントダウン表示
・一部削除
・改造
 です。

・制限時間

 サンプルでは、「スタートページ」で制限時間を120秒=2分にしてあります。
 制限時間を変える時は、この120をお好みの秒数に変えてください。

・選択

 サンプルでは、「ごー」「どーだ」を選択出来ます。
 選択肢の表示を変える、増やす時、「スタートページ」でサンプルと同様にダイナミックレイヤーを作成し、選択先のページを作成してください。
 ダイナミックレイヤーは、画面表示だけ変えて引き続き待たせる+時間表示を更新するので、サブルーチンコール=A実行モードを保持する<`ェック無しにしてください。
 ダイナミックレイヤーをイメージを表示≠ノすることも出来ます。
 〔選択肢の表示〕を使うことは出来ません。
 ダイナミックレイヤーでそれっぽく代用してください。

・メッセージの内容

 サンプルでは、「ごー」「どーだ」と表示しています。
 内容を変える、種類を増やす時、ページ「ごー」「どーだ」と同様に〔メッセージの表示〕を1つ作ってください。
 画面表示だけ変えて引き続き待たせる+時間表示を更新するので、〔メッセージの表示〕は表示エフェクトなし(一括表示)≠ナ、最後に<KEY>は入れないでください。
 〔メッセージを表示〕を〔グラフィックの表示〕に変えたりも出来ます。

・切り替え時間

 サンプルでは100ミリ秒ごとに残り時間・経過時間の判断をさせていますが、「ごー」「どーだ」「クリア」をクリックした時、ほんのたまに反応しません。
 これは判断の間隔をどんな数値に設定しても起こりえる現象です。
 待機中にクリックするか、他のコマンドの動作中にクリックするかの、微妙なタイミングで。
 間隔が空くほど起こる確率は減ります。(理論上です。起こる時は起こります)
 逆に、表示切替に対する判断の間隔が大きいほど、例えば1秒ずつ表示する時、1秒ごとに判断をさせると、複数のコマンドの動作に時間がかかる為に、「少し時間の切り替わりが速い」「遅い」と思うことがあります。
 以上二点を考慮して、実際に動かして見ながら、200ミリ秒、500ミリ秒など、お好みの切り替え時間に調整してください。

・カウントダウン表示

 サンプルでは1秒ごとにカウントダウンの表示を更新していますが、残り時間・経過時間を分で表示することも出来ます。
 例えば残り時間を分で表示する場合は、更に数値変数[残り秒]を追加し、
 [残り]←[リミット]−[@経過時間]の次に、
 [残り秒]←[残り]mod 60
 [残り]←[残り]÷ 60
 IF[残り秒]≠ 0
  [残り]←[残り]+ 1
 ENDIF
 を足します。
 130秒を60で割ると商(÷)は2、余り(mod)10です。
 130秒では残り時間3分と表示したいので、[残り秒]≠ 0で[残り]= 2(商)に+1して[残り]= 3にします。
 120秒の時は商2、余り0。[余り]=0なので[残り]= 2のままです。
 経過時間を分で表示する場合も、同様です。

・一部削除

 変数、レイヤーの名前はサンプルと同じでなくても構いません。
 別の用途に使用している変数、レイヤーを兼用することも可能です。
 サンプルは[スタート][リミット][残り][経過][停止]と5つ変数を使っていますが、例えば経過時間を計算する必要が無ければ[スタート][経過]は使わなくても出来ます。
 [スタート]←[@経過時間] と
 [経過]←[@経過時間]−[スタート]を削除して、
 [リミット]←[スタート]+ を
 [リミット]←[@経過時間]+ に変えます。
 一時停止をしない場合は、ページ「一時停止」「解除」、数値変数[停止]、「スタート」の「一時停止」へのダイナミックレイヤーは、削除してください。
 他、経過時間表示だけにするなど、機能を一部削除する場合は、必要の無い変数は削るなどしてください

・改造

 お好みで色々改造してみてください。