SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

リアル旗上げゲーム

先日作った「旗上げゲーム」
www.ichigojaman.jp
を発展させて、自作の旗コントローラーでプレイしてみました。
動画はこちら。

www.youtube.com

赤・白の旗は、最初は工事用品で探したのですが見つからず、結局スポーツ審判用(柔道・剣道など)の旗を使いました。

まず、チルトスイッチに単芯線2本をはんだ付け。
チャタリング防止に0.1μFのセラミックコンデンサを並列に入れました。(無くてもいいかも?)
f:id:shiro0922:20210423115353j:plain

スイッチにビニールテープを巻いて旗の柄に固定。
中の仕組みが見える方が面白いと思って透明ビニールテープにしましたが、色が着いたビニールテープで隠す手もあると思います。
f:id:shiro0922:20210423140513j:plain

IchigoJamに音声ボード「Ichigo-ice」(イチゴボイス、北の電子工房製)を装着。
f:id:shiro0922:20210423210905p:plain

旗コントローラーからの線は、白旗をIN1・GNDに、赤旗をIN4・GNDに接続します。
f:id:shiro0922:20210423211004p:plain

割と簡単な工作と配線なので、子ども向け工作・プログラミング教室のネタとしても面白そうです。
(プログラムはもっとシンプルにした方がいいかもしれませんが)

プログラム

実行するとすぐにゲームが始まります。指示されたとおりに赤・白の旗を上げ下げしてください。
間違えると「アウト!」と表示されてゲームオーバーになります。IchigoJamのボタンを押すとリプレイします。
1kバイト目一杯なので、スペースを詰めた見づらいリストになっています。

1 @ARUN:'*HataAge
2 CLV:VIDEO3:CLS:W=120
3 POKE#7F0,#FF,#FF,#FF,#FF,#FF,#FF,#FF,#FF
4 POKE#7F8,#FF,#AB,#D5,#AB,#D5,#AB,#D5,#FF
5 LET[0],"シロ","アカ"
6 LET[10],"サゲテ","アゲナイデ","アゲテ","サゲナイデ"
7 LET[20],"si'ro/","a'ka/"
8 LET[30],"sa'gete,","agena'ide,","agete,","sage'naide,"
9 LC7,9:?CHR$(79,31,28,1,31,28,65);
10 GSB28:GSB30:WAITW
11 LC0:?S:LC3,5
12 H=RND(2):?STR$([H]);" ";
13 D=[H+20]:E=LEN(D):COPY#700,D,E:F=E
14 U=RND(2):V=10+U*2+RND(2):?STR$([V]);"   "
15 D=[V+20]:E=LEN(D):COPY#700+F,D,E:F=F+E
16 I=I2CW(46,#700,F)&I2CW(46,13)
17 IFHB=UELSEA=U
18 CLT
19 J=IN(1):K=IN(4)
20 L=!J:R=!K
21 IFLGSB29 ELSEGSB28
22 IFRGSB31 ELSEGSB30
23 IFTICK()<WGOTO19
24 IFA=L&&B=RS=S+1:GOTO11
25 G="a'uto-.":I=I2CW(46,G,LEN(G))&I2CW(46,13)
26 LC16:?"アウト!"
27 IFBTN()RUNELSECONT
28 LC5,8:?CHR$(0,31,0,31,28,28,254,25);:RTN
29 LC5,8:?CHR$(254,31,26,31,28,28,0,0);:RTN
30 LC9,8:?CHR$(0,31,28,28,0,31,28,26,255);:RTN
31 LC9,8:?CHR$(255,31,28,28,25,31,28,0,0);:RTN

動画を見てもわかるのですが、難易度がちょっと低めです。
慣れてきたら、2行目の「W=120」を小さくして、制限時間を短くしてください。