テキストアドベンチャーゲームを作る 2
<ストーリーの分岐を作るには>
「System.out.println」でテキストを表示させることはできる。
では次に必要なのは何か? それは「分岐だ!」と僕は考えました。
プレイヤーが選んだ選択肢によってストーリーが変わるというやつです。
ゲームブックにおける基本でもあり、
「あなたの目の前で道が二手に分かれている。左に行くか、右に行くか?」
みたいなやつです。
ただそうした分岐の作成に取りかかる前に、僕はまずこのようにプログラムを書き直す必要がありました。
-------------------------------------------------------------------------------------------------------------------
{
public static void main(String[ ]args)
{
Raindia game = new Raindia();
game.townGate();
}
public void townGate()
{
System.out.println("長い旅の果てに、あなたは小さな町の門にたどり着いた。");
System.out.println("門の前には衛兵が1人立っている。");
}
}
-------------------------------------------------------------------------------------------------------------------
5行目と6行目に新しい文
Raindia game = new Raindia();)
game.townGate();
が追加され、以前に書いた台詞は新しく書かれた「public void townGate()」というものの下に移動しています。ちなみにこの「public void」というのはとりあえず決まり文句的なもので、「townGate」というのは僕が任意につけた名前です。
上に書かれている内容を自分なりにざっくり整理すると、
・「public static void main~」や「public void townGate」などはプログラムのセクション的なもの(正式には“メソッド”と言う)の名前。
・メソッドは { で始まり、 } で終わる。つまり{ }でくくられた範囲がそのメソッドの範囲。
・「長い旅の果てに~」から始まるテキストは「townGate」というメソッドの中に属している。
・プログラムは実行すると基本的にメイン・メソッドと呼ばれる「public static void main(String[ ]args)」の中から処理される。
・上のプログラム文では、「public class Raindia」という親セクション(クラス)がまずあり、その中に「public static void main(String[ ]args)」と「public void townGate() 」というふたつのセクション(メソッド)が入っている。
ではなぜ「townGate」という新しいメソッドを作ってその中にテキストを移動したのか?
その理由は…メイン・メソッド(public static void main~)の中では行えることがある種限定されていて、僕がやろうとした分岐のプログラムはこの中に書いてもうまくいかないということがわかったからです。そしていろいろ調べた結果、こういう風に書くとうまくいく、ということがわかりました。
(これ以上の説明は残念ながら現在の自分の知識ではできません)
この5行目と6行目に書かれているプログラム文によって「public static void main~」から「public void townGate」へと移動している、といった感じでしょうか。
「Raindia game = new Raindia();」や「game.townGate(); 」が何を意味するのか、当時の僕にはわかっておらず(いや、正直今でもちゃんと説明できるほどにはわかってません)、他の方が書いていたプログラムをなぞるように書いただけです。