OLED有機ELディスプレイを使った簡単なゲームを作ってみました。Facebook のIchigoJam-FANグループのRuria Amanagiさん作成のマシン語によるデータ生成部を利用することで、OLEDへの高速表示が可能となり、ゲーム画面が実現しました。
ハードウェアは、OLEDをIchigoJam Tへ接続するだけです。
上図のようにIchigoJam T + MixJuiceの組み合わせであれば、「ボクニモワカルfor MixJuice」のメニュー[8]→[5]→[5]でダウンロードすることも可能です。プログラムの内容は後に示します(当ブログからコピーしても良い)。
Topメニューから[8]→[5]→[5]:
?"MJ GETS git.bokunimo.com/MJ/または、直接、ダウンロード:
?"MJ GETS git.bokunimo.com/MJ/pg05/4.txt
目次
ゲームの内容
このゲームは雑誌「1行リターンですぐ動く! BASIC I/Oコンピュータ IchigoJam入門」のP.34で作成したレーシングゲームのOLED版です。同誌に掲載しているプログラムはCC BYライセンスとして配布することが出来ます(出版社から承諾してもらっています)。ゲームの作成方法については、同誌を参考にしてください。
起動すると画面が縦方向にスクロールします。中央やや下に表示された「O」をカーソルキーの左右でコントロールします。道路の壁や障害物に衝突しないように「$」を獲得してください。徐々にスクロール速度が上がります。
壁や障害物をよけながら「$」を獲得する。スクロール速度は、徐々に上がり、難しくなる。
壁や障害物に衝突すると、ゲームオーバーとなる。
関連動画
Facebook IchigoJam FANグループの松永さんが撮影された関連動画へのリンクです。
ゲームの様子MixJuiceからのダウンロード
OLEDに関して全体をまとめたページ
IchigoJam用OLEDの全体をまとめたページはこちらです:
プログラム
以下にプログラムを示します。行番号800番以降がOLED用のドライバ部です。マシン語の部分はFacebook のIchigoJam-FANグループのRuria Amanagiさんが作成したものです。
赤文字のgsbがドライバ部を呼び出す部分です。行番号1からOLEDの初期化を、行番号150でゲーム中のOLED表示を行っています。
なお、配列変数の全領域を使用するので、ゲーム部に配列変数を用いることが出来ません。
new' RACING GAME
' OLED ドライバ for IchigoJam
' CC BY Wataru KUNINO https://bokunimo.net
' マシン ゴ Ruria Amanagi1 CLS:?"RACING":?"GAME":gsb800
10 X=4
20 C=2
30 P=0
40 wait120:cls
50 LC 0,0:?"–|$$$|-"
100 'DISP
110 LC X,12:?"O"
120 LC 0,15:?"P=";P;
130 LC RND(32),0:?"-"
140 LC C,0:?"|":LC C+4,0:?"|"
150 R=RND(50):gsb900
160 IF R<4 LC R+C+1,0:?"$"
170 IF R<20 AND C>0 THEN C=C-1
180 IF R>30 AND C<3 THEN C=C+1
190 WAIT 10-P/10
200 LC X,12:?" "
210 K=INKEY()
220 IF K=28 THEN X=X-1
230 IF K=29 THEN X=X+1
300 'JUDGE
310 SCROLL 2
320 V=VPEEK(X,12)
330 IF V=36 BEEP 1:P=P+10:V=0
340 IF V=0 GOTO 110
400 'CRUSH
410 BEEP 20,10
420 LC X,12:?"X"
430 LC 0,15:?"P=";P;" "
440 LC 0,7:?"GAME OVR":gsb900
450 LC 0,23:?:end800 'INIT
810 let[84],#4000,33,#227F,#700,#D5AE,#8D80,#2014,#DA00,#8112,#D9CF,#DBF1,#A440,#AFA6
820 for[99]=#8B0to#8C1:ifi2cw(60,#8A8,1,[99],1)?"E
830 next
840 let[64],#B570,#1840,#2308,#21B,#18C9,#2410,#7803,#DB,#18D3,#681D,#600D,#685D,#604D,#3020,#3108,#3C01,#D1F4,#BD70
900 'OUT
910 ifi2cw(60,#8A8,1,#8AA,6)?"E
920 for[98]=0to7:D=usr(#880,#907-[98]):ifi2cw(60,#8A9,1,#800,128)?"E
930 next:rtn'CC BY https://bokunimo.net
MixJuiceのロゴも表示してみた。MixJuiceの名称やロゴはNaturalStyle Co. Ltd.(http://na-s.jp/)の権利物。イチゴマークはjig.jpの権利物。両社の権利を侵害しないように(例えば、他の類似の商品を示す用語として使用しないなど)、取り扱いには注意する。下記のTopメニューから[8
]→[5]→[5]:
?"MJ GETS git.bokunimo.com/MJ/
OLEDモジュール購入時の注意点
□ SSD1306搭載品である□ 128 × 64 ドット品である□ ピンの並びが、GND、VCC、SCL、SDAの順である□ I2Cアドレスが0x78または0x3Cである□ 単色発光品である(表示エリアの一部だけが異なる色になっているタイプがある)□ (なるべく)過去に購入したことのある販売店を選ぶ
以下で販売されているものは、ピン配列が異なる可能性があります。
HiLetgo
当ブログ内の関連記事
(1) 接続方法など:(2) IchigoJamロゴ表示:(3) 今回のブログ記事の短縮URL:
by ボクにもわかるIchigoJam用マイコンボード
IchigoJam用OLEDの全体をまとめたページはこちらです:
https://bokunimo.net/ichigojam/oled.html
https://bokunimo.net/ichigojam/oled.html