C/C++ Micro:bit(Chibi:bit) 〜オンライン コンパイラ(ワークスペース)の使い方〜

イントロダクション

前回は、Microbitにサンプルプロジェクトをインポートしました。

今度はそれをどのようにして動かすのかを学びます。とりあえずはセットアップがまだ続くようです。

オンラインコンパイラの使い方

プロジェクトのインポートを完了したら下の画面のようにある「コンパイル」をクリックします。

すると「〜HEX」ファイルが出力(ダウンロード)されるのでそれをMirobitにインストールします(HEXファイルを配置します)

※HEXファイルをMicrobitにコピーした時にMicrobitの接続が切れてしまう時があるようです。自分の場合は一度外して再度接続したらプログラムがちゃんと起動しました。

 

Java Tomcat〜Webサーバをインストール〜

イントロダクション

Micro:bitでボタンを押したらWeb画面に何かを表示しようと考えています。

サンプルとして、良いページ(Microbit)があったのでそれを見てマイクロビットを設定しました。

ブラウザを使うなら。。。

仕事でもよく使うWebサーバーを立ててそこにマイクロビットでリクエストを飛ばすようにしようと思います。

これで小規模のアプリでも楽しめそうだ。

そんなわけで、Eclipseを開き。。。

Tomcatプラグインを追加します。

真ん中の猫だか虎だかわからないやつです。

プラグインのインストールが終わったら、Eclipseの再起動が走ります。

Eclipseが起動したら。。。

左のようなアイコンがEclipseの上部にいると思います。これでプラグインのインストールは完了です。

Tomcatサーバーのインストール

Tomcatサーバーのページからダウンロードします。

上のキャプチャにあるtar.gz.ファイルはMacとかリナックス(Zipもいけそうだが…)他はウィンドウズとか書いてあります。ちなみに自分は「Tomcat8」をダウンロードしました。JDK1.8を使用しているからです。

ダウンロードしてから解凍して、適当な場所に解凍します。ここでいう「適当」というのは、「Eclipseから参照しやすい」という意味です。

Eclipseに戻り、Tomcatの設定

「Mac」 Eclipse -> Preference

「Windows」  wIndow -> Preference

上のような画面を開きます。「Tomcat」を選択してダウンロードしたバージョンを選択します。Tomcat8なら。。。

Tomcatホームを設定

Version8を選択

Tomcatホームに先ほど解凍したTomcatのフォルダを指定する

そして「Apply」でおっけー

プロジェクトの作成

プロジェクトエクスプローラ(プロジェクのところ)を右クリックしてプロジェクトの作成を開きます。

Tomcatプロジェクトを指定して、プロジェクト名をつけます。

今回は「MicrobitServlet」と名前をつけました。

上のようなディレクトリ構成(フォルダ構成)ができていると思います。

そして、プロジェクトを右クリックして「Tomcatプロジェクト」->「Tomcatライグラリをプロジェクトのビルドパスに追加」を選択するとビルドパスにTomcatのライブラリが登録されます。

ビルドパスはここね!

解凍したフォルダの「lib」直下にあるJARファイルです。パスとしては「TOMCAT_HOME(Tomcatを解凍したフォルダ)/lib」になります。

ちなみに、OpenCV、JavaFXなど外部のライブラリ(JAR)を使用するときは必ずビルドパスを使用するので、ビルドパスを理解しておくと後が楽です。

「プロジェクトのビルドパスに〜」

「ビルドパスのさしている場所」

ビルドパスを通した後

ちなみにサーブレット(Spring, Playフレームワーク, SeaSaa, Struts」などもservlet-api.jarは使用しています。JavaEEも当然使用しています。

サーバーを動かす

画面上部のの一番左側をクリックしてください

こんな感じでTomcatが起動します。

「情報: Server startup in 26924 ms」のような文言が出力されたら起動完了です。

ブラウザで「localhost:8080」と入力して画面を開いて見ましょう。

サーバー起動確認完了!


関連ページ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. Java Basic JUnit 〜テストスイートの作り方〜
  3. Java Basic インターフェース・抽象クラスの作り方
  4. Java Basic クラスとは〜Step2_1〜

Eclipse アプリ作成 Lv5〜惨敗:CubeにTextureを貼る〜

参照するドキュメント(LWJGL-GitBook)

参照コード:Chapter7-1(Gitです)

イントロダクション

前回、なんとか以下のように各Cube毎に「高さ」を与えてやることができました。

 

しかし、ぱっと見では「よくわからん」のが現状です。なのでこいつを少しはわかりやすくするために「思いやり」を発揮します。

思いやりその1

実は上記のキャプチャは以下のものを示しています(そのつもりです)。

  1. Cubeの「高さ」は家計簿の支出金額を示しています。
  2.  7 x 5のマスは1ヶ月を示しています(マスは1日)。

「全然わかんねぇよ!」と怒られそうですが、現状はそんなもんでしょう。

そんなわけで試行錯誤してみます。

  1. 手前の面に(月)〜(日)をつけてみる
  2. 左の面に1週〜5週までを示す文言を表示する

とりあえずはこれで行ってみようと思います。

テクスチャを貼る

<2018/11/05>  /** 戦闘中 */

今日の目玉です。ですが、今日はテクスチャを退治することができず。。。

以下のようなエラーが出てしまい、解決に至らず。。。と行ったところです。


Warning validating Shader code: Validation Failed: No vertex array object bound.

java.lang.NullPointerException
at de.matthiasmann.twl.utils.PNGDecoder.readFully(PNGDecoder.java:802)
at de.matthiasmann.twl.utils.PNGDecoder.(PNGDecoder.java:112)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.loadTexture(Texture.java:31)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.(Texture.java:14)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at de.matthiasmann.twl.utils.PNGDecoder.readFully(PNGDecoder.java:802)
at de.matthiasmann.twl.utils.PNGDecoder.(PNGDecoder.java:112)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.loadTexture(Texture.java:31)
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Texture.(Texture.java:14)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.ArrayIndexOutOfBoundsException: 7
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.putOnTexturePlate(DummyGame.java:109)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.init(DummyGame.java:81)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.init(GameEngine.java:48)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:36)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Mesh.render(Mesh.java:89)
at zenryokuservice.gui.lwjgl.kakeibo.game.Renderer.render(Renderer.java:70)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.render(DummyGame.java:278)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.render(GameEngine.java:100)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.gameLoop(GameEngine.java:68)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:37)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)
java.lang.NullPointerException
at zenryokuservice.gui.lwjgl.kakeibo.engine.graph.Mesh.cleanUp(Mesh.java:114)
at zenryokuservice.gui.lwjgl.kakeibo.game.DummyGame.cleanup(DummyGame.java:285)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.cleanup(GameEngine.java:77)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.run(GameEngine.java:41)
at java.lang.Thread.run(Thread.java:748)
at zenryokuservice.gui.lwjgl.kakeibo.engine.GameEngine.start(GameEngine.java:27)
at zenryokuservice.gui.lwjgl.kakeibo.game.Main.main(Main.java:13)


<2018/11/06>

今日も敗北を喫してしまいました。

だけど、NullPointerExceptionは解決しました。

原因は、参照しているファイルが間違っていたことです。実装したコード

そして、Meshクラス1つで2種類のMeshクラスを管理しようとしたりと。。。つまづきました。

そして今日は、ここまで来ました。

本当は、Cubeの手前に「月〜日」のテクスチャをつける予定だったのですが。。。なんでこうなったのかが、まるでわかりません。→敗北。。。

修正したコードは、

  1. DummyGame
  2. GameItem
  3. Renderer

上記3クラスです。そして、新たに追加したのが「TexturedMesh」クラスです。

<2018/11/07>

色々試したけど、次の機会にリベンジを決める方向に移行します。。。

中途半端にImageが読み込めているのが悔しいさを倍増させますな。。。「月」の一部が表示されている感じに見えます。

Eclipse Copyright文をつける

Eclipseの環境設定を開く

<Mac>

スクリーンショット 2018-11-01 22.12.36.png

<Windows>

画面上部のメニュー「Window > preference 」

スクリーンショット 2018-11-01 22.10.32.png

Java > Code Style > Code Template > Editで編集

クラスを作成する時下のチェックを忘れずに入れるとテンプレートが反映される

スクリーンショット 2018-11-01 22.20.29.png

 






Eclipse IntelliJ Meven 開発手順〜プロジェクトの作成〜

イントロダクション

家計簿アプリを作成するためにEclipseでプロジェクトの作成を始めます。そのための手順です。

EclipseとIntelliJで記載します。

IntelliJ IDEA

IntellJのインストールはこちら本家のサイトからできます。

Mavenプロジェクトの作成

Maven依存関係の追加

POMファイルを開いてAlt+insertを押下します。
「Add dependency」をクリックしてから、追加する依存関係を選択くすると依存関係が追加できます。追加後はプロジェクトをリロードしましょう。

他にも、ウェブから依存関係をコピーして追加することもできます。

Eclipse

Eclipseのインストールはこちらを見てください(Watch here to install Eclipse)

Mevenを使ったプロジェクト作成手順(To create a Meven Project)

Eclipseを起動します。(Execute Eclipse)

プロジェクトエクスプローラが開きますので、プロジェクトを作成します。

右クリックをしてください。

Now we can see package explorer, and right click on package explorer.

New > Project > Maven > Maven Project


そのまま次へ( Press next button)

JARなどを作成する時はに結局POMファイルでコントロールするのでとりあえずで選んでOKです、今回はquick-starter〜を選択しました。次へを選択

Result of all, we have to change "pom.xml". now I checked "quick-starter???". press next button.

空白部分に作成する名前(プロジェクト名 = パッケージ名)を入れます。

input your project name (= packageName)

プロジェクト作成完了!(Finished!)

関連ページ一覧

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を追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
  4. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜