「IchigoJam Advent Calendar 2023」参加記事です。
1. IchigoJamでトランプカードを作ります
2. 2スート、13枚のカードデータを配列に入れます
3. つくった26枚をシャッフルします
4. 先頭から10枚のカードデータと色が同じで数が一緒な10枚のカードデータを加えます
5. つくった20枚をシャッフルします
6. 画面上に20枚の裏面にしたカードを並べます
7. カーソルの上下左右で選べるようにします
8. スペースキーで押されたらカードを表示します
9. 2枚目として開かれるときに対応するカードかどうか判定します
10. 間違っていたら、2枚のカードを閉じます
11. 正解カウントが10になったらタイムを表示して終了します
12. タイトルをつけてかっこよくします
1. IchigoJamでトランプカードを作ります
2 POKE1834,146,130,68,40:POKE1849,40,68,130,68,40 499 END 500 @PUTN:IFN<10?N;ELSEIFN=10?CHR$(234);ELSEIFN=11?"J";ELSEIFN=12?"Q";ELSE?"K"; 510 RTN 600 @PUTC:?CHR$(228+C/100);:N=C%100:GSB@PUTN:RTN FORI=1TO13:FORJ=0TO3:C=J*100+I:GSB@PUTC:?" ";:NEXT:?:NEXT
2. 2スート、13枚のカードデータを配列に入れます
番号で指定できる変数、配列。IchigoJamでは102コの配列が使えます。スペードとハート、2スート26枚のデータを1の配列変数に1つずつ順に入れることにしましょう。
10 FORI=1TO13:FORJ=0TO3:C=J*100+I:[I-1+J*13]=C:NEXT:NEXT
ループ変数Iは数、Jはスートを表し、IchigoJamトランプカードの表示プログラムに合わせて、スートを100倍して数に足しています。
3. つくった26枚をシャッフルします
「デタラメにかき混ぜる」を実現するのはランダム(RND)。0から51までランダムな番号の変数と値を交換するサブルーチン、@SHUFFLEを作ります。
700 @SHUFFLE:FORI=1TOL:N=RND(L):T=[I]:[I]=[N]:[N]=T:NEXT:RTN 20 L=13*2:GSB@SHUFFLE
変数Lでシャッフルする枚数を指定するようにしたので、13*2、26枚をシャッフル。
4. 先頭から10枚のカードデータと色が同じで数が一緒な10枚のカードデータを加えます
全部並べてもいいですが、難しくなりすぎそうなので、10ペア、20枚で神経衰弱することにします。そこで、シャッフルした先頭から10枚を使って、配列のその後ろに対応する10枚のカードデータをセットします。
25 FORI=0TO9:[I+10]=[I]+200:NEXT
5. つくった20枚をシャッフルします
26 L=20:GSB@SHUFFLE
シャッフルサブルーチン、活躍!
6. 画面上に20枚の裏面にしたカードを並べます
1 CLS 30 FORI=0TO4:FORJ=0TO3:LC4+I*5,3+J*2:?CHR$(1,1);:NEXT:NEXT
裏向きのカードはCHR$(1)の真っ白な四角2つで表現しました。
7. カーソルの上下左右で選べるようにします
40 X=0:Y=0:P=-1 50 LC3+X*5,3+Y*2:?" "; 60 X=X-(K=28&&X>0)+(K=29&&X<4) 70 Y=Y-(K=30&&Y>0)+(K=31&&Y<3) 80 LC3+X*5,3+Y*2:?CHR$(225); 85 K=INKEY():IF!KCONT 90 GOTO 50
INKEYで入力されたキーコードを取得し、その数にあわせてXとYを増減することで移動を実現。CHR$(225)はIchigoJam絵文字の右矢印です。
8. スペースキーで押されたらカードを表示します
86 IFK=32GSB100 100 LC4+X*5,3+Y*2:Q=X+Y*5:C=[Q]:GSB@PUTC 110 RTN
これで指定されたカードが開けるようになりました。
9. 2枚目として開かれるときに対応するカードかどうか判定します
110 IFP==-1 P=Q:RTN 120 IF[P]%100=[Q]%100&&([P]/100+[Q]/100)%2=0 P=-1:H=H+1:RTN 130 RTN
開いていないときは-1にしてある、変数Pが1枚目のカードデータ。1枚目と比較して合っていたら開いたままにします。
10. 間違っていたら、2枚のカードを閉じます
130 WAIT30:BEEP15:LC4+X*5,3+Y*2:?CHR$(1,1);:WAIT30:BEEP15:LC4+P%5*5,3+P/5*2:?CHR$(1,1);:P=-1:RTN
ペナルティを兼ねて、低めの音と共にWAIT30と共に裏返し表示に戻しています。
11. 正解カウントが10になったらタイムを表示して終了します
200 LC10,15:?"CLEAR!!":LC10,17:?"TIME:";TICK()/60;"SEC":END
12. タイトルをつけてかっこよくします
1 CLS:LC12,0:?"SUIJACK!"
名付けて「SUIJACK!」
RUN on IchigoJam web(ハクビシン、モモンガ、モモンガ)
IchigoJamトランプ神経衰弱「SUIJACK!」のできあがり!
60秒を切れるかな!?
やってみよう!
1. 右矢印絵文字をネコに変えてみよう!
2. 裏返しのカードデザインを変えるサブルーチンを作ってみよう!
3. 「3 SRND 0」と加えるとどうなるか実験してみよう!
4. お手つきした数を数えてみよう!
5. 使うカードの枚数を変えてゲームの難易度を変えてみよう!
links
- IchigoJamのカレンダー | Advent Calendar 2023 - Qiita
- IchigoJamトランプ神経衰弱の作り方
- IchigoJamプリント