1976年生まれのプログラミング初心者のゲーム制作日記

ひょんなことからJavaでゲームを作ることになり、その過程を記しています。

テキストアドベンチャーゲームを作る 3

<キーボードの入力を読み取る>

 

「townGate」という新たなメソッドを作った後は、次のようにプログラム文を書き足しました。

-------------------------------------------------------------------------------------------------------------------

import java.util.Scanner;

public class Raindia
{
    public static void main(String[]args)
    {
        Raindia game = new Raindia();
        game.townGate();        
    }
    
    public void townGate()
    {
        System.out.println("長い旅の果てに、あなたは小さな町の門にたどり着いた。");
        System.out.println("門の前には衛兵が1人立っている。");
        System.out.println("どうしますか?");
        System.out.println("1:あたりを見回す");
        System.out.println("2:衛兵に話しかける");
        System.out.println("3:衛兵を攻撃する");
        
        Scanner input = new Scanner(System.in);
    }
}

--------------------------------------------------------------------------------------------------------------------
新たに追加されたのは

・冒頭の「import java.util.Scanner;」という1行
・「townGate」メソッドの中の4行
・「Scanner input = new Scanner(System.in);」という1行

です。

まず「townGate」メソッドの中に1から3の番号を振った選択肢を書きました。まずこう書いて選択肢をプレイヤーに提示し、後でキーボードから番号を入力することで選択肢を選べるようにしようと思ったのです。

ただそのためには「キーボードからの入力を読み取るためのプログラム」を書く必要があります。

そこで登場するのが「Scanner(スキャナー)」というJavaの機能である…ということを僕は以前に述べたレクチャーで学んでいました。

Scannerにはキーボードから入力した情報を読み取る機能があります。

その場合まず、このプログラム上でScannerを使用しますよ、ということを宣言する必要があるのですが、それはこんな風に書きます。

Scanner input = new Scanner(System.in);

これでキーボードによる入力をScannerが読み取りますよ、という意味になるようです。

正確に言うと「input」のところは自分の好きな名前をつけられます。たとえば

Scanner yomikomi = new Scanner(System.in); でも、
Scanner myscanner = new Scanner(System.in); と書いても大丈夫です。

そして(System.in)というのが“情報を読み取る”ことを意味しているようです。文字を出力するときは「System.out.println」と書いたので、その逆みたいな感じでしょうか。

この一行全体で何を意味しているか、理解できている範囲で整理すると、

“読み取りの機能(System.in)を持ったScannerに「input」という名前をつけて使うことを宣言した”

みたいな感じでしょうか。Scannerに限らず、プログラム内でこうした新しい機能の使用を宣言するときは基本的に任意の名前をつけて「= new」という書き方をすることが多いようです。このへんのフォーマットは僕も最初はよくわからず丸写しのように書いていましたが、何度も書いているうちに少しずつ法則がわかっていった感じです。

そしてScannerを使うための最後の仕上げとして、プログラムの一番最初に

import java.util.Scanner;

という「インポート文」なるものを書きます。

冒頭のインポート文「import java.util.Scanner;」は、
「“java” の “util(ユーティリティ)” カテゴリーの中にある “Scanner” をこのプログラムで使用するためにインポートします」といった意味のようです。ScannerのようにJavaに最初から組み込まれている機能を使う場合は基本的にこうしてインポート文というのを冒頭に書かないと使用できない決まりのようです。

ともあれ、これでようやくScannerを使う準備がすべて整いました。