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

「プログラミングのススメ」と学習した結果身につくもの、アイディアを実現するために何をしたら良いか?の答えが出せるようになります。

ND4Jを使って、行列をコントロール=マッピングをプログラムで行う

イントロダクション

ゲームなどで、マッピングを行うのに「行列」が使えると思った次第です。

実際には、[u16プログラミングコンテスト](http://www.procon-asahikawa.org)で使用しているゲームで使用しました。

結果的には、マップを描いて終わりにしてしまったのですが、良い刺激になりました。[ソースはGit](https://github.com/ZenryokuService/PracticeJava1/blob/master/PracticeJava1/src/jp/zenryoku/sample/u16/U16ProconClient.java)にアップしています。

マップ作成

自分の操作するキャラの周囲を3x3マスで表現する時、以下の様なルールを作ります。

  • 0:何もないマス
  • 1:敵キャラがいるマス
  • 2:宝箱があるマス
  • 3...

この様な形でマスの種類を10進数(通常の数字)で表現したら。

0,0,1

2,0,0

0,0,0

の様な形になります。これは右上に敵キャラ、左に宝箱、他は何もなし。

のマップを表現するデータになります。

そして、距離などを計算で求めることが出来ます。計算方法は頭をひねってやればすぐにわかると思うので割愛します。ちなみに、https://zenryokuservice.com/wp/2019/02/14/javafx-nd4j%E3%80%9C%E6%95%B0%E5%AD%A6%E3%81%B8%E3%81%AE%E6%8C%91%E6%88%A61%EF%BC%9And4j%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%80%9C/ND4Jを使うと各値の数値を加減乗除できるので、色んなゲームに使えるのではないでしょうかないでしょうか?

ちなみに、[ND4J](https://deeplearning4j.org/docs/latest/nd4j-overview)は、行列計算などのフレームワークで、流行りのディープラーニング系のプログラムで使用すると便利です。

自分としては、機械学習からしてよくわからなかったので、統計学の基本から学習中です。因みに、[OpenCv(画像処理)](http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_ml/py_knn/py_knn_understanding/py_knn_understanding.html)でも使うので画像解析とか興味のある人は是非!

<del>自分は絶賛戦闘中(笑)</del>

 

基本的なことはやってみました。

* [JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜](https://zenryokuservice.com/wp/2019/02/14/javafx-nd4j%e3%80%9c%e6%95%b0%e5%ad%a6%e3%81%b8%e3%81%ae%e6%8c%91%e6%88%a61%ef%bc%9and4j%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%80%9c/)
* [JavaFX + ND4J〜数学への挑戦2: 行列の計算〜](https://zenryokuservice.com/wp/2019/02/15/javafx-nd4j%e3%80%9c%e6%95%b0%e5%ad%a6%e3%81%b8%e3%81%ae%e6%8c%91%e6%88%a62-%e8%a1%8c%e5%88%97%e3%81%ae%e8%a8%88%e7%ae%97%e3%80%9c/)
* [Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜](https://zenryokuservice.com/wp/2019/02/19/java-nd4j-%e3%80%9c%e6%95%b0%e5%ad%a6%e3%81%b8%e3%81%ae%e6%8c%91%e6%88%a63-%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e9%85%8d%e5%88%97%e3%81%ae%e4%bd%9c%e6%88%90%e6%96%b9%e6%b3%95%e3%80%9c/)
* [ND4J ベクトル生成〜ワンポイントレッスン的な〜](https://zenryokuservice.com/wp/2019/02/19/nd4j-%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e7%94%9f%e6%88%90%e3%80%9c%e3%83%af%e3%83%b3%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e3%83%ac%e3%83%83%e3%82%b9%e3%83%b3%e7%9a%84%e3%81%aa%e3%80%9c/)
* [JavaFX + ND4J 〜数学への挑戦:5グラフを描く〜](https://zenryokuservice.com/wp/2019/02/20/javafx-nd4j-%e3%80%9c%e6%95%b0%e5%ad%a6%e3%81%b8%e3%81%ae%e6%8c%91%e6%88%a6%ef%bc%9a%ef%bc%95%e3%82%b0%e3%83%a9%e3%83%95%e3%82%92%e6%8f%8f%e3%81%8f%e3%80%9c/)

### やってみた感想

行列を使用して、行列データの生成〜四則計算をAPI(メソッドなど)でやってくれるので細かい計算などは不要でした。

あとは、この計算方法を利用して「何をするか?」がキモになります。

やっぱり、根本的な部分を理解しないといけないようです。

 

でわでわ。。。