トランプカードを使ったソリティア(1人遊び)です。Facebookの「おうちクエスト」グループで出ていたネタですが、トランプカードネタを一度やってみたかったので作ってみました。
遊び方
- 実行してしばらく待つと、カードが3枚ずつ10個の山で配られます。山の一番目(一番下)のカードが表、残りは裏返しです。残り22枚は山札となり、枚数が画面左上に表示されます。
- 同じ数字のカードをペアにします。左右の矢印キー←→でカーソルを移動させ、ペアの1枚目でスペースキーを押すと、そのカードに上矢印↑が表示されます。次にペアのもう片方のカードを選んでスペースキーを押すと、そのペアが取られて消えます。
- IchigoJam webにタッチキーボードが付いたので、スペースキーのほか上下矢印キー↑↓でもカード選択できるようにしました。
- カードが取られた山は一段低くなり、次のカードが表になります。山の全部のカードが取られると、その場所に山札から1枚出されます。
- それぞれの山や山札のカードを、全てペアにして取るとゲームクリアです。手詰まりになった時はESCキーでプログラムを止めて、「RUN」またはF5キーでもう一度実行してください。
ソリティアとしてはそれほど難しくなく、成功率は7割くらい。
とにかく山を崩して、隠れたカードを無くすのがセオリーです。
カードの運によっては、スタートでいきなり手詰まりになることもあります。
プログラム
※4/24修正:IchigoJam webのタッチキーボード用に上下矢印キー↑↓でもカード選択、カード選択部分のバグ修正。
1 '*PairPair 2 CLV:CLP:L=52:M=30:SRNDTICK() 3 A=234:B=241:GSB@PCG 4 A=65:B=232:GSB@PCG 5 FORI=2TO9:A=48+I:B=231+I:GSB@PCG:NEXT 6 A=74:B=242:GSB@PCG 7 A=81:B=243:GSB@PCG 8 A=75:B=244:GSB@PCG 9 FORI=0TO51:[I]=I%13+I/13*16+17:NEXT 10 FORI=1TO200 11 A=RND(52):B=RND(52) 12 C=[A]:[A]=[B]:[B]=C 13 NEXT:GSB@PRC:S=-1 14 @LOOP 15 LCX*2,10,1:K=INKEY() 16 X=X-(K=28)*(X>0)+(K=29)*(X<9) 17 IFK>29&&K<33GSB@SET 18 IFL>0GOTO@LOOP 19 BEEP10,30:LC10,12:?"!!CLEAR!!":END 20 @PCG 21 COPYB*8,A*8,8:RTN 22 @PRC 23 CLS:?52-M 24 FORI=0TO27STEP3:H=I/3*2 25 FORJ=0TO2 26 C=[I+J]:T=C/16:N=C&15:IF!NGOTO@PRE 27 LCH,8-J*3:IFJ?CHR$(143)ELSE?CHR$(T+227) 28 LCH,9-J*3:IFJ?CHR$(143)ELSE?CHR$(N+231) 29 @PRE 30 NEXT:NEXT:RTN 31 @SET 32 IFX=SS=-1:?" ":RTN 33 B=X*3:IFS<0IF[B]S=X:?CHR$(226):BEEP:RTN ELSERTN 34 A=S*3:IF[A]%16!=[B]%16RTN 35 BEEP:I=A:GSB@SFT:I=B:GSB@SFT 36 L=L-2:S=-1:GSB@PRC:RTN 37 @SFT 38 [I]=[I+1]:[I+1]=[I+2]:[I+2]=0 39 IF![I]&&M<52[I]=[M]:M=M+1 40 RTN
トランプの数字は「A,2,3,4,5,6,7,8,9,10,J,Q,K」と変則的なので、PCG領域の文字コード232~244へ文字データを転送して、その並びを作っています。
- 3行目:「10」をコード241へ転送(後の転送で上書きされないように最初に転送)
- 4行目:「A」をコード232へ転送
- 5行目:「2」~「9」をコード233~240へ転送
- 6行目:「J」をコード242へ転送
- 7行目:「Q」をコード243へ転送
- 8行目:「K」をコード244へ転送
連続した並びを作ってしまえば、文字コードの順に処理して表示できます(28行目)。
IchigoJam web版
IchigoJam web版はこちら。
最初のカードのシャッフルに10秒くらいかかります。気長に待ってください。