昨年IchigoJamが久々(?)にアップデートされました。これでバージョン1.4となり、三角関数とグラフィック機能、そしてLEDテープを制御する機能を利用できるようになりました。
三角関数はサイン(正弦)、コサイン(余弦)の2つです。サインだけあればいい気もしますが、プログラム可能なサイズが1KBしかないIchigoJamでは、コサインがあった方がコード量の節約になるからかもしれません。
ちなみに姉妹品のJavaScriptでプログラムできるIchigoLatteには、サインを返すメソッドしかありません。こちらは2KBまでプログラム可能なので、コサインがなくても容量的に結構余裕があります。
サインはSIN( )でパラメーターには角度を指定します。JavaScriptなど多くの言語ではラジアンで指定しますが、IchigoJam BASICは角度で指定します。
小学生にラジアンの説明するのは面倒なので、角度なら楽です。以下のようにコマンドを入力すると、45度のサインを256倍した値である181が表示されます。IchigoJamは小数値を扱えないので、256倍した値を返すようになっています。
?SIN(45)
コサインはCOS( )で計算できます。以下のようにすると、30度のコサインの値を256倍した222が表示されます。
?COS(30)
222
グラフィック機能は、IchigoJamの32文字×24行に表示できる文字パターンを利用して実現しています。これにより64×48の白黒グラフィックを実現しています。描画機能としては点または直線になります。どちらもDRAW命令を使います。例えば、座標(3,6)に点を描画したい場合は以下のようにします。
DRAW 3,6
座標は原点が左上で、右下に行くに従って座標値が増加します。これは一般的なコンピューター座標系と同じです(一般的でない座標系ってあるの? と言われるとWindowsのBMP形式は数学座標系になっています。Adobe Illustrator CS5より前のバージョン等も同様です。実際にはIllustratorは座標系が混在しているのですが)簡単なところで画面を点で埋めるプログラムだと、以下のようになります。
10 CLS
20 DRAW RND(64),RND(48)
30 GOTO 20
DRAWには点を表示するだけでなく、点を消したり、反転させる機能もあります。これは5番目のパラメーターで指定できます。以下のプログラムは点を表示しますが、すでに表示されている場合は点を消します。なお、3番目と4番目のパラメーターを指定すると直線を描けますが、以下のように1番目と2番目と同じ座標を指定すれば、点の表示になります。
10 CLS
20 X=RND(64)
30 Y=RND(48)
40 DRAW X,Y,X,Y,2
50 GOTO 20
ランダムな点ではなくランダムな線にしたい場合は、3番目と4番目の座標値を以下のように変更します。プログラムを実行すると、ランダムな線が描画されます。すでに描画されている場合は、反転します。
10 CLS
20 X=RND(64)
30 Y=RND(48)
40 A=RND(64)
50 B=RND(48)
60 DRAW X,Y,A,B,2
70 GOTO 20
サイン、コサインと組み合わせれば、円を描くこともできます。円を描くプログラムは、以下のようになります。15の数値を変えると描かれる円の半径が変わります。本当は、32+COS(I)*半径/256のようにした方が分かりやすいかもしれません。
10 CLS
20 FOR I=0 TO 360
30 X=32+COS(I)/15
40 Y=24+SIN(I)/15
50 DRAW X,Y
60 NEXT
ちなみに、正円だけでなく楕円も描くことができます。横方向か縦方向の半径を変えるだけです。
10 CLS
20 FOR I=0 TO 360
30 X=32+COS(I)/15
40 Y=24+SIN(I)/25
50 DRAW X,Y
60 NEXT
ちなみにこんな感じにすると点線の楕円も描けます。
10 CLS
20 FOR I=0 TO 360 STEP 4
30 X=32+COS(I)*30/256
40 Y=24+SIN(I)*20/256
50 DRAW X,Y
60 NEXT
最後に、画面に点が表示されているかどうかを返す機能も用意されています。ゲームなどでは必須の機能です。
画面上の点情報を読み出すにはPOINT( )を使います。以下のようにすると、座標(0,3)の点の状態が表示されます。点があれば1、そうでなければ0になります。
?POINT(0,3)
なお、ver 1.4に関しての機能や不具合修正は以下のページで参照できます。
https://www.b-incorp.com/topics/201912061345/
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
今年も子供向けの講座をやることになりました。IchigoJamではなくて、マイクロビットです。昨年は募集の2倍来たのですが、今年は募集定員まで来るかどうかわかりません。
子供向けの講座は大人相手よりもシビア(情け容赦ない。児童館は特に)なので、鍛えられると言えば鍛えられます。おばちゃん達よりも子供の方が手厳しい。中学生だったらやらないだろうことも、小学生ならへっちゃら。
ということで、キーボード2台見事に破壊されました。1台は何とか使える状態という…… やはり、子供向けには象が乗っても壊れないコンピューターが必要なのかもしれません。
・みんなのobniz入門
https://www.amazon.co.jp/dp/4865942165/
・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/
・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605
・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/