SHIROのIchigoJam日記

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

カーリング

上田のパソコンクラブで「カーリングを作りたい」という子がいて、一緒に頭を悩ませながらプログラムを作りました。
ストーンの動きやルールはかなり簡略化していますが、勝つための戦略を考えるとかなり頭を使って面白いです。

遊び方

  • A、Bの2プレイヤーで、交互に8回ずつストーンを投げます。
  • 上の数字(ストーンを投げる強さ)が10~30の範囲で変化するので、スペースキーを押します。
  • その強さでストーンを投げます。ストーン移動中は、カーソルキーの上↑下↓でコースを操作できます。
  • 他のストーンに当たると、当たった場所で止まり、当てられたストーンが弾かれて進みます。弾かれる角度はランダムです。
  • 合計16個のストーンが投げられると、勝敗を判定します。中心の「+」マークに一番近いストーンのプレイヤーが勝ちです。
  • 点線にはさまれたエリアにある、勝ったプレイヤーのストーンの個数が得点になります。点線の手前・点線の後ろのストーンは無効です。
  • 公式ルールでは、以上の「エンド」を10回繰り返して、合計点数で勝敗を決めます。が、回数などは2人で話し合って決めるといいでしょう。

プログラムリスト

10 '*CURLING
20 CLV:CLS
30 LC 25,11:?"+"
40 FOR Y=0 TO 22
50 LC 22,Y:?"|":LC 28,Y:?"|"
60 NEXT
70 FOR T=1 TO 8
80 FOR S=0 TO 1
90 C=232+S
100 LC 0,0:?CHR$(C,65+S);"-";T
110 N=T*2+S-2:[N]=352
120 LC [N]:?CHR$(C)
130 GSB @STONE
140 NEXT
150 NEXT
160 E=200
170 FOR N=0 TO 15
180 X=[N]%32:Y=[N]/32
190 U=X-25:V=Y-11:D=U*U+V*V
200 IF D<E F=N:E=D
210 NEXT
220 S=F%2:C=232+S
230 LC 0,20:?CHR$(C,65+S);" WIN!"
240 P=0
250 FOR T=1 TO 8
260 N=T*2+S-2
270 X=[N]%32
280 IF X>=22 AND X<=28 P=P+1
290 NEXT
300 ?"SCORE=";P
310 BEEP 10,30:END
320 @STONE
330 L=10
340 @SPEED
350 L=L+1:IF L>30 L=10
360 LC 10,0:?L:WAIT 3
370 IF INKEY()!=32 GOTO @SPEED
380 X=0:Y=110:D=0:J=0
390 @LOOP
400 LC X,Y/10:?CHR$(D)
410 X=X+1
420 Y=Y-BTN(30)*2+BTN(31)*2+J
430 D=SCR(X,Y/10)
440 LC X,Y/10:?CHR$(C)
450 [N]=X+Y/10*32
460 WAIT 3
470 IF D=232 OR D=233 GSB @HIT
480 IF X<L GOTO @LOOP ELSE RTN
490 @HIT
500 BEEP
510 FOR M=0 TO 15
520 IF [M]=[N] H=M:M=15
530 NEXT
540 N=H:X=[N]%32:Y=[N]/32*10
550 D=C:C=232+N%2:J=RND(11)-5
560 IF X<L-1 L=L-1
570 IF X=L L=L+1
580 RTN