Java ミニゲーム ソース付き 〜コンソールアプリからGUIアプリへ〜

今まで作成してきて、限界を感じました。
何に限界を感じたか?というところですが、キーボード入力に対するイベントの取得をするには、根本的に作りを変える必要があるためです。

JavaFXを使用する

コンソールアプリからGUIアプリへ変更するためには、JavaFXを使用するのが一番早いと思うので、この方法を使います。

今まで作成したものを使用する

今まで作成したものを使用する方向で、JavaFXアプリに変更します。

具体的に?

今までメインメソッドを実装しているMainクラスを改造します。

public class GameMain  {

このように書いていた部分を

public class GameMain extends Application {

のように修正します。

これにより、ビルドエラーが出ます。これは実装するべきメソッドを実装していないためです。
細かい話は、下の記事に記載しています。

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine

## 画面イメージ
![](http://zenryokuservice.com/wp/wp-content/uploads/2020/05/スクリーンショット-2020-05-14-19.59.16.png)
とりあえずは、人を抜かした感じのマップを作成しようと思います。戦闘シーンからは少し離れますが。。。

表示結果はこんな感じです。
![](http://zenryokuservice.com/wp/wp-content/uploads/2020/06/スクリーンショット-2020-06-17-21.09.46-300x264.png)

今後のことを考え、GridPaneを使用して作成すると下のようなコードになります。[Githubに全部あります](https://github.com/ZenryokuService/StepUpGame/commit/9397e9704cafe25decfb91e10badb5631f653101#diff-5be3ca72285c30fcf6ff21598f8dc67c)。

@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setWidth(WIN_WIDTH);
    primaryStage.setHeight(WIN_HEIGHT);
    // ルートコンテナ
    BorderPane root = new BorderPane();

    GridPane grid = new GridPane();
    grid.getColumnConstraints().add(new ColumnConstraints(40));
    for(int y = 0; y < 20; y++) {
        for (int x = 0; x  < 20; x++) {
            grid.add(getGrassTile(), x, y);
        }
    }
    root.setCenter(grid);
    Label textLabel = new Label();
    textLabel.setBackground(new Background(new BackgroundFill( Color.RED , new CornerRadii(5) , Insets.EMPTY )));
    root.setBottom(textLabel);

    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.show();
}

private Label getGrassTile() {
    // マップの草原用、イメージ(40x40)
    URL url = getClass().getResource("/map/Grass.png");
    ImageView image = new ImageView(new Image(url.toExternalForm()));
    Label tile = new Label();
    tile.setGraphic(image);
    return tile;
}

## まとめ
一度、コンソールアプリのクラスTextRpgGameを一度コメントアウトし、JavaFXアプリとして作成し直します。
シンプルに、草のマップを作成しました。

とりあえずは、GridPaneを使用して、20x20マスのマップを表示しました。
これで、一部を修正することも、書き換えることも簡単にできます。

でわでわ。。。



## 関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

## JavaFX関連ページ
1. [Eclipse SceneBuilderを追加する](https://zenryokuservice.com/wp/2018/11/17/eclipse-scenebuilder%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/)
1. [JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~](https://zenryokuservice.com/wp/2018/11/17/javafx-scenebuilder-%e3%80%9ceclipse%e3%81%a8scenebuilder%e9%80%a3%e6%90%ba/)
1. [JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜](https://zenryokuservice.com/wp/2019/02/05/javafx-scenebuilder%e3%80%9c%e3%83%9c%e3%82%bf%e3%83%b3%e3%81%ab%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89%e3%82%92%e5%89%b2%e3%82%8a%e5%bd%93%e3%81%a6%e3%82%8b%e3%83%af%e3%83%b3%e3%83%9d%e3%82%a4%e3%83%b3/)
1. [Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜](https://zenryokuservice.com/wp/2020/03/30/java-%e3%83%97%e3%83%ad%e3%82%b3%e3%83%b3%e3%82%b2%e3%83%bc%e3%83%a0-%e3%80%9c%e8%a6%8b%e3%81%9f%e7%9b%ae%e3%81%ae%e4%bd%9c%e6%88%90scenebuilder%e3%81%ae%e4%bd%bf%e7%94%a8%e3%80%9c/)

## ステップアップ関連ページ一覧

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine

## JavaFX + ND4Jで機械学習準備

  1. JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
  2. JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
  3. Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜

## オブジェクト指向関連ページ
1. [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
1. [オブジェクト指向の概念2〜クラスとは〜](https://zenryokuservice.com/wp/2019/10/30/%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5%e3%80%9c%e3%82%af%e3%83%a9%e3%82%b9%e3%81%a8%e3%81%af%e3%80%9c/)

Java Discord

  1. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
  2. Java Discord セットアップ〜Hello Discord〜
  3.  Java Discord ピンポン〜Discordプログラム〜
  4. Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜