今回はキャラクタと会話する方法を考えます。

まずフォームにLabelを追加します。

MapCastleクラスにメソッドを追加

SetPlayerQueenメソッドはプレイヤーを王女の前に配置するためのメソッドです。

ShowMessageイベントの定義

MapCastleクラス内でイベントを定義します。プレイヤーが移動して他のキャラクタと接触したら会話できるようにします。

魔王と接触したら戦闘がはじまるようにします。

MovePlayerメソッドの修正

あとは城のなかでプレイヤーが移動して他のキャラクタと接触したときにイベントが発生するようにします。

ShowMessageイベントを発生させる

ShowQueenMessageメソッドとShowDevilMessageメソッドが呼び出されるとイベントが発生します。王女に対しては最初に話しかけたときとそれ以降では内容を変えています。

Form1クラスにおける処理

Form1クラスにおける処理を示します。

キーを押すたびに会話内容が表示される

MapCastle_ShowMessageメソッドが実行されたら会話を表示します。会話は複数回ボタンをおさないと全部表示されない場合があります。その場合はフィールド変数Messagesに格納してひとつずつ出しながら表示します。

キーを押したときにMessagesに会話内容が格納されていた場合はそれを表示させます。

OnKeyDownShowMessageメソッドが実行されたらMessagesに文字列が格納されていたら表示します。格納されていない場合で会話内容を表示するためのLabelが表示されている場合は非表示にします。いずれでもない場合はこのメソッドはなにもせずにfalseを返します。