JavaJavaコンソールアプリ

【Java】テキストベースのRPGゲーム開発|基本システムの構築

JavaRPG基本システム解説ページのアイキャッチ画像 Java

Javaを使用してコンソール上で動作するテキストベースのRPGゲームを開発する基本的な手順やコードの解説をします。この記事は、Javaプログラミングの基礎を学びつつ、ゲーム開発を体験したい初心者のプログラマーにとって役に立つでしょう。

はじめに

この記事のコードをコピペしてEclipseで出力結果を確認してみよう

※ゲームの開発過程はクリックすると表示されます。

基本システムの構築

以下の機能を実装していきます。

基本システムの構築
  • メインゲームループの実装
  • 基本的なユーザー入力の処理

※クリックするとコードが表示されます。

Java
import java.util.Scanner;

/**
 * テキストベースRPGのメインクラス
 */
public class RPGGame {
    private static final String EXIT_COMMAND = "exit";
    private static Scanner scanner;
    private static boolean isRunning;

    /**
     * ゲームの実行を開始するメインメソッド
     */
    public static void main(String[] args) {
        init();
        gameLoop();
        cleanup();
    }

    /**
     * ゲームの初期化を行うメソッド
     */
    private static void init() {
        scanner = new Scanner(System.in);
        isRunning = true;
        System.out.println("テキストベースRPGへようこそ!");
        System.out.println("ゲームを終了するには 'exit' と入力してください。");
    }

    /**
     * メインのゲームループ
     * ユーザーの入力を受け付け、適切な処理を行う
     */
    private static void gameLoop() {
        while (isRunning) {
            System.out.print("> ");
            String input = scanner.nextLine().trim().toLowerCase();
            processCommand(input);
        }
    }

    /**
     * ユーザーが入力したコマンドを処理するメソッド
     * @param command ユーザーが入力したコマンド
     */
    private static void processCommand(String command) {
        switch (command) {
            case EXIT_COMMAND:
                isRunning = false;
                System.out.println("ゲームを終了します...");
                break;
            case "help":
                displayHelp();
                break;
            case "status":
                displayStatus();
                break;
            default:
                System.out.println("不明なコマンドです。'help' と入力してコマンドのリストを表示してください。");
        }
    }

    /**
     * ヘルプメッセージを表示するメソッド
     */
    private static void displayHelp() {
        System.out.println("利用可能なコマンド:");
        System.out.println("help   - このヘルプメッセージを表示");
        System.out.println("status - キャラクターのステータスを表示");
        System.out.println("exit   - ゲームを終了");
    }

    /**
     * キャラクターのステータスを表示するメソッド
     */
    private static void displayStatus() {
        System.out.println("あなたのキャラクターのステータス:");
        System.out.println("レベル: 1");
        System.out.println("HP: 100/100");
        System.out.println("MP: 50/50");
    }

    /**
     * ゲーム終了時のクリーンアップを行うメソッド
     */
    private static void cleanup() {
        scanner.close();
        System.out.println("プレイしていただきありがとうございました!");
    }
}

出力結果:

テキストベースRPGへようこそ
ゲームを終了するには 'exit' と入力してください
> help
利用可能なコマンド:
help   - このヘルプメッセージを表示
status - キャラクターのステータスを表示
exit   - ゲームを終了
> status
あなたのキャラクターのステータス:
レベル: 1
HP: 100/100
MP: 50/50
> exit
ゲームを終了します...
プレイしていただきありがとうございました

RPGGame.javaの解説

クラス定義

Java
public class RPGGame {
    // クラスの内容
}

これはRPGGameという名前のクラスを定義しています。ゲームの全ての機能がこのクラス内に実装されます。

定数と変数

Java
private static final String EXIT_COMMAND = "exit";
private static Scanner scanner;
private static boolean isRunning;
  • EXIT_COMMAND: ゲームを終了するためのコマンドを定義する定数です。
  • scanner: ユーザーの入力を受け取るためのScannerオブジェクトです。
  • isRunning: ゲームが実行中かどうかを示すブール値です。

メインメソッド

Java
public static void main(String[] args) {
    init();
    gameLoop();
    cleanup();
}

これはプログラムの開始点です。以下の3つのメソッドを順番に呼び出しています:

  1. init(): ゲームの初期化
  2. gameLoop(): メインのゲームループ
  3. cleanup(): ゲーム終了時の処理

初期化メソッド

Java
private static void init() {
    scanner = new Scanner(System.in);
    isRunning = true;
    System.out.println("テキストベースRPGへようこそ!");
    System.out.println("ゲームを終了するには 'exit' と入力してください。");
}

このメソッドでは:

  • Scannerオブジェクトを作成
  • isRunningをtrueに設定
  • ウェルカムメッセージを表示

ゲームループ

Java
private static void gameLoop() {
    while (isRunning) {
        System.out.print("> ");
        String input = scanner.nextLine().trim().toLowerCase();
        processCommand(input);
    }
}

これはゲームの主要な部分です:

  • isRunningがtrueの間、ループが続きます
  • ユーザーからの入力を受け取り
  • 入力されたコマンドを処理します
ポイント
  • scanner.nextLine()
    • この部分でユーザーからの入力を1行読み取ります。
    • ユーザーがEnterキーを押すまで待機し、入力された文字列全体を取得します。
  • .trim()
    • 取得した文字列の先頭と末尾にある空白文字(スペース、タブ、改行など)を削除します。
    • これにより、ユーザーが誤って入力した余分な空白を除去できます。
  • .toLowerCase()
    • 文字列をすべて小文字に変換します。
    • これにより、大文字小文字の違いを無視してコマンドを処理できるようになります。

注意点:

  • trim()メソッドは文字列の途中にある空白は削除しません。
  • toLowerCase()は英語以外の言語でも機能しますが、一部の言語では予期せぬ結果になる可能性があります。

コマンド処理

Java
private static void processCommand(String command) {
    switch (command) {
        case EXIT_COMMAND:
            isRunning = false;
            System.out.println("ゲームを終了します...");
            break;
        case "help":
            displayHelp();
            break;
        case "status":
            displayStatus();
            break;
        default:
            System.out.println("不明なコマンドです。'help' と入力してコマンドのリストを表示してください。");
    }
}

このメソッドは入力されたコマンドに応じて適切な処理を行います

  • “exit”: ゲームを終了
  • “help”: ヘルプを表示
  • “status”: ステータスを表示
  • その他: エラーメッセージを表示

ヘルプとステータス表示

Java
private static void displayHelp() {
    // ヘルプメッセージの表示
}

private static void displayStatus() {
    // キャラクターステータスの表示
}

これらのメソッドはそれぞれヘルプメッセージとキャラクターのステータスを表示します。

クリーンアップ

Java
private static void cleanup() {
    scanner.close();
    System.out.println("プレイしていただきありがとうございました!");
}

このメソッドはゲーム終了時に呼び出され、Scannerを閉じて終了メッセージを表示します。

このコードは基本的なテキストベースRPGの骨格を提供しており、今後さまざまな機能を追加して拡張できる構造になっています。

まとめ

  • RPGGame.javaクラスを中心に、ゲームの骨格となる基本システムが構築
  • クラス定義、定数と変数の設定、メインメソッドの実装など、Javaプログラミングの基本要素が実践的に適用
  • 初期化メソッドでゲームの初期状態を設定し、ゲームループで継続的なプレイを可能
  • コマンド処理システムにより、プレイヤーの入力に応じたゲーム進行
  • ヘルプとステータス表示機能により、プレイヤーに必要な情報を提供
  • クリーンアップ処理で、ゲーム終了時のリソース管理

この記事は、テキストベースのRPG開発を通じて、ゲームロジックの設計について実践的に学ぶことができます。また、この基本システムを拡張することで、より複雑なゲームシステムの開発にも挑戦できるでしょう。

未経験でもWEBスキルを取得したい方
  • Javaコース
    Javaプログラミングを基礎から応用まで、体系的に学べる実践的なカリキュラムが特徴です。「マインクラフト」を通じてJavaの基本文法とフレームワークの概念を学びます。また、実際のプロジェクト開発を通じて、データベース連携やWebアプリケーション開発のスキルを身につけることができます。

コメント

タイトルとURLをコピーしました