Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

Java OpenGL 〜家計簿アプリを作る〜

イントロダクション

今まで、Git BookのLWJGLを学習して来ました。(ここ2週間ほど。。。)

結局、レンダリング(描画)が理解出来ずやり直す事にしました。

ただ、やり直すだけでは勿体ないので家計簿アプリを作りながら理解します。

<写経して動いたもの>

https://mobile.twitter.com/java_takunoji/status/1057586067182804994

 

家計簿アプリ開発

描画処理で、大まかな流れは理解出来たが、具体的な処理をどうするか?がわからなかったので、描画(rendering)に戻ってやり直します。

アプリの仕様について

<L v1:データの表示>

3Dグラフを使って1ヶ月の支出や収入を一覧する機能を作ります。

見慣れた2Dグラフだと、表示出来る情報が少ないので3Dグラフを使う事にしました。

 

<Lv2:カテゴリ切り替えと登録>

初期表示では、単純に支出額のグラフを表示しますが、「必要な支出」と「不要な支出」のカテゴリ分けをしたい場合があると思います。そのための「カテゴリ」を編集する機能を作ります

 

<Lv3:レシートや領収書の入力>

はっきり言って、この機能が面倒なので家計簿を付けないという人が多いと思います。だからレシートや領収書を読み込む自動入力にしようと思います。

最近流行りの機械学習を使います。

 

環境構築〜画面表示

http://zenryokuservice.com/wp/2018/11/01/eclipse-アプリ作成-lv1〜家計簿を作る準備〜/

描画の時に指定する頂点の動かし方

http://zenryokuservice.com/wp/2018/11/03/eclipse-アプリ作成-lv2〜家計簿を作る土台作り〜/

 

 

Java 3DGame 家計簿アプリを作る

イントロダクション

3DGame作成フレームワークLWJGLの学習を始めて、ある程度進みました。

でも、読んである程度理解出来るのもここまで…

http://zenryokuservice.com/wp/2018/10/31/java-3dgame-lwjgl-gitbook-chapter8〜camera〜/

 

実際は読むだけで、表面的にしか理解していない…話をするだけなら出来るけど、肝心カナメの部分が分からんのじゃ話ならなん…

そんなわけで、読んでダメなら動かしてみれば良いので、アプリを作りながら理解します。

家計簿アプリ開発準備

画面上はグラフを表示、カテゴリの追加と表示、読み込みボタンがあるだけのシンプルなものを作ります。

ポイントは、上のGitBookで学習したとこより戻り、モデル表示〜やり直します。

開発

http://zenryokuservice.com/wp/2018/11/01/eclipse-アプリ作成-lv1〜家計簿を作る準備〜/

 

プロジェクト作成

http://zenryokuservice.com/wp/2018/11/01/eclipse-meven-開発手順〜プロジェクトの作成〜/

 

Java Game 〜作り始めるために〜

イントロダクション

「ゲーム作りたい」という人は多いと思います。自分もその一人です。そしてゲームはまだ出来ていません…

自分が作ろうとしているものは、規模がでかくなってしまったので…

じゃー、どーするか?

でかくなってしまった計画は分解して小さくすれば良いと思いました。

イメージはこんな感じです。

f:id:Takunoji:20181028003917p:image

早い話が、ツリー状にブレークするという事です。そうすればブレークした各項目を潰して行けばゴールに辿り着けます。

具体的には、目的を実現するために何をしたら良いか?を列挙します。そーすると挙げたものが

今そんな感じでやってます。

ちなみに、上のイメージは下のアプリを使いました。

https://www.google.co.jp/amp/s/m.japan.cnet.com/amp/story/35064300/

 

関連ページ一覧

IntelliJ IDEA
  1. IntelliJ IDEA 環境構築 〜インストールと起動〜
  2. IntelliJ IDEA GitGitリポジトリからクローン〜
  3. IntelliJ IDEA 使い方〜Git接続 Java起動 etc
  4. IntelliJ IDEA Jarファイルを作る
  5. IntelliJ IDEA 使い方〜Maven Projectの作成〜
  6. IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
  7. IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
  8. IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
  9. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜

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 4Boolean
  5. Java Basic Level 5If 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 9Training 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 〜テストスイートの作り方〜

 

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 〜テストスイートの作り方〜

 

 

Java Game LWJGL〜その2キー入力〜

イントロダクション

前回までは開発環境のセットアップとか起動確認をやりました。

zenryokuservice.com

 

 

 

ここ最近は写経したり、3Dモデルの作り方など、理解するためのアプローチ方法を考えていましたが良い方法がありました。

基本を理解するのが一番早い

という訳で、下のサイトに良いものがありました。

Git Bookです。

コードです

今回やった事

画面を初期化して、十字キーで背景色を変更する。アプリの実装です。

段々と使用するクラスが増えてきます。

オブジェクト指向の考え方を理解するのにも使えると思います。

インターフェースを実装しているので、ポリモーフィズム第一弾といったところでしょうか(笑)

  1. Chapter2-2〜インターフェースの使い方と詳細〜

 

ちなみにLWJGLの基本部分のみを一通りやりました。

  1. Chapter1[外枠の表示のみ]
  2. Chapter2-1〜クラスの構成〜
  3. Chapter2-2〜インターフェースの使い方と詳細〜
  4. Chapter2-3〜GameEngineクラス(サンプルクラス)〜/li>
  5. Chapter2-4〜Windowクラス(サンプルクラス)〜
  6. Chapter3〜描画処理を読む〜
  7. Chapter4〜シェーダについて〜
  8. Chapter5-1レンダリングについて〜
  9. Chapter5-2レンダリング詳細〜
  10. Chapter6〜Projection(投影)〜
  11. Chapter7-1〜Cubeを作る〜
  12. Chapter7-2〜Texture〜

 

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 〜テストスイートの作り方〜
 

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ゲーム開発用フレームワークLWJGLのセットアップを行いました。

目的とやった事

3Dチェスゲームを開発します。(今の所気持ちだけになっています。。。)

 →家計簿アプリ変更 2018/12/01

そのための、セットアップです。オープンGLを使うので、様々な目的に対応できると思います。

今回は、LWJGLでOpenGLの機能を使い3D描画を理解しようと言うのが目下の目標になります。

こいつを理解できたら、Blenderなどの3Dモデリングツールも使い方がわかります。→同じOpenGLを使用しているからです。

 

<LWJGLのセットアップ方法>

PGボックス〜ゲームとプロジェクトとプログラミング基礎〜

 

<サイトマップ>

PGボックス〜ゲームとプロジェクトとプログラミング基礎〜

 

Java 3D JOGL〜JavaでOpenGL〜

イントロダクション

JavaOpenGLを始めます。今迄ラズパイで手こずってましたがなんとか先が見えたので次に進みます。

描画の実装はクラスを使って以下の手順を行います。

  1. 描画の土台(フレーム)クラスをインスタンス化→これで土台部分が作成されます。
  2. フレーム(土台)に描画するもの(コンポーネント)を追加
  3. 2と3の順番はどちらでも良いですが、コンポーネントの描画を行います
  4. フレーム(JFrame)の終了処理設定
  5. 表示(setVisible(true))を行う

 

JOGLとは

JavaでのOpenGLライブラリです。

まずはセットアップ

必要なファイル(JARファイルなど)をダウンロードして、ビルドパスに繋ぐだけです。

http://zenryokuservice.com/wp/2018/10/07/setup-opengl-with-java〜joglを使う準備〜/

 

ポイント

今回の実装では、 Swingを使用してフレーム(外枠)を作成してから内側(コンポーネント)を描く実装になっています。

<登場人物>

今回はGL2には何もしていませんのでGLCanvasの意味がよくわかりませんが土台(フレーム)の上に乗せるキャンパスだと思って頂ければオッケーです。

細かいところは今後やりますのでフレームとキャンパスがあって表示処理をしてるんだなって思って頂ければ大丈夫です。

関連ページ

http://zenryokuservice.com/wp/2018/10/08/jogl-opengl-in-java-lv1%25e3%2580%259cjogl%25e3%2581%25a7%25e3%2583%258f%25e3%2583%25ad%25e3%2583%25bc%25e3%2583%25af%25e3%2583%25bc%25e3%2583%25ab%25e3%2583%2589%25e3%2580%259c/

http://zenryokuservice.com/wp/2018/10/07/start-opengl-in-java%25e3%2580%259cjogl%25e3%2581%25a7%25ef%25bc%2593d%25e3%2583%25a2%25e3%2583%2587%25e3%2583%25aa%25e3%2583%25b3%25e3%2582%25b0%25ef%25bc%259f%25e3%2580%259c/

http://zenryokuservice.com/wp/2018/10/07/setup-opengl-with-java%25e3%2580%259cjogl%25e3%2582%2592%25e4%25bd%25bf%25e3%2581%2586%25e6%25ba%2596%25e5%2582%2599%25e3%2580%259c/

http://zenryokuservice.com/wp/2018/10/07/memos-java-opengl%25e3%2580%259c%25e3%2583%25a1%25e3%2583%25a2jogl%25e9%2596%258b%25e7%2599%25ba%25e3%2583%25a1%25e3%2583%25a2%25e3%2580%259c/

 

ラズパイを自前アプリマシンにする

イントロダクション

表題の通りラズパイを自前アプリマシンにするために必要な事と手順です。

まだ、作業中です。

想定した環境→失敗

  1. ラズパイにCUI(ノンデスクトップ)環境をインストール
  2. Javaで作成したアプリ(JARファイル)をラズパイにSSHで転送
  3. ラズパイJDKでアプリを起動

という順序でやったのですが、動きませんでした。

戦いの、履歴はこちら

http://zenryokuservice.com/wp/2018/09/09/java-basic-swing-〜ラズパイの画面作成-〜/

 

そして、以下の問題がある事を発見しました。

動かない理由

  1. 使用しているJVM(JDK)で作った(Macで作成したJARファイル)はラズパイにインストールしているJVM(JDK)と違うものだった
  2. Swingで使うテクノロジーAWTはXサーバー(GUIサーバ)が起動している必要がある

対応(途中まで実施)

ラズパイのJDKを切り替える

http://zenryokuservice.com/wp/2018/09/29/java-settingup-rpi-~ラズパイのjvmを切り替える~/

Xサーバ(XFCE4)をインストール

改めてJARを配置して起動

これで行けるはず

 

ラズパイ(RPi)関連

IntelliJ IDEA

  1. IntelliJ IDEA 環境構築 〜インストールと起動〜
  2. IntelliJ IDEA GitGitリポジトリからクローン〜
  3. IntelliJ IDEA 使い方〜Git接続 Java起動 etc
  4. IntelliJ IDEA Jarファイルを作る
  5. IntelliJ IDEA 使い方〜Maven Projectの作成〜
  6. IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
  7. IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
  8. IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
  9. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜

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 4Boolean
  5. Java Basic Level 5If 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 9Training 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 〜テストスイートの作り方〜

 

 

Java Basic Summary 〜Java文法、初期段階のまとめ〜

イントロダクション

以前、自分が作成したJavaに関する文法や、予約語などつい忘れがちなものをまとめたページがあったのでご紹介いたします。ど忘れなどした時、これからjavaを学ぼうという人向けになっていると思います。

Intoroduction

this is I wrote about java basics about grammers and reserved word.

I think it good for remember basically java grammers etc...

まとめのページ(Summary of Java Basic)

  1. ハローワールド: コンソール表示
  2. 四則計算: 計算の演算子
  3. 文字列クラス: 文字を使う
  4. Boolean: 論理値の使い方
  5. If文の使い方

 

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
 

Java Network 〜socketサーバー〜

イントロダクション

今まで画面を使って色々とやろうと思っていましたが、ラズパイ で画面を使うと重いので…画面無しでやろうと考えました。

何をやるのか?

Javaでサーバー関連のプログラムと言うとウェブアプリが思い浮かぶのですが…極小サイズsocketサーバーでやれば大きくなりませんし、パフォーマンスも日常利用できるレベルで出せると思います。

余談

Javaは元々データ処理(画面なし)の方が得意なプログラムらしいです。画面表示もできるのですがね。

具体的にやる事

段階を踏んでやります。

<第1段階> socketサーバの扱い方理解

  1. socketサーバー(jarファイル)をラズパイ (javaが動くPC)に)配置します。
  2. クライアントsocketを作成します
  3. クライアントから文字を入力してレスポンスを返す事を確認

 

<第2段階>クライアント入力からコマンドを実行する

  1. 第1段階で作成したアプリのサーバ側に受け取った文字(コマンド)に対する処理を追加
  2. 今回はLチカをリモートで実行

Lチカの準備などは以下に記載しました。

www.zenryokuservice.work

 

Javaなどの記事をチラ見で一覧できます>

https://zenryokuservice.com/roadMap.php

 

 

ソケット・アプリ

機会があり、実装してみました。

CHaserServerにソケットクライアントを作り、接続、ゲーム実行という流れで起動しています。動画のURLです。

m.youtube.com

Githubにアップしています。

 

でわでわ。。。

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)