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


遊び方
- 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