初期化の関数InitInstance()内で
srand()を実行します
さて、
エンカウントするための条件式を
プログラム中のどこに作るべきでしょう?
う、う~ん・・
表示が全部終わった後、だっけ?
そうです
しかも会話とエンカウントは
被らないようにしないといけません
Kaiwa()が成立しなかった時
エンカウントして戦闘に突入する関数
Battle()
を実行するように組んでみましょう
Battle()関数の中身です
グローバル関数で定義してください
まず、変数encountの値を1足します
これには現在の歩数が入っており、
3歩目からじゃないとエンカウントしないような
処理になっています
1歩目でエンカウントすると
かなり鬱陶しいので処理を施しています
(SKULLというゲームはこの処理を行わなかったので1歩目でエンカウントします)
やっとここで乱数が登場するのですが
10分の1の確率でエンカウントするようにしました
数字は好きにいじってください
敵と遭遇した時、
BitBlt()の第9引数で
会話枠の画像をマップと重ね、色を反転して表示させています
そして、1度戦闘に突入したら
歩数encountは再び0にします
実行結果
3歩目以上、10分の1の確率でこの画面が表示されます
お疲れ様でした
これで、エンカウントの処理は完成しました
● 「敵エリア」の作成 ●
マップの場所によって
敵の強さが変わると
ゲームはより面白さが増します
モンスターの生息場所も作ってみましょう
こんな感じで
3種類のモンスターの生息場所を作ってみようと思います
条件式のイメージです
もしxが14以上なら強敵
違くてもしyが13以下なら標準
それ以外ならやや強敵
のように指定すればいいと思います
もっと面白くする!
という強者は、
マップの数字自体を変えて
エンカウントした場所の数字によって判断すると良いと思います
ソースコード
次章はいよいよRPG作成の最終章
「戦闘」
です
章の最後には全てのソースコードを掲載します
お楽しみに!