Java Game LWJGL〜Javaで3Dゲームを作る〜
イントロダクション
LWJGLを使用して3Dチェスゲームを作成します。
LWJGLでのセットアップを完了したので、次は実行してみます。
セットアップはこちら
http://zenryokuservice.com/wp/2018/10/11/java-game-creation-lwjgl〜-javaでゲームを作る〜/
ハローLWJGL
写経したコードを実行しました。
写経したけど、その後どうして良いかわからない事もあるので、その辺について記載しました。
http://zenryokuservice.com/wp/2018/10/13/java-game-creation-lwjgl-lv2〜-javaでゲームを作るlv2〜/
結論から言うと
中身の確認して、エラーログを見るって事です。
ツイッターで多少呟きます
@java_takunoji
#PGボックス
Java Game 作成〜LWJGLセットアップ〜
Java 3D JOGL〜JavaでOpenGL〜
イントロダクション
JavaでOpenGLを始めます。今迄ラズパイで手こずってましたがなんとか先が見えたので次に進みます。
描画の実装はクラスを使って以下の手順を行います。
- 描画の土台(フレーム)クラスをインスタンス化→これで土台部分が作成されます。
- フレーム(土台)に描画するもの(コンポーネント)を追加
- 2と3の順番はどちらでも良いですが、コンポーネントの描画を行います
- フレーム(JFrame)の終了処理設定
- 表示(setVisible(true))を行う
JOGLとは
まずはセットアップ
必要なファイル(JARファイルなど)をダウンロードして、ビルドパスに繋ぐだけです。
http://zenryokuservice.com/wp/2018/10/07/setup-opengl-with-java〜joglを使う準備〜/
ポイント
今回の実装では、 Swingを使用してフレーム(外枠)を作成してから内側(コンポーネント)を描く実装になっています。
<登場人物>
今回はGL2には何もしていませんのでGLCanvasの意味がよくわかりませんが土台(フレーム)の上に乗せるキャンパスだと思って頂ければオッケーです。
細かいところは今後やりますのでフレームとキャンパスがあって表示処理をしてるんだなって思って頂ければ大丈夫です。
関連ページ
Java LWJGL ゲーム作成 〜ゲームの基本処理フロー〜
前回は、LWJGLの開発環境構築を行いました。
とりあえず(中身の解析は全然できませんでしたが)
「ゲームはプログラム的にどのように動いているの?」
と思う方もいると思います。
自分は下のチュートリアルをやって「ああ、そー?」
という感じでした(笑)。
確かに基本的な処理フローがあってしかるべきです。
というわけでその「基本処理フロー」について記載します。
ゲームの処理フロー
1. ゲームアプリケーションの起動
2. 初期化処理(ゲームに必要なリソース読み込み)
3. ゲームのプレイ(ゲームループ)
4. 終了処理
上記のような処理が基本的なフローです。
チュートリアルでは、ゲームループ(GameLoop)について
記載してありました、その実装をアップロードしました。
処理としては、上記の通りですが「ゲームループ」の部分
が重要、というか一番のポイントになります。
ゲームコントローラーの入力→データ更新
→画面の更新と処理を繰り返しゲームを成立させます。
詳細に関しては、以下のページを参照ください
Java Game作成 〜ゲームの処理フロー〜 – PGボックス
上記のページでは、まだ中身を実装していないので
TODOコメントとFIXMEコメントを記載しております。
はっきり言って、ほぼコードです。
そして、処理の中身を実装していないので
→メソッドの呼び出し順くらいしか書くこと
がありませんでした(笑)
この処理フローの中身を実装することで「ゲーム」が
作れます。
まずは概要を掴むということで。。。
でわでわ今回はこんなもんで
関連ページ一覧
LWJGL
- Chapter1[外枠の表示のみ]
- Chapter2-1〜クラスの構成〜
- Chapter2-2〜インターフェースの使い方と詳細〜
- Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
- Chapter2-4〜Windowクラス(サンプルクラス)〜
- Chapter3〜描画処理を読む〜
- Chapter4〜シェーダについて〜
- Chapter5-1〜レンダリングについて〜
- Chapter5-2〜レンダリング詳細〜
- Chapter6〜Projection(投影)〜
- Chapter7-1〜Cubeを作る〜
- Chapter7-2〜Texture〜
- Java 3DGame LWJGL Retry Lv1 〜動かして理解する〜
- Java 3DGame LWJGL Retry Lv2 〜動かして理解する2〜
- Java 3DGame LWJGL Retry Lv3 Texture〜動かして理解する3〜「負け越し」
- Java 3DGame LWJGL Retry Lv4 デバック〜動かして理解する4〜「黒星」
- Java 3DGame LWJGL Retry Lv5 遊んでみる〜動かして理解する5〜「引分け」
- Java 3DGame LWJGL Retry Lv6 遊んでみる2〜動かして理解する6〜「白星」
- ava 3DGame LWJGL Retry Lv7 遊んでみる3〜全部テクスチャにする〜
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連携~
JavaFX→LWJGL 〜ゲーム作成準備〜
Javaでのゲーム作成をするのに使用するフレームワークがLWJGLなので表題を変更します。
前回は、ゲーム作成をするのに仕様を考えました。
大雑把にどんなものを作るか?が決まったので早速作成!と行きたいのですが
LWJGLの使い方がわからないので
こいつの使い方を学びます。
先ずはチュートリアルを参考に実装を行います。
プログラム初心者の方にもわかる様に
基本からわかる様に頑張ります(笑)
まずは、環境構築を行います。
Javaを初めてやる人もゲームを作ろうという人もまずは環境構築
を行います。(Javaの基礎も一緒にやります。)
LWJGL 開発環境セットアップ〜Maven使用〜 – PGボックス
※Eclipseを使用すると設定が面倒なのでIntelliJ IDEAを使用します。
やろうとしていることは以下の通りです。
1. とりあえずゲーム作成の手順を学びます。
2. ゲーム作成を行うためにJavaの基礎が必要になる。
3. ここでJavaの基礎をやります。
使用するIDE(開発ツール)はEclipseを想定しております。
当然、NetBeansなど他のツールでも構いません。
セットアップではEclipseの場合のみを記載しますのでご了承ください。
<要点>
・ゲーム作成はLWJGLの学習を進めながらやっていきます。
・Javaの基礎は別個にやります
<手順>
1. ゲーム作成用のプロジェクトを作成してゲーム学習を開始
→ パッケージを切るときに「prac.lwjgl」のように作る
2. ゲームの作成時にJavaでわからないところが出てきたら基礎学習用に
→パッケージを「prac.basic」のように作る
※同じプロジェクト内に作成しておくとゲームで作った処理を使えます。
上のようにパッケージをゲーム用とJava基礎用に分けて作成します。
作って、理解して、動かして…
使えるものがあれば使うってな感じで
とりあえず「Javaを理解科したい」という人は下のリンクを参考にどうぞ
開発環境の構築: Java 開発ツールのインストール – PGボックス
初めのプログラム:Java Hello World はじめのプログラム 〜 Step1-1〜 – PGボックス
次回からLWJGLの学習を始めます。(基礎部分も学習します)
関連ページ一覧
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連携~
LWJGL
- Chapter1[外枠の表示のみ]
- Chapter2-1〜クラスの構成〜
- Chapter2-2〜インターフェースの使い方と詳細〜
- Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
- Chapter2-4〜Windowクラス(サンプルクラス)〜
- Chapter3〜描画処理を読む〜
- Chapter4〜シェーダについて〜
- Chapter5-1〜レンダリングについて〜
- Chapter5-2〜レンダリング詳細〜
- Chapter6〜Projection(投影)〜
- Chapter7-1〜Cubeを作る〜
- Chapter7-2〜Texture〜
- Java 3DGame LWJGL Retry Lv1 〜動かして理解する〜
- Java 3DGame LWJGL Retry Lv2 〜動かして理解する2〜
- Java 3DGame LWJGL Retry Lv3 Texture〜動かして理解する3〜「負け越し」
- Java 3DGame LWJGL Retry Lv4 デバック〜動かして理解する4〜「黒星」
- Java 3DGame LWJGL Retry Lv5 遊んでみる〜動かして理解する5〜「引分け」
- Java 3DGame LWJGL Retry Lv6 遊んでみる2〜動かして理解する6〜「白星」
- ava 3DGame LWJGL Retry Lv7 遊んでみる3〜全部テクスチャにする〜
JavaFx ゲームを作る 〜まずは仕様を考える〜
Javaとかそれ以前に、「どんなものを作るの?」を決めないと
何も始まりません。
というわけで、まずはテンプレート的なゲームを作成しようと思います。
<<追伸>>
Javaで作成したアプリはiPhoneアプリとして使用するつもりです。
Java→iPhoneアプリはRoboVMで作成可能です(2018/5/6)
https://www.google.co.jp/amp/s/amp.reddit.com/r/programming/comments/7ji3h4/compile_ios_projects_on_windows_and_linux_robovm/
タイトルは「スーパー勇者プラザーズ」にしようと思っております(笑)
ポイントとしては以下の通りです。
・ゲームの基本的(ベースになる操作を網羅する様)なものとして
・アクションゲームがあげられると思います。
・イメージとしてはあのスーパー兄弟だと思いますので。。。
そして、ほとんどの人が作成したいとおもうのがRPGです。
(→自分の周りの人間50人に聞きました) ※もう少し少ないかもです(笑)
というわけで上記の様なタイトルになりました。
これで仕様を考えるのですが、以下の項目を決定することにします。
仕様
・キャラクター(主人公?)の表示を行う
・そして、キャラクターの操作を行える様にする
->アイドリング(待機状態での動き)
->歩行 ※走るのは考え中
->アイテムを拾う
->アイテムを使用する(飲む、食べる、投げる、掲げる、地面に置く)
->攻撃(アタック)
->防御(シールド)
->ジャンプ
->魔法を使用する
・スタートする
・ゴールする
<ここからは検討中>
・装備の選択
・アイテム管理(道具袋)
実装に関しては以下を使います
使用プログラム言語(ライブラリ) -> Java, LWJGL
この仕様を満たす様に作成していこうと思います。
が「仕様変更」はつきもの。。。なるべく仕様変更があってもソースの修正を
行わなくても良い様に作成して行きたいと思います。
LWJGLダウンロード
LWJGL - Lightweight Java Game Library
環境構築
Setting Up LWJGL with Eclipse - LWJGL
という人は下のページを参考にしてみて下さい
Java Game作成 – PGボックス(LWJGLのインストール手順)
Java Hello World はじめのプログラム 〜 Step1-1〜 – PGボックス
開発環境の作成はこちら
関連ページ一覧
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連携~
LWJGL
- Chapter1[外枠の表示のみ]
- Chapter2-1〜クラスの構成〜
- Chapter2-2〜インターフェースの使い方と詳細〜
- Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
- Chapter2-4〜Windowクラス(サンプルクラス)〜
- Chapter3〜描画処理を読む〜
- Chapter4〜シェーダについて〜
- Chapter5-1〜レンダリングについて〜
- Chapter5-2〜レンダリング詳細〜
- Chapter6〜Projection(投影)〜
- Chapter7-1〜Cubeを作る〜
- Chapter7-2〜Texture〜
- Java 3DGame LWJGL Retry Lv1 〜動かして理解する〜
- Java 3DGame LWJGL Retry Lv2 〜動かして理解する2〜
- Java 3DGame LWJGL Retry Lv3 Texture〜動かして理解する3〜「負け越し」
- Java 3DGame LWJGL Retry Lv4 デバック〜動かして理解する4〜「黒星」
- Java 3DGame LWJGL Retry Lv5 遊んでみる〜動かして理解する5〜「引分け」
- Java 3DGame LWJGL Retry Lv6 遊んでみる2〜動かして理解する6〜「白星」
- ava 3DGame LWJGL Retry Lv7 遊んでみる3〜全部テクスチャにする〜
JavaFx 開発チュートリアル 〜3: 入力イベントを操る(実装編)〜
前回、初めに実装したJavaFxのソースを眺めました。
そして、今回はイベント処理の実装を行います。
また前回と同じソースです。ダウンロードはここ
javaソース↓
public class Lesson1 extends Application {
/**
* はじめのプログラムは「Hello World」<br/>
* どの言語でもやるのです。<br/>
* 主な用途としては、プログラムの疎通確認をやります。<br/>
* ※プログラムの実行環境を作成した後にプログラムが走るか確認<br/>
*
* @param args: プログラム引数
*/
public static void main(String args) {
launch(args);
}
/**
* Lesson1. JavaFxでのはじめの一歩<br/>
* Getting started JavaFx on Tutorial<br/>
* この文章がさ記載されている部分をJavaDocコメントと言います。<br/>
*
* @see https://docs.oracle.com/javafx/2/get_started/hello_world.htm
* @author Takunoji
*/
public class Lesson1 extends Application {
/**
* はじめのプログラムは「Hello World」<br/>
* どの言語でもやるのです。<br/>
* 主な用途としては、プログラムの疎通確認をやります。<br/>
* ※プログラムの実行環境を作成した後にプログラムが走るか確認<br/>
*
* @param args: プログラム引数
*/
public static void main(String args) {
launch(args);
}
/**
* プログラミング学習の基本は「写経」です。<br/>
* 意味はわからなくても「とりあえず」自分でコードを描いてください。<br/>
* インポートするのはjavafx.XXXを選択します。(IDEを使用している場合)
*/
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World");
Button btn = new Button();
btn.setText("Say Hello World!");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 200));
primaryStage.show();
}
}
タイトルに入力イベントと記載しましたが「入力イベント」という言葉は
範囲が広いのでボタン押下(ボタンクリック入力)のイベント処理に着目します。
上のソースでは、「btn.setOnAction(new EventHandler<ActionEvent>() {」
で始まる行がイベント処理の実装部分です。
作成したボタンに「setOnAction()」でイベント処理を設定します。
new クラス名() {無名(のインナー)クラスを定義}
赤い部分がイベントの処理部分になります。
EventHandlerはJavaFxのフレームワークで定義されているインターフェースで
インターフェースの実態部分を実装します。→なので必要な関数をオーバーライドします。
ーーーーーーーーーーーーー
@Orverride
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
ーーーーーーーーーーーーー
ボタン押下時にコンソールへ文字列「Hello World」を出力します。
「このコンソールへ出力する」は「 標準出力へ出力する」とも言います。
標準入力→InputStream
標準出力→OutputSream
結論からいうと
上のメソッドを実装すればボタンのアクションはコントロールできるということです。
そのほかのコンポーネンントはそれぞれに「アクション」「イベント」に対応するメソッドがあるので、そいつを「オーバーライド」してやればOKということです。
これ以上は、実装してみないとわからない部分なので是非自分で「オリジナル画面」を作成してみてください。
自分は、現在「JavaFx制のコマンドプロンプト」を作成中です。
でわでわJavaFxを楽しめることを祈っています。
関連ページ一覧
関連ページ一覧
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連携~
LWJGL
- Chapter1[外枠の表示のみ]
- Chapter2-1〜クラスの構成〜
- Chapter2-2〜インターフェースの使い方と詳細〜
- Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
- Chapter2-4〜Windowクラス(サンプルクラス)〜
- Chapter3〜描画処理を読む〜
- Chapter4〜シェーダについて〜
- Chapter5-1〜レンダリングについて〜
- Chapter5-2〜レンダリング詳細〜
- Chapter6〜Projection(投影)〜
- Chapter7-1〜Cubeを作る〜
- Chapter7-2〜Texture〜
- Java 3DGame LWJGL Retry Lv1 〜動かして理解する〜
- Java 3DGame LWJGL Retry Lv2 〜動かして理解する2〜
- Java 3DGame LWJGL Retry Lv3 Texture〜動かして理解する3〜「負け越し」
- Java 3DGame LWJGL Retry Lv4 デバック〜動かして理解する4〜「黒星」
- Java 3DGame LWJGL Retry Lv5 遊んでみる〜動かして理解する5〜「引分け」
- Java 3DGame LWJGL Retry Lv6 遊んでみる2〜動かして理解する6〜「白星」
- ava 3DGame LWJGL Retry Lv7 遊んでみる3〜全部テクスチャにする〜
JavaFx 開発チュートリアル 〜2: 入力イベントを操る(前振りのみ)〜
前回「Hello JavaFx」をやりました。
なので、今回は入力に対する処理を実装してみようと思います。
前回のソースから ソースはここからダウンロードできます。
ダウンロードはここ
「javaの書き方とか、わからんちゃ」という人は下の記事を参考にしてみてください。
http://takunoji.minim.ne.jp/wp/2018/05/02/java-hello-world-はじめのプログラム-〜-step1-1〜/
練習用のプログラムもダウンロード出来る様になっています。(eclipse)
javaソース↓
public class Lesson1 extends Application {
/**
* はじめのプログラムは「Hello World」<br/>
* どの言語でもやるのです。<br/>
* 主な用途としては、プログラムの疎通確認をやります。<br/>
* ※プログラムの実行環境を作成した後にプログラムが走るか確認<br/>
*
* @param args: プログラム引数
*/
public static void main(String args) {
launch(args);
}
/**
* Lesson1. JavaFxでのはじめの一歩<br/>
* Getting started JavaFx on Tutorial<br/>
* この文章がさ記載されている部分をJavaDocコメントと言います。<br/>
*
* @see https://docs.oracle.com/javafx/2/get_started/hello_world.htm
* @author Takunoji
*/
public class Lesson1 extends Application {
/**
* はじめのプログラムは「Hello World」<br/>
* どの言語でもやるのです。<br/>
* 主な用途としては、プログラムの疎通確認をやります。<br/>
* ※プログラムの実行環境を作成した後にプログラムが走るか確認<br/>
*
* @param args: プログラム引数
*/
public static void main(String args) {
launch(args);
}
/**
* プログラミング学習の基本は「写経」です。<br/>
* 意味はわからなくても「とりあえず」自分でコードを描いてください。<br/>
* インポートするのはjavafx.XXXを選択します。(IDEを使用している場合)
*/
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World");
Button btn = new Button();
btn.setText("Say Hello World!");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 200));
primaryStage.show();
}
}
※「描いて」→「書いて」
前回は、とりあえずで写経をしたので内容についてふれませんでした。
今回は、内容からいきます。
1.毎度おなじみ「メインメソッド」です。
public static void main(String[] args) {
...処理
}
Javaを起動するときは必ずこれが動きます。※サーバーとかは別の場所で起動します。
初めて、Javaを学ぶ人は、頭ごなしに覚えてしまっても無駄になりません。
筆者は今でも覚えております。→昔、呪文のように唱えて覚えました(笑)
ちなみに、処理内で実行している「launch(args)」は親クラスのメソッドです。
【追申】
子供クラス名 extends 親クラス名 {
private データ型 フィールド変数;
private String fieldClassName:
public static final String CONSTANT_NAME;
private void methodName (String parameter) {
プライベートメソッドの処理
}
public 返却値 メソッド名(データ型 引数名) {
パブリックメソッドの処理
}
}
・メソッド = 関数 = 何かの処理を行う(記載する)もの
・プライベートメソッドは、クラスの外から呼ぶことができない
・パブリックメソッドはクラスの外から呼ぶことができる
・CONSTANT = 定数(この値で変わることがない)
2.startメソッド
親クラス(javafx.application.Applicationを継承している)のメソッドをオーバーライドしている
オーバーライドすると、親クラスからこクラスの「startメソッド」を起動することができる
なので、フレームワークを使用するときによく「〜をオーバーライドして〜」なんて会話がある。詳細に関しては、後々に...
そして、ボタンを作成し、ボタンを押下したときに処理が走る
「アクション」をセットしています。
btn.setOnAction()の部分です。そして左の処理は、下のように書き換えが可能です。
btn.setOnAction(keyEvent -> { Systme.out.println("Hello World"); };
今、流行りなのか、常識なのかわかりませんが、ラムダ式というやつですね。
そして、今回は、このsetOnActionのバリエーションをやろうと思ったのですが、
ここまでにしときましょう(笑)
あ、ちなみに次回は、以下のような画面が表示されるものを作ろうと思います。
テキストエリアに文字を入力してそれに対するイベント処理を行う。。。
こんな感じです。コンソールに入力した文字が表示されています。
でわでわ。。。
関連ページ一覧
JavaFXでハローワールド〜OpenCVまで
- 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〜
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連携~
JavaFx 開発チュートリアル 〜1: Hello JavaFx〜
前回、JavaMeの開発環境の構築を試みましたが、敢え無く断念(今日のところは)
そして、並行して進めたいのがJavaFxを使用する事です。
JavaFxはJavaSE(JDKをダウンロードしたらついてます。)に梱包されています。
そして、画面を作って起動できる(JavaMeで起動すればラズパイなどでも起動可能)
使用するものは「JavaFX Embedded SDK」になるようですが。。。
詳細はこちらのサイトにあります。JavaFXPorts
とりあえず、デプロイする方法が違うという認識です。
そして、JavaFxを始めるのには、JDK1.8以上のものをダウンロードしてくれば
それでOKという事です。
開発ツールのインストール方法は下を参照してください
Java 開発ツールのインストール – PGボックス
でわでわ、コーディングと行きますか?
参考にするサイトは以下になります。
ついでなので、Javaの勉強を始めようと思っている人にも
Javaをある程度学習した人にオススメしています。
初めてやる人は、画面上に色々と表示してみましょう。
ある程度学習した人は、次のステップに行きましょう。
→ある程度とは、プログラムの基礎文法を理解して、List, Mapなどの扱いができる程度
まずは、毎度おなじみ「写経」です。
読む→書く→動かす→理解する→新しいことをやる。。。
とループする感じです。
作成した、コードは以下になります。ダウンロードはここ
package zst.prac.tutorial;
import javafx.event.EventHandler;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* Lesson1. JavaFxでのはじめの一歩<br/>
* Getting started JavaFx on Tutorial<br/>
* この文章がさ記載されている部分をJavaDocコメントと言います。<br/>
*
* @see https://docs.oracle.com/javafx/2/get_started/hello_world.htm
* @author Takunoji
*/
public class Lesson1 extends Application {
/**
* はじめのプログラムは「Hello World」<br/>
* どの言語でもやるのです。<br/>
* 主な用途としては、プログラムの疎通確認をやります。<br/>
* ※プログラムの実行環境を作成した後にプログラムが走るか確認<br/>
*
* @param args: プログラム引数
*/
public static void main(String args) {
launch(args);
}
/**
* プログラミング学習の基本は「写経」です。<br/>
* 意味はわからなくても「とりあえず」自分でコードを描いてください。<br/>
* インポートするのはjavafx.XXXを選択します。(IDEを使用している場合)
*/
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World");
Button btn = new Button();
btn.setText("Say Hello World!");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 200));
primaryStage.show();
}
}
いつものようにタブが消えているので上のリンクからダウンロードしてください
実行結果は、以下になります。
ボタンを押下した後、コンソールに出力されるのでEclipseの方を
みてみてください。
初めての人は細かいことは置いておき。。。以下の3つ覚えてください。
1. プログラムは必ず上から下に流れる
2. Javaの場合は、必ず「mainメソッドが動く」
3. メインメソッドは以下のように書く(丸暗記でも良い)
※こう書かなければメインメソッドではありません。(笑)
public static void main(String args) {
プログラムの処理
}
ある程度理解している人は、クラスの繋がりを理解しましょう。
※ Javaの文法を理解している程度の人
今回作成したクラスは、「Lesson1」です。
このクラスは、javafx.application.Applicationクラスを継承しています。
そして、親クラスのメソッド「startメソッド」をオーバーライドしています。
とりあえず、赤字の単語を覚えてください。
写経したら、プログラムの内容を書き換えて動かしてみてください。
ファイルが元に戻せなくなったら上記のリンクからダウンロードすれば良いです。
でわでわ、今日のとろころはここでおしまいです。
関連ページ一覧
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 〜テストスイートの作り方〜
Java Discord
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
- Java Discord セットアップ〜Hello Discord〜
- Java Discord ピンポン〜Discordプログラム〜
- Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜
IntelliJ IDEA
- IntelliJ IDEA 環境構築 〜インストールと起動〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
- IntelliJ IDEA 使い方〜Git接続 Java起動 etc〜
- IntelliJ IDEA Jarファイルを作る
- IntelliJ IDEA 使い方〜Maven Projectの作成〜
- IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
- IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
- IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
Java OpenGL javaFxでの実装
それで色々と調べたところ、JOGL + JavaFXは可能であることがわかった。
ただし、ちょいとクラスの使い方がスタンダードに行かないみたいだ。
一応画面起動ができました。そのコードです。
※画面の中身は何も実装しておりません。
package jp.zs.jogl.main;
import javafx.embed.swing.SwingNode;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.SwingUtilities;
import javafx.scene.layout.StackPane;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
@SuppressWarnings("restriction")
public class Game extends Application implements GLEventListener {
public static void main(String[] args) {
launch("JavaFX");
}
private void setUpStage(Stage stage, GLCanvas canvas) {
}
private void createAndSetSwingContent(SwingNode node) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
//node.setContent( );
}
});
}
@Override
public void start(Stage stage) {
try {
// System.loadLibrary("jogl");
// System.out.println("Hello JOGL");
// 表示するためのJavaFXクラス
final SwingNode swing = new SwingNode();
createAndSetSwingContent(swing);
// 表示するためのJoglクラス(部品)
final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities caps = new GLCapabilities(profile);
final GLCanvas glcanvas = new GLCanvas(caps);
glcanvas.setSize(400, 400);
StackPane pane = new StackPane();
stage.setScene(new Scene(pane, 400, 400));
stage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void display(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
}
@Override
public void dispose(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
}
@Override
public void init(GLAutoDrawable arg0) {
// TODO Auto-generated method stub
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
}
}