4.ターン制を再現する

ティラノスクリプトで、ターン制システムを再現してみます。ゲームに時間の流れができます。思ったより、簡単だと思いますよ。

設定

まず、ターンの初期値を設定します。「first.ks」に記載した初期ステータスの変数設定([iscript]と[endscript]の間)に、以下のコードを追加してください。

f.ターン = 1

これは、最初のターンが「1」であることを設定するものです。

ターンの終了処理(次のターンに進む)

基本の育成画面ファイルの、育成コマンドボタン表示コードより下(一番下とか)に、下記コードを記載してください。

*ターン終了

ターンが終わります[l][cm]
[eval exp="f.ターン = f.ターン + 1"]

[jump]

ターン終了を伝えるメッセージを表示し、「ターン」数をプラス1します。

最後は、必ず[jump]で終えてください。また、「target」に、育成画面のラベルを指定しないでください

これは、育成画面表示前の処理を行わせるためです。

以降は、下のコードを利用することで、ターンを終了させることができます。

[jump target="*ターン終了"]

1ターンにつき1回行動できるゲームであれば、基本画面に戻る代わりに、これを使えばよい([jump  target=”*育成画面”  ]と置き換える)です。

1ターンで複数回の行動をさせたい場合は、また別の記事で。

「ターンをスキップ」みたいなボタンを作って、このラベルを指定すれば、ターンスキップも実装できます。

ターン数の表示

育成画面のファイルに、こんな感じで記載してください。

*育成画面

[freeimage  layer="1"  ]
[layopt  layer="1"  visible="true"  ]

[eval exp="f.ターン表示 = 'ターン:' + f.ターン"]
[ptext layer="1" x="0" y="10" size="40" text="&f.ターン表示"]

必ず、「育成画面」を示すラベルより下、各ボタンを表示するコードより上に記載してください。

前景レイヤーに、「任意の文字+変数」を表示するには、ちょっと段階を踏む必要があります。詳細は、以下の記事で確認してください。

上段の2行は重要です。1行目は、レイヤーを消去するもので、2行目は、表示するものです。

なぜ、先に「消去」を挟むのかといえば、一旦、前景レイヤーに表示した変数は、ずっと残り続けてしまうからです。つまり、これがないと、変化前のターンの数値と、変化後のターンの数値が、永遠に重なり続けてしまいます。非常に見づらいことになります。

いわば、これはリロード機能のようなものです。ターン開始時に、いちいちリロードされるようにします。

ターンの上限(エンディング)

無限に遊べるゲームを作るなら別ですが、ゲームの終了時点・エンディングを設けるなら、ターンの上限を設定しなくてはなりません。

育成ファイルの必ず1番上に、このように書いてください。どんな処理にも優先して行うためです。

[if exp="f.ターン == 11"]
ゲームは終了です。[l][cm]
[jump storage="first.ks"]

[else]

[endif]

このコードでは、11ターン目になると、ゲーム終了を伝えるメッセージを表示し、初期化する(ターン1に戻る)ようにしました。つまり、ターンの上限は10です。

今回は、とりあえず簡単な処理にしましたが、ターンの上限数や、エンディング処理などは、自由にカスタマイズしてみてください。

エンディングの様々なアイデアは、応用編で紹介する予定です。

これで一通り、育成ゲームに必要な要素が揃ったのではないでしょうか。この後は、「応用編」や、「UI・画面表示」なども参考にしながら、思い通りに育成ゲームを作ってみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です