前回までで、基本的なロジックは完成していますね。
今回は勝利時の画像切り替え、ライフポイントの管理を実装しましょう。
--
・プレイヤーに手を選ばせる
・CPUの手を決める
・勝敗判定
前回で書いた中で、こいつらはゲームオーバーになるかゲームクリアするかまでは繰り返すことになります。
しかし、その繰り返しってのはどうやって実装すれば?
一つの方法として、jumpとifを使う方法があります。
*フラグ1
繰り返しを続けるかどうかの判定を書く
続けない条件になってた場合は、フラグ2にjump
(★)繰り返したい処理
フラグ1へjumpする
*フラグ2
今まで書いてきたコードを大きく変える必要はなくて、必要な場所に新しくコードを差し込む感じになります。
繰り返し条件は、つまり自分のライフが0になるか、またはCPUのライフが0になるか、ってことですね。
コードに起こしてみましょう。
;ライフポイントを用意する
[eval exp="tf.playerLife = 3"]
[eval exp="tf.cpuLife = 3"]
*loopStart
[if exp="tf.playerLife == 0 || tf.cpuLife == 0"]
[jump target=*loopEnd]
[endif]
[cm]
[ct]
...中略
プレイヤーの負けです...[l][r]
[endif]
[jump target=*loopStart]
*loopEnd
[cm]から[endif]行は前回のコードのままです。
ポイントは、ライフをループが始まる前に用意することですね。
プレイヤーのライフは多いほど難易度が低くなります。
が、CPUは、今回表示する脱衣絵パターンが3しかないので、3にしかできません。
で、さっそく実行してみると、何回勝とうが負けようがゲームが終わりません。
しかも勝ったところで脱衣がないので、なんの面白みもないクソゲーと化していますね...
なぜでしょう?やはり政治が悪いのが原因でしょうか?
答えは実は政治の問題ではなくて、
「どっちかのライフが0になったらループを抜ける」としたのに、ライフを減らす処理が抜けているからですね。
この処理を差し込むべき場所は、やはり勝敗判定のところになります。
...略
プレイヤーの勝ちです![l][r]
[eval exp="tf.cpuLife--"]
...略
引き分けです[l][r]
[eval exp="tf.playerLife--"]
--は1引くという意味です。tf.cpuLife=tf.cpuLife-1と同じ。
さらに、プレイヤーが勝ちのところに、脱衣処理を入れときましょう。
具体的には、CPUのライフによって背景を特定の画像に変更すればいいですね。
[if exp="tf.cpuLife==2"]
[bg storage=datui_2.jpg time=100]
[elsif exp="tf.cpuLife==1"]
[bg storage=datui_3.jpg time=100]
[endif]
最後にクリア後、つまりループを抜けた時の処理を書きましょう。
プレイヤーライフが0なら:タイトル画面に戻る(jumpタグのstorageオプションですね)
プレイヤーライフが0なら:クリアCGを表示
ここまでのをすべて実装したコードが↓です
できたゲームがこちら
test_datui.zip (36.99MB)
ダウンロード
tyranoproject.exeで起動します。