イントロダクション
コマンドプロンプト(Windows), ターミナル(Mac, Linux)で文字ベースでのゲームを作成しようと試みました。結局ゲームの内容までは届きませんでしたが、入力〜出力までの一連の流れを実装しました。
つまり、ゲームのイメージがあればこのまま完成まで行けるのでは?
別物ですが、こんなものも作ってみました。
Console app sanple....
Introduction
I will create a text based game on terminal or command prompt. But I implemented only from Input to output.
I mean if you have idea then you can implement game?
実際に作ったもの
作成したJarファイルはこちらです。ダウンロードして「java -jar ファイル名」の形でコマンドをたたいて動かすことができます。
コマンドプロンプトから起動してください。
Macの場合はターミナルです。コマンドは下のように使います。コマンドの実行例です。
ダウンロードしたディレクトリに移動
- cd ダウンロードしたディレクトリ
java -jar ./CmdRpg.jar
で起動することができます。- GitからプロジェクトをそのままPullしてきてもおっけ
プロジェクトのPull方法を参照してください。(Java Git clone in Eclipse 〜サンプルの取得〜)
ゲームの処理概要としては以下の様になります。ソースはこちら
/** * ゲームを起動する </br> * 標準入力の受付、「bye」コマンドでAPを終了する</br> * * @param args プログラム引数 */ public static void main(String[] args) { // 初期化処理 init(); try { // ゲーム起動(GameLoop開始) gameLoop(); } catch(IOException ie) { ie.printStackTrace(); } // リソースの解放 terminated(); }
このクラスは、どんどん拡張(追加で実装)できる様に
筆者なりに考えて作成いたしました。
これを土台にするもしないも自由にやってもらって結構です。
一応、記載しておきます。余計であれば読み飛ばしてください。
【考え方】
起動するメインメソッド→ゲームを起動する部分だけを記述したい。
Execute main method → I would like to write olnly game execution.
- メインメソッドから呼び出したい(処理の範囲を切り分け)
処理を「staticメソッド」で定義。 - 処理を「初期化」
- 「ゲームループ」
- 「終了(リソース解放)」とカテゴリ分けをする。
- 静的メソッド(メインメソッドを含む)とメンバメソッドを切り分ける→
staticが付いているものとそうでないものを使用方法のサンプルとして記述
Static method is called by main method → separates implementation as “init”, “game loop”, “terminated”.
Separates static and member method→as sample for use these.
staticはメインメソッドから直接呼べる
メンバメソッドはインスタンスを作ってからでないと呼べない。
フィールドとか、クラスなど、実際にはどの様に使うの?
って部分をソースの方に記載しています。
※わかりずらかったらゴメンなさい
private static void gameLoop() throws IOException{ // mainメソッドと同様にクラスをnewする必要あり game = new RpgMain(); // コンストラクタで入力部品を生成 /* * <ゲームループ> * 1.入力 * 2.データ更新、 * 3.レンダリング(今回はコマンドなので文字出力) * 4.「bye」コマンドでゲームを終了する */ while(true) { String command = game.listenInput(); // command変数がnullになる可能性があるため定数.equals()の形にする if(TERMINATE_GAME.equals(command)) { break; } System.out.println("コマンド入力値: " + command); } }
プログラムの内容
ゲームを起動して、入力→「コマンド:入力値」を表示する
というシンプルなゲーム?です。
「bye」と入力するとゲーム終了となります。
ここで、コンストラクタを開設いたします。
コンストラクタ→newした時に起動する処理を定義する
メソッドの時と同じ様に引数を与えることができる。
詳細はおいおい理解していきましょう。
今回使用しているのは、
フィールド→staticのものとメンバフィールドがあります。
メソッド →フィールドに同じ、newしてから使用するのが「メンバ」
メインメソッドから呼ばれているのがstaticです。
ソースに細かいコメントなどをつけております。
参考になればと思います。
カスタムするなら
上記のソース赤字の部分を修正してどの様に入力を受けて何を表示するか?
を自分で考えて作成するのも1つの方法です。
ちなみに、簡単なコンソールゲームを作って見ました。
余計な音が入っています。
プラスαの一覧
JavaDoc
Java Discord
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
- Java Discord セットアップ〜Hello Discord〜
- Java Discord ピンポン〜Discordプログラム〜
- Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜
JavaFX
- Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
- ステップアッププログラミング〜Java FxでHelloWorld解説〜
- Java StepUpPrograming〜JavaFX で四則計算〜
- Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
- Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
- Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
- Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
- Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine〜