標準入出力

Java – キーボード入力で簡単なゲームを作ってみる【入門レベル】

Javaでキーボード入力を利用した簡単なゲームを作るには、基本的な構文と標準入力の仕組みを理解する必要があります。

Scannerクラスを使用してユーザーからの入力を受け取り、条件分岐やループを活用してゲームのロジックを構築します。

例えば、数当てゲームでは、ランダムな数値を生成し、ユーザーがその数を当てるまで繰り返し入力を求める仕組みを作ります。

ゲームの進行に応じてメッセージを表示し、正解時に終了するように設計します。

Javaでキーボード入力を使ったゲームを作る準備

Javaでキーボード入力を使ったゲームを作成するためには、まず開発環境を整える必要があります。

以下の手順に従って、必要なツールをインストールし、基本的な設定を行いましょう。

開発環境の準備

項目内容
JDKのインストールJava Development Kit (JDK)をインストールします。最新のバージョンをOracleの公式サイトからダウンロードできます。
IDEの選定EclipseやIntelliJ IDEAなどのIDEを選び、インストールします。これにより、コードの編集やデバッグが容易になります。
プロジェクトの作成IDEを使って新しいJavaプロジェクトを作成します。プロジェクト名は SimpleGame としましょう。

必要なライブラリのインストール

キーボード入力を扱うために、特別なライブラリは必要ありませんが、標準のJavaライブラリを使用します。

以下のimport文をコードに追加することで、キーボード入力を行うことができます。

import java.util.Scanner; // キーボード入力を扱うためのライブラリ

サンプルコードの準備

次に、基本的なゲームの骨組みを作成します。

以下のサンプルコードを App.java というファイル名で作成してください。

import java.util.Scanner; // キーボード入力を扱うためのライブラリ
public class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Scannerオブジェクトの作成
        System.out.println("数字を入力してください: "); // ユーザーへのメッセージ
        int userInput = scanner.nextInt(); // ユーザーからの入力を取得
        System.out.println("あなたが入力した数字は: " + userInput); // 入力された数字を表示
        scanner.close(); // Scannerオブジェクトを閉じる
    }
}

上記のコードを実行すると、以下のような出力が得られます。

数字を入力してください: 
5
あなたが入力した数字は: 5

このように、キーボードからの入力を受け取り、表示する基本的なプログラムが完成しました。

次のステップでは、このコードを基にして簡単なゲームを実装していきます。

ゲームの設計を考える

ゲームを作成する前に、どのようなゲームを作るのかを明確にすることが重要です。

ここでは、シンプルな数当てゲームを例に挙げて、ゲームの設計を考えてみましょう。

ゲームの目的

  • プレイヤーがコンピュータがランダムに生成した数字を当てること。
  • プレイヤーは指定された回数内で正しい数字を当てる必要がある。

ゲームのルール

ルール内容
数字の範囲1から100までの整数を使用する。
試行回数プレイヤーは最大5回の試行ができる。
ヒントプレイヤーが入力した数字が正解より大きいか小さいかを知らせる。
ゲームの終了条件正解を当てるか、試行回数を使い切るまで続ける。

ゲームのフロー

  1. コンピュータが1から100の間でランダムな数字を生成する。
  2. プレイヤーに数字を入力させる。
  3. 入力された数字が正解かどうかを判定する。
  4. 正解の場合、勝利メッセージを表示し、ゲームを終了する。
  5. 不正解の場合、ヒントを表示し、次の試行を促す。
  6. 最大試行回数に達した場合、ゲームオーバーメッセージを表示し、正解の数字を知らせる。

サンプルコードの設計

このゲームの設計に基づいて、次のようなサンプルコードの構成を考えます。

import java.util.Random; // ランダムな数字を生成するためのライブラリ
import java.util.Scanner; // キーボード入力を扱うためのライブラリ
public class App {
    public static void main(String[] args) {
        // ゲームのロジックをここに実装する
    }
}

このように、ゲームの目的、ルール、フローを明確にすることで、実装に向けた具体的なイメージを持つことができます。

次のステップでは、実際にこの設計に基づいてコードを実装していきます。

コードの実装

ここでは、先ほど設計した数当てゲームのコードを実装します。

以下のサンプルコードを App.java というファイル名で作成してください。

このコードは、コンピュータが生成したランダムな数字をプレイヤーが当てるゲームのロジックを含んでいます。

import java.util.Random; // ランダムな数字を生成するためのライブラリ
import java.util.Scanner; // キーボード入力を扱うためのライブラリ
public class App {
    public static void main(String[] args) {
        Random random = new Random(); // Randomオブジェクトの作成
        Scanner scanner = new Scanner(System.in); // Scannerオブジェクトの作成
        int targetNumber = random.nextInt(100) + 1; // 1から100の間でランダムな数字を生成
        int attempts = 5; // 最大試行回数
        boolean isCorrect = false; // 正解フラグ
        System.out.println("数当てゲームを始めます!"); // ゲーム開始メッセージ
        // 最大試行回数までループ
        for (int i = 0; i < attempts; i++) {
            System.out.print("1から100の数字を入力してください: "); // ユーザーへのメッセージ
            int userInput = scanner.nextInt(); // ユーザーからの入力を取得
            // 入力された数字が正解かどうかを判定
            if (userInput == targetNumber) {
                isCorrect = true; // 正解フラグを立てる
                break; // ループを抜ける
            } else if (userInput < targetNumber) {
                System.out.println("もっと大きい数字です。"); // ヒント
            } else {
                System.out.println("もっと小さい数字です。"); // ヒント
            }
        }
        // ゲームの結果を表示
        if (isCorrect) {
            System.out.println("おめでとうございます!正解です!"); // 勝利メッセージ
        } else {
            System.out.println("残念!正解は " + targetNumber + " でした。"); // ゲームオーバーメッセージ
        }
        scanner.close(); // Scannerオブジェクトを閉じる
    }
}
  • Randomクラスを使用して、1から100の間でランダムな数字を生成します。
  • Scannerクラスを使用して、ユーザーからの入力を受け取ります。
  • 最大5回の試行を行い、ユーザーが入力した数字が正解かどうかを判定します。
  • ユーザーが正解した場合は勝利メッセージを表示し、試行回数を使い切った場合は正解の数字を表示します。

上記のコードを実行すると、以下のような出力が得られます。

数当てゲームを始めます!
1から100の数字を入力してください: 50
もっと小さい数字です。
1から100の数字を入力してください: 30
もっと大きい数字です。
1から100の数字を入力してください: 40
おめでとうございます!正解です!

このように、数当てゲームが正常に動作することを確認できます。

次のステップでは、コードの改善や拡張について考えていきます。

コードの改善と拡張

実装した数当てゲームは基本的な機能を持っていますが、さらに使いやすく、楽しめるゲームにするために改善や拡張を行うことができます。

以下にいくつかのアイデアを示します。

入力のバリデーション

ユーザーが無効な入力(例えば、数字以外の文字や範囲外の数字)を行った場合に、エラーメッセージを表示し、再度入力を促す機能を追加します。

改善コード

while (true) {
    System.out.print("1から100の数字を入力してください: "); // ユーザーへのメッセージ
    if (scanner.hasNextInt()) { // 入力が整数かどうかをチェック
        int userInput = scanner.nextInt(); // ユーザーからの入力を取得
        if (userInput < 1 || userInput > 100) { // 範囲外のチェック
            System.out.println("1から100の間の数字を入力してください。"); // エラーメッセージ
            continue; // ループの先頭に戻る
        }
        // 正解判定の処理
        // ...
    } else {
        System.out.println("無効な入力です。数字を入力してください。"); // エラーメッセージ
        scanner.next(); // 無効な入力を消費
    }
}

ゲームのリプレイ機能

ゲームが終了した後に、プレイヤーに再度プレイするかどうかを尋ねる機能を追加します。

これにより、プレイヤーは何度でもゲームを楽しむことができます。

改善コード

boolean playAgain = true; // リプレイフラグ
while (playAgain) {
    // ゲームのロジック
    // ...
    System.out.print("もう一度プレイしますか? (y/n): "); // リプレイの確認
    String response = scanner.next(); // ユーザーの入力を取得
    playAgain = response.equalsIgnoreCase("y"); // 'y'の場合は再プレイ
}

スコアの表示

プレイヤーがゲームをクリアした際に、試行回数を基にスコアを計算し、表示する機能を追加します。

これにより、プレイヤーは自分の成績を確認できます。

改善コード

int score = (attempts - (i + 1)) * 10; // 残り試行回数に基づくスコア計算
System.out.println("あなたのスコアは: " + score + " 点です。"); // スコアの表示

ヒントの追加

プレイヤーが正解に近づくにつれて、より具体的なヒントを提供する機能を追加します。

例えば、正解の数字が入力された数字からどれくらい離れているかを示すことができます。

改善コード

int difference = Math.abs(userInput - targetNumber); // 入力と正解の差を計算
if (difference <= 10) {
    System.out.println("とても近いです!"); // 近い場合のヒント
} else if (difference <= 20) {
    System.out.println("近いです!"); // 近い場合のヒント
} else {
    System.out.println("遠いです。"); // 遠い場合のヒント
}

これらの改善や拡張を行うことで、数当てゲームはより魅力的でプレイヤーにとって楽しめるものになります。

次のステップでは、実行とデバッグを行い、最終的な調整を行います。

実行とデバッグ

実装した数当てゲームを実行し、動作を確認することは非常に重要です。

ここでは、ゲームを実行する手順と、デバッグの方法について説明します。

実行手順

  1. IDEを開く: 使用しているIDE(EclipseやIntelliJ IDEAなど)を開きます。
  2. プロジェクトを選択: 作成した SimpleGame プロジェクトを選択します。
  3. App.javaを開く: App.java ファイルを開き、実装したコードが正しいことを確認します。
  4. 実行: IDEの実行ボタンをクリックするか、右クリックメニューから「実行」を選択します。

実行結果の確認

ゲームが正常に動作する場合、以下のような出力が得られます。

数当てゲームを始めます!
1から100の数字を入力してください: 50
もっと小さい数字です。
1から100の数字を入力してください: 30
もっと大きい数字です。
1から100の数字を入力してください: 40
おめでとうございます!正解です!
あなたのスコアは: 40 点です。
もう一度プレイしますか? (y/n): n

デバッグの方法

もしゲームが期待通りに動作しない場合、以下の手順でデバッグを行います。

  1. エラーメッセージの確認: コンソールに表示されるエラーメッセージを確認します。

これにより、どの部分で問題が発生しているかを特定できます。

  1. ブレークポイントの設定: IDEのデバッグ機能を使用して、特定の行にブレークポイントを設定します。

これにより、プログラムの実行を一時停止し、変数の値を確認できます。

  1. 変数の値を確認: デバッグモードでプログラムを実行し、変数の値を確認します。

特に、ユーザーの入力やランダムに生成された数字が正しいかどうかをチェックします。

  1. ロジックの確認: ゲームのロジックが正しく実装されているかを確認します。

条件分岐やループの動作が期待通りであるかを見直します。

  1. テストケースの作成: 異なる入力に対してゲームが正しく動作するかを確認するために、いくつかのテストケースを作成します。

例えば、範囲外の数字や無効な入力を試してみます。

実行とデバッグを通じて、数当てゲームが正しく動作することを確認し、必要に応じて修正を行います。

これにより、プレイヤーにとって楽しい体験を提供できるゲームが完成します。

次のステップでは、最終的な調整や改善を行い、ゲームを完成させます。

まとめ

この記事では、Javaを使ってキーボード入力を利用した数当てゲームを作成する過程を振り返りました。

ゲームの設計から実装、改善、デバッグに至るまでの一連の流れを通じて、プログラミングの基本的な考え方や実践的なスキルを身につけることができました。

ぜひ、この記事を参考にして、自分自身のオリジナルゲームを作成し、さらなるプログラミングの楽しさを体験してみてください。

関連記事

Back to top button