脱出ゲーム作成講座 番外編 ロック装置 3.5 その2

その1のつづきです。

その1では
「右…あ、間違えた、左、右、左、右」…とした場合、
入力記録は「rlrlr」となり不正解になります。
その2ではクリア操作せずに入力しなおした場合でも
正解できるようにします。

まずイベントリスト1行目に書いた変数[lock]作成時の中身を変更します。

lock="0000";

その1では空で作成しましたが、今回は
正解の桁数分のダミー文字で埋めて作成します。
文字は何でもOKですが、誤動作防止のために
入力ボタンに割り当てた文字とかぶらない様にします。
今回は「0」で埋めてみました。

次に各ボタンのスクリプトを変更します。

左ボタンのスクリプト
on(press){
  lock=lock.slice(1);
  lock=lock+"l";
  trace(lock);
}

右ボタンのスクリプト
on(press){
  lock=lock.slice(1);
  lock=lock+"r";
  trace(lock);
}

決定ボタンのスクリプト
on(press){
  if(lock=="lllr"){
    gotoAndPlay("seikai");
  }
}

左右ボタンのスクリプトの先頭に「lock=lock.slice(1);」という1文を追加し、
決定ボタンの不正解時の処理は必要ないので削除しました。
入力記録をクリアしたい場合はダミー文字で埋める処理を書いて下さい。

lock=lock.slice(1);について。
これは変数[lock]の先頭の文字を削除する処理文です。
正しくは、先頭以外の文字列を抜き出す…という感じです。

変数名1=変数名2.slice(開始位置,終了位置);

…という変数2から指定範囲の文字列を抜き出して
変数1に代入する…というコマンドを使用しています。
今回は変数を分けないので左辺右辺ともに同じ変数名、
開始位置は先頭が0なので1を指定、終了位置は
最後まで抜き出す場合は省略できるのでナシです。
結果「lock=lock.slice(1);」となります。


先頭の文字を削除して3文字にした後、ボタンに
割り当てた文字を最後尾に追加して4文字に戻します。
これで何回ボタンを押しても入力記録は
ダミー文字桁数分の最新に保たれます。

トレースウィンドウで動作を確認してみてください。
実際にどう処理されているかがわかりやすいと思います。
ダミー文字と正解の桁数を合わせておくのを忘れずに!

これでその2が終了です。
次で最後です!
スポンサーサイト



コメントの投稿

非公開コメント