今まで作成してきて、限界を感じました。
何に限界を感じたか?というところですが、キーボード入力に対するイベントの取得をするには、根本的に作りを変える必要があるためです。
しかし、GUIにする前に、まずはテキストRPGとして機能させたうえでの実装が必要になると思い引き続きテキストRPGの実装を続けていく予定です。
java関連ページ
- Java はじめて 1 〜メインメソッド〜
- Java はじめて2 〜メソッドを呼び出す〜
- Java はじめて3 〜コメントの書き方〜
- Java はじめて4〜練習問題をやってみる〜
- Java はじめて5 〜変数について〜
- Java はじめて6 〜変数について2、byte, char, boolean型〜
- Java はじめて7 〜配列とは、配列の使い方〜
- Java はじめて8 〜booleanとif~
- Java はじめて 9 〜switch文〜
- Java はじめて 10 〜ループ処理A: for文1〜
- Java はじめて 11 〜ループ処理A: for文2 拡張for文〜
- Java はじめて12 〜ループ処理B: while文〜
- Java はじめて13 〜ループ処理C: do-while文〜
- Java はじめて14 〜クラスの作り方〜
- Java はじめて15 〜クラス型変数の使い方〜
- Java はじめて16 〜クラス設計から実装〜
- Java はじめて17 〜設計後の部品を実装する1〜
- Java はじめて18 〜設計後の部品を実装する2〜
- Java はじめて19 〜コンストラクタの役割を見る〜
- Java はじめて20 〜チェック処理クラスを作る〜
- Java はじめて21 〜オブジェクト指向的分析、アプリの拡張をする〜
- Java はじめて22 〜オブジェクト指向的分析、アプリ拡張の実装とテスト〜
- Java はじめて23 〜テスト駆動型開発を行う〜
- Java はじめて24 〜JUnitでのテスト駆動型開発1〜
- Java はじめて25 〜JUnitでのテスト駆動型開発2: テストケース作成〜
- Java はじめて26 〜JUnitでのテスト駆動型開発3: クラスの実装〜
- Java はじめて27 〜JUnitでのテスト駆動型開発4: 追加修正と実装〜
- Java はじめて28 〜JUnitでのテスト駆動型開発5: ファイル出力の実装〜
- Java はじめて29 〜JUnitでのテスト駆動型開発6: ファイル読み込みのテスト〜
- Java はじめて30 〜JUnitでのテスト駆動型開発7: テストクラスの実装方法〜
- Java はじめて31 〜JUnitでのテスト駆動型開発8: 処理をつなげたテスト〜
JavaFXを使用する
コンソールアプリからGUIアプリへ変更するためには、JavaFXを使用するのが一番早いと思うので、この方法を使います。
今まで作成したものを使用する
今まで作成したものを使用する方向で、JavaFXアプリに変更します。
具体的に?
今までメインメソッドを実装しているMainクラスを改造します。
public class GameMain {
このように書いていた部分を
public class GameMain extends Application {
のように修正します。
これにより、ビルドエラーが出ます。これは実装するべきメソッドを実装していないためです。
細かい話は、下の記事に記載しています。
- 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
## 画面イメージ
![](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)。
```java
@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 セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
Java Basic一覧
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
Git関連
- Java Git clone in Eclipse 〜サンプルの取得〜
- Eclipse Gitリポジトリの取得 〜GitからソースをPullしよう〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
## 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/)
## ステップアップ関連ページ一覧
- 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
## JavaFX + ND4Jで機械学習準備
- JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
- JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
- 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/)