タイムリミット3

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

〜長所〜

・選択したメッセージが続けて表示されている時、Enterキーまたはスペースキーでメッセージを進めることが出来る。

〜短所〜
・↑の動作をしやすくする為、時間表示の更新が1や2に比べ遅くせざるをえない。
・その為秒単位の時間表示はお勧めできない。(サンプルで秒数表示にしているのは参考の為)
・分単位の表示もややずれが生じる。

 数値変数
[スタート]…カウント開始時間、または+一時停止時間
[リミット]…タイムオーバー時間、または+一時停止時間
[残り]…タイムオーバーまでの時間
[経過]…カウント開始からの経過時間
[停止]…一時停止開始時間、または一時停止時間
[移動]…「基本」からどのページに移動するかの印

 文字列変数
{文章}…メッセージ内容

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

スタートページ」「基本」「待つ」「」「」「」「A中」「B中」「C中」「進む」「一時停止」「解除」「クリア」「クリア!」「オーバー」 +調整方法


「スタートページ」

スタートページ

 レイヤー制御〈表示〉
 レイヤー制御〈時間〉
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=FA 移動「A」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=FB 移動「B」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=FC 移動「C」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=Fクリア 移動「クリア」
 選択時に〜≠ノチェック無し
 ダイナミックレイヤーの作成
 (ID:0 テキストを表示=F一時停止 移動「一時停止」
 選択時に〜≠ノチェック無し
 [スタート]←[@経過時間]
 [リミット]←[スタート]+ 300
 [移動]←0
 移動「基本」

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

基本

 ダイナミックレイヤーの消去 ID:1
 IF[移動]=1
  移動「オーバー」
 ENDIF
 IF[移動]=2
  移動「クリア!」
 ENDIF
 IF[移動]=3
  移動「A中」
 ENDIF
 IF[移動]=4
  移動「B中」
 ENDIF
 IF[移動]=5
  移動「C中」
 ENDIF
 {文章}:基本メッセージです。
 サブルーチンコール「待つ」
 移動「基本」

 通常は「基本」から「待つ」をサブルーチンコールしている状態でクリックを待ちます。
 ダイナミックレイヤーのどれかをクリックするとここに戻り、各ページに移動します。
「待つ」

待つ

 IF[移動]=1
  サブルーチンから復帰
 ENDIF
 [残り]←[リミット]−[@経過時間]
 [経過]←[@経過時間]−[スタート]
 IF[残り]≦0
  [移動]←1
  サブルーチンから復帰
 ENDIF
 メッセージ表示:%経過%秒経過ー。残り%残り%秒ー。
 メッセージ表示:$文章$
 [停止]←[@経過時間]+
 秒経過するか、マウスクリックされるまで待つ
 IF[停止]=[@経過時間]
  移動「待つ」
 ENDIF
 サブルーチンから復帰

 残り時間、経過時間を計算します。
 残り時間が0以下ならタイムオーバーなので、印に[移動]を1にしてサブルーチンから復帰します。
 そうでなければ時間を表示し、秒待ちます。
 この時、待ち始める直前で[停止]に、自動的に待機が解除される予定の時間を入れておきます。
 待機後にその時間通りであれば、ダイナミックレイヤーはクリックされなかったので、「待つ」の頭に移動してまた待ちます。
 そうでなければ待機中にダイナミックレイヤーをクリックしたので、どこかに移動する可能性があるので、サブルーチンから復帰します。
「A」「B」「C」


 [移動]←3
 サブルーチンから復帰


 [移動]←4
 サブルーチンから復帰


 [移動]←5
 サブルーチンから復帰
 各メッセージ表示に移る印に、[移動]を変えてサブルーチンから復帰します。
「A中」「B中」「C中」
A中

 [移動]←0
 ダイナミックレイヤーの作成
 (ID:1 表示しない=@移動「進む」
 選択時に〜≠ノチェック無し
 {文章}:他の〜
 サブルーチンコール「待つ」
 (略)
 移動「基本」
B中

 [移動]←0
 ダイナミックレイヤーの作成
 (ID:1 表示しない=@移動「進む」
 選択時に〜≠ノチェック無し
 {文章}:[移動]の〜
 サブルーチンコール「待つ」
 (略)
 移動「基本」
C中

 [移動]←0
 ダイナミックレイヤーの作成
 (ID:1 表示しない=@移動「進む」
 選択時に〜≠ノチェック無し
 {文章}:1ページ〜
 サブルーチンコール「待つ」
 移動「基本」

 各メッセージを表示します。
 [移動]が3、4、5の時に「基本」から「A中」「B中」「C中」に移動します。
 表示中はカウントダウンを続けるので、[移動]は0に直しておきます。
 画面をクリックした時に普通のダイナミックレイヤーをクリック出来ないようにする&次のメッセージに進むようにする為に、「進む」をサブルーチンコールするダイナミックレイヤーをID1で作成しておきます。
 {文章}にメッセージを入れ、サブルーチンコールした「待つ」の〔メッセージの表示〕で表示して、カウントダウンを続けます。
 メッセージが終わったら、「基本」に移動します。
「進む」

進む

 サブルーチンから復帰

 「A中」「B中」「C中」で、画面をクリックすると「進む」をサブルーチンコールし、すぐ戻ることで、次のメッセージへ進みます。
「一時停止」

一時停止

 メッセージ表示:一時停止中です。
 [停止]←[@経過時間]
 ダイナミックレイヤーの作成
 (ID:1 表示しない=@移動「解除」
 選択時に〜≠ノチェック無し
 〔しばらく待つ〕 マウスクリックされるまで待つ
 移動「解除」

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

解除

 [停止]←[@経過時間]−[停止]
 [リミット]←[リミット]+[停止]
 [スタート]←[スタート]+[停止]
 サブルーチンから復帰

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

クリア

 [移動]←2
 サブルーチンから復帰

 プレイヤーがカウントをクリアします。
 印に[移動]を2にして、「待つ」に戻ります。
「クリア!」

クリア!

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

 [移動]が2の時、「基本」から「クリア!」に移動します。
 「A」「B」「C」等のダイナミックレイヤーを消去して、終了です。
「オーバー」

オーバー

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

 タイムリミットが来たので、タイムオーバー。
 [移動]が1の時、「基本」から「オーバー」に移動します。
 「A」「B」「C」等のダイナミックレイヤーを消去して、終了です。

調整方法

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

・制限時間

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

・選択

 サンプルでは、「A」「B」「C」を選択出来ます。
 選択肢の表示を変える、増やす時、「スタートページ」でサンプルと同様にダイナミックレイヤーを作成し、選択先のページと、「基本」から移動するページを作成してください。
 ダイナミックレイヤーは、移動=A実行モードを保持する<`ェック無しにしてください。
 ダイナミックレイヤーをイメージを表示≠ノすることも出来ます。
 〔選択肢の表示〕を使うことは出来ません。
 ダイナミックレイヤーでそれっぽく代用してください。
 選択先のページは、ページ「」「」「」のように[移動]を変えて、サブルーチンから復帰します。
 [移動]の数値は0、1、2以外にしてください。
 「基本」から移動するページは、「A中」「B中」「C中」と同様に作ってください。
 「基本」から、サンプルのように、各選択の[移動]によって各ページに移動するようにしてください。

・メッセージの内容

 {文章}に入れては「待つ」をサブルーチンコールする、の繰り返しにしてください。
 メッセージに<B>や<clRed>などを入れることも出来ます。
 ただし、<W1>は入れないでください。
 メッセージを入れるページに〔メッセージの表示〕を加えるとおかしなことになるので、加えないでください。
 {文章}:〜を〔グラフィックの表示〕に変えたりも出来ます。

・切り替え時間

 サンプルでは秒ごとに残り時間・経過時間の判断をさせています。
 「待つ」で指定秒経過後に自動的に〔しばらく待つ〕が解除したか否かの判断をしやすくする為です。
 ミリ秒にするとこの判断が出来なくなります。
 切り替え時間を変える時は、3秒以上の、秒単位にしてください。
 また、その前の [停止]←[@経過時間]+ のも同じ数値に直してください。

・カウントダウン表示

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

・一部削除

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

 メッセージ表示中、選択用ダイナミックレイヤーを全て一時的に消去する場合、「進む」は必要ありません。
 「進む」ページと、画面全体を覆い「進む」へ移動するダイナミックレイヤーは削除してください。

 他、経過時間表示だけにするなど、機能を一部削除する場合は、必要の無い変数は削るなどしてください。

・改造

 お好みで色々改造してみてください。
 例としては、
 〔グラフィックの表示〕が連続表示でなく変化して次の選択先で変わるまで継続して表示する。
 「基本です。」のようにメッセージを戻さず、選択先のメッセージをそのまま表示し続ける。
 選択先によって制限時間を短くする。
 などが出来ます。