MATLAB App Designerでアプリ作成その4:ライフゲームを動かしてみる

投稿日:2022年11月21日
最終更新日:2022年11月21日

MATLABのApp Desingerでライフゲームのアプリを動かしてみる

私はライフゲームを眺めるのが結構好きなので、前回のリサジュー図形に続いてApp Designerの勉強を兼ねてライフゲームをApp Designer上で動かしてみたいと思う。

といっても冒頭に書いた通り、MATLABのコードは以下の参考文献のものをほぼそのまま使わせて頂いているm(_ _)m

MATLABでConway’s Game of Lifeを実装してみる. – Qiita

ということで今回は、主にApp Designer上でライフゲームを実行するにあたってやったことをメインにメモしておきたい。

 

開発環境

MATLAB online (MATLAB R2022a)

 

設計ビューの作成

設計ビュー画面では以下のようにボタン、座標軸、編集フィールドを配置した。編集フィールドに盤面のサイズと初期の発生率を入力して、ボタンをクリックすると座標軸にライフゲームの盤面が表示されるというアプリになっている。

ここでapp.StartButtonを右クリックし、コールバック→ButtonPushedFcnコールバックの追加を選択すれば、コードビューにfunction StartButtonPushed(app, event)が追加される。

 

ボタンのコールバックにライフゲームのコードを記述する

あとはコールバックのfunction StartButtonPushed(app, event)内にライフゲームを動かすコードを書けばOKだが、ライフゲームの処理は以下のページのものをほぼコピペさせて頂いているので、詳しくは以下の記事を参照。

MATLABでConway’s Game of Lifeを実装してみる. – Qiita

人様のコードを丸々張り付けるのもアレなので、コードを変えた部分だけ書いておく。まず、sizeとinit_rateを

size = app.sizeEditField.Value;
init_rate = app.initrateEditField.Value;

に変えて、アプリ上で編集フィールドに入力したパラメータが反映されるようにしている。

また、最初App Desinger上でspyを使おうと思ったのだが、うまく設計ビューで追加した座標軸に表示ができなかった。調べたところ以下の記事を発見。spyはApp Desinger上で直接使うのは無理っぽい。

https://jp.mathworks.com/matlabcentral/answers/472255-how-can-i-use-spy-at-appdesigner

ということで、

spy(map);

の代わりに

[i,j] = find(map);
plot(app.UIAxes,j,i,'marker','.','markersize',6,'linestyle','none');

で計算したライフゲームの盤面を可視化している。あと、私がMATLAB onlineを使っているからなのかPC(というか回線?)がしょぼいからなのかわからないが、あまり盤面の更新が早いと実行時に動きがカクカクしてしまったので、適当にpauseの時間を延ばした。

以下が実行してみた動画。うにょうにょ動いて眺めているだけでも面白い。

また何かやりたいことを思いついたらApp Designerでアプリを作ってみようと思う。

 

参考文献

この本のMATLAB/Simulink 6か月ライセンスを使ってやってます↓
Interface 2022年 9月号

 

MATLAB/Simulink記事まとめ

MATLABとSimulinkの記事は以下にまとめてます。

MATLAB/Simulinkで遊んでみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください