【IchigoJam】正解・不正解を表示するやつ

クレーンゲームの景品として、○や×で正解・不正解を示すやつと思われるものが入っているのを見かけた。
これの獲得を狙うより、[IchigoJam](https://ichigojam.net/) で再現してみるほうが有意義だと判断した。
というわけで、作ってみた。

※IchigoJamはjig.jpの登録商標です。

# 操作方法

|キー|動作|
|---|---|
|O (オー)|○を表示し、「ピンポン」という音を鳴らす|
|X (エックス)|×を表示し、「ブー」という音を鳴らす|
|その他|画面の表示を消す|

# プログラム

```text
10 ' ﾋﾟﾝﾎﾟﾝ / ﾌﾞｰ
20 POKE#700,0,0,0,0,0,1,1,2,0,7,24,96,128,0,0,0,0,224,24,6,1,0,0,0,0,0,0,0,0,128,128,64,2,4,4,4,4,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,32,32,32,32,32,32,64,2,1,1,0,0,0,0,0,0,0,0,128,96,24,7,0
30 POKE#750,0,0,0,1,6,24,224,0,64,128,128,0,0,0,0,0,0,4,2,1,0,0,0,0,0,0,0,0,128,64,32,16,0,0,0,0,1,2,4,8,0,32,64,128,0,0,0,0,0,0,0,0,0,0,0,0,8,4,2,1,1,2,4,8,16,32,64,128,128,64,32,16,0,0,0,0,0,0,0,0
40 POKE#7A0,0,0,0,0,1,2,4,0,16,32,64,128,0,0,0,0,8,4,2,1,0,0,0,0,0,0,0,0,128,64,32,0:FORI=0TO23:POKE#800+I,#E0+I:NEXT:VIDEO7:CLS
50 K=INKEY()
60 IF K=ASC("O") OR K=ASC("o") COPY#900,#800,12:PLAY"O5E32.R64C16.":GOTO50
70 IF K=ASC("X") OR K=ASC("x") COPY#900,#80C,12:PLAY"O2B4":GOTO50
80 IF K CLS
90 GOTO50
```

* [OneFiveCrowd で実行する](https://onefivecrowd.mikecat.work/#text=RUN%0A&prg=CgAOJyDL393O390gLyDM3rAAFADAUE9LRSM3MDAsMCwwLDAsMCwwLDEsMSwyLDAsNywyNCw5NiwxMjgsMCwwLDAsMCwyMjQsMjQsNiwxLDAsMCwwLDAsMCwwLDAsMCwxMjgsMTI4LDY0LDIsNCw0LDQsNCw0LDQsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY0LDMyLDMyLDMyLDMyLDMyLDMyLDY0LDIsMSwxLDAsMCwwLDAsMCwwLDAsMCwxMjgsOTYsMjQsNywwAB4AxFBPS0UjNzUwLDAsMCwwLDEsNiwyNCwyMjQsMCw2NCwxMjgsMTI4LDAsMCwwLDAsMCwwLDQsMiwxLDAsMCwwLDAsMCwwLDAsMCwxMjgsNjQsMzIsMTYsMCwwLDAsMCwxLDIsNCw4LDAsMzIsNjQsMTI4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgsNCwyLDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMTI4LDY0LDMyLDE2LDAsMCwwLDAsMCwwLDAsMAAAKAB-UE9LRSM3QTAsMCwwLDAsMCwxLDIsNCwwLDE2LDMyLDY0LDEyOCwwLDAsMCwwLDgsNCwyLDEsMCwwLDAsMCwwLDAsMCwwLDEyOCw2NCwzMiwwOkZPUkk9MFRPMjM6UE9LRSM4MDArSSwjRTArSTpORVhUOlZJREVPNzpDTFMAADIACks9SU5LRVkoKQAAPABISUYgSz1BU0MoIk8iKSBPUiBLPUFTQygibyIpIENPUFkjOTAwLCM4MDAsMTI6UExBWSJPNUUzMi5SNjRDMTYuIjpHT1RPNTAAAEYAPklGIEs9QVNDKCJYIikgT1IgSz1BU0MoIngiKSBDT1BZIzkwMCwjODBDLDEyOlBMQVkiTzJCNCI6R09UTzUwAFAACElGIEsgQ0xTAFoABkdPVE81MA)
* [IchigoJam web で実行する](https://fukuno.jig.jp/app/IchigoJam/#10%20%27%20%EF%BE%8B%EF%BE%9F%EF%BE%9D%EF%BE%8E%EF%BE%9F%EF%BE%9D%20%2F%20%EF%BE%8C%EF%BE%9E%EF%BD%B0%0A20%20POKE%23700%2C0%2C0%2C0%2C0%2C0%2C1%2C1%2C2%2C0%2C7%2C24%2C96%2C128%2C0%2C0%2C0%2C0%2C224%2C24%2C6%2C1%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C128%2C128%2C64%2C2%2C4%2C4%2C4%2C4%2C4%2C4%2C2%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C64%2C32%2C32%2C32%2C32%2C32%2C32%2C64%2C2%2C1%2C1%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C128%2C96%2C24%2C7%2C0%0A30%20POKE%23750%2C0%2C0%2C0%2C1%2C6%2C24%2C224%2C0%2C64%2C128%2C128%2C0%2C0%2C0%2C0%2C0%2C0%2C4%2C2%2C1%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C128%2C64%2C32%2C16%2C0%2C0%2C0%2C0%2C1%2C2%2C4%2C8%2C0%2C32%2C64%2C128%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C8%2C4%2C2%2C1%2C1%2C2%2C4%2C8%2C16%2C32%2C64%2C128%2C128%2C64%2C32%2C16%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%0A40%20POKE%237A0%2C0%2C0%2C0%2C0%2C1%2C2%2C4%2C0%2C16%2C32%2C64%2C128%2C0%2C0%2C0%2C0%2C8%2C4%2C2%2C1%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C128%2C64%2C32%2C0%3AFORI%3D0TO23%3APOKE%23800%2BI%2C%23E0%2BI%3ANEXT%3AVIDEO7%3ACLS%0A50%20K%3DINKEY%28%29%0A60%20IF%20K%3DASC%28%22O%22%29%20OR%20K%3DASC%28%22o%22%29%20COPY%23900%2C%23800%2C12%3APLAY%22O5E32.R64C16.%22%3AGOTO50%0A70%20IF%20K%3DASC%28%22X%22%29%20OR%20K%3DASC%28%22x%22%29%20COPY%23900%2C%2380C%2C12%3APLAY%22O2B4%22%3AGOTO50%0A80%20IF%20K%20CLS%0A90%20GOTO50%0ARUN%0A)

# 解説

まず、`VIDEO 7` の画面 (4×3文字) で表示することを前提として、○と×を描いた32×24ピクセルの画像を用意し、これをキャラクターパターンとして登録する。(20～40行目)

次に、`COPY` 命令で画面の内容を設定できるよう、文字のデータを用意しておく。(40行目)

指定のキーが押されたら、`COPY` 命令で○または×を表示する用の文字データを画面に書き込み、`PLAY` 命令で音を鳴らす。(60～70行目)

# ○と×の表示

![○の表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99656/9d6c800f-0878-77af-35bd-4987f33ea424.png)

![×の表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99656/25dc8a89-5774-9260-6877-8d99e60409b4.png)

# まとめ

IchigoJam で、キー操作によって画面に○や×を表示するとともに、ピンポンやブーの音を鳴らすものを作ることができた。

応用例としては

* キーのかわりに入力ポートを用いて操作する
* 「別のキーを押す」ではなく「キーやボタンを離す」ことで画面をクリアする
* [PanCake](http://pancake.shizentai.jp/) を用いた音や表示の改善
* WS2812B 系のLEDを用いた演出

などが考えられるだろう。これらは読者への宿題とする。