PRG:HEXELLO
動いている様子はコチラ
セツメイEXPLANATION
6角マスの盤面を用いたリバーシです。対コンピューター戦はできず、人間対人間専用です。This is Reversi like game using hex cells board. Only human vs human is available.
青(先攻)赤(後攻)交互に盤面へ石を打ち、相手の石を挟むと自分の石の色に変わります。Players take turns placing disks on the board with their assigned color facing up (bule for first / red for second). During a play, any disks of the opponent's color that are in a straight line and bounded by the disk just placed and another disk of the current player's color are turned over to the current player's color.
ただし、盤面中央の白い石は色が変わりません。Exceptionally, a white disk at the center of board never changes its color.
最終的に石の多い側が勝者となります。The winner is who have the majority when the game is finished.
画面上部に現在の石の数が表示され、どちらの番かを示す下線が引かれます。石を打つ場所はタッチ操作で行います。右下のアイコンをタッチすると、以下の操作ができます。Numbers of disks are displayed on upper of the screen, and white underline indicates whose turn. Player use touch-pen to place a disk.
操作を一手戻します。Undo a step.
盤面を初期状態に戻します。Reset the game.
QRコードQR CODE
プログラムコードPROGRAM CODE
表示 Show
A | 石の反転アニメーション時のループカウンタ |
A$ | 石の変化情報 |
A$(,) | この位置に石を置いた場合の石の変化情報 |
B | この場所に石を置けるか など |
C() | スプライト番号に対する石の色 |
D | 連続パス回数(2回連続パスの場合はゲーム終了) |
E | 石を置ける場所が一つでもあるか |
F(,) | 盤面の状態 |
H$() | 石の変化情報の履歴 |
I,J | 汎用ループカウンタ |
K,K() | 石の数 |
L,R | 盤面横方向の走査範囲 |
M | 現在のプレイヤーの色 |
N | アイコン選択状態 |
P,Q | 注目している盤面の位置 |
S | 置かれている石の総数 |
T | タッチの状態 |
U,V,W | 挟んだ判定、石の反転アニメーション時の走査方向 |
X,Y | 汎用座標変数 |
Z | 雑用 |
01. GPAGE 1SPPAGE 1GCLSЛ
02. P=0Q=7FOR I=0TO 5READ X,YЛ
03. GLINE P,Q,X,Y,26P=X:Q=Y:NEXTЛ
04. GPAINT 1,9,10L=1R=6FOR Q=1TO 11FOR P=L TO RЛ
05. GOSUB@C:Z=!XЛ
06. GCOPY Z*4,0,24,24,X-!Z*4,Y-2,0NEXTЛ
07. L=L+(Q>5)R=R+(Q<6)NEXTЛ
08. ICONSET 2,61ICONSET 3,62Л
09. DATA 12,1,23,7,23,17,11,23,0,17,0,7Л
10. @IЛ
11. CLEAR:PNLTYPE”OFFЛ
12. DIM F(13,13),A$(13,13),C(92),H$(92)SPCLRЛ
13. FOR Q=5TO 7FOR P=5+(Q>6)TO 7-(Q<6)Л
14. IF Q==6 THEN M=9-P ELSE M=4-(P-3<Q/2)*2Л
15. GOSUB@P:NEXT:NEXTЛ
16. BEEP 32BGMPLAY 27Л
17. @MЛ
18. CLS:M=6-M:GOSUB@K:GOSUB@AЛ
19. IF!E THEN PNLSTR M*14-28,3,”PASS”BEEP 4WAIT 30D=D+1ON D<2GOTO@G,@MЛ
20. D=0B=0SPSET 0,15,M,0,0,3SPANIM 0,2,2Л
21. @TЛ
22. Q=TCHY/16+.5OR 0P=(TCHX+Q*12-44)/24OR 0N=ICONCHK()T=TCHSTЛ
23. IF T THEN B=0IF(P>0)*(P<12)THEN A$=A$(P,Q)B=A$!=””GOSUB@CЛ
24. SPOFS 0,X,Y-!B*256VSYNC 1ON N-2GOTO@U,@IЛ
25. IF!B+T THEN@TЛ
26. GOSUB@P:H$(S)=A$BEEP 9GOSUB@KЛ
27. WAIT 20GOSUB@R:WAIT 27Л
28. IF(S<91)*(K(2)*K(4))THEN@MЛ
29. @GЛ
30. BGMSTOPЛ
31. BEEP 55PNLSTR 12,0,”GAME SETЛ
32. @NЛ
33. N=ICONCHK()VSYNC 1ON N%3+1GOTO@N,@IЛ
34. BGMPLAY 27Л
35. @UЛ
36. BEEP 28IF S<8THEN@TЛ
37. SPCLR 0A$=H$(S)Z=ASC(LEFT$(A$,1))P=Z%13Q=Z/13OR 0F(P,Q)=0M=C(S)K(M)=K(M)-1SPCLR SЛ
38. S=S-1GOSUB@R:M=6-M:GOTO@MЛ
39. @CЛ
40. X=P*24-Q*12+48Y=Q*16-10RETURNЛ
41. @PЛ
42. S=S+1F(P,Q)=SЛ
43. K(M)=K(M)+1C(S)=MЛ
44. GOSUB@CЛ
45. SPSET S,15,M,0,0,2SPOFS S,X,YЛ
46. RETURNЛ
47. @AЛ
48. E=0L=1R=6FOR Q=1TO 11FOR P=L TO RЛ
49. A$=CHR$(P+Q*13)Z=0FOR W=-1TO 1FOR U=0TO 1V=U-(W+U<1)X=P:Y=QЛ
50. B=0IF F(P,Q)THEN@EЛ
51. @BЛ
52. X=X+V:Y=Y+WЛ
53. C=C(F(X,Y))IF!C THEN B=0ELSE IF C!=M THEN B=B+1GOTO@BЛ
54. @EЛ
55. A$=A$+STR$(B)Z=Z+B:NEXT:NEXTЛ
56. A$(P,Q)=A$*!!Z:E=E+ZЛ
57. NEXT:L=L+(Q>5)R=R+(Q<6)NEXTЛ
58. RETURNЛ
59. @RЛ
60. FOR W=-1TO 1FOR U=0TO 1V=U-(W+U<1)X=P:Y=QЛ
61. B=VAL(MID$(A$,W*2+U+3,1))FOR A=1TO B:X=X+V:Y=Y+WЛ
62. F=F(X,Y)C=C(F)K(C)=K(C)-1C=6-CЛ
63. K(C)=K(C)+1C(F)=CЛ
64. SPCHR F,(N+1)*5,C,M<3,0,3IF N<0THEN SPANIM F,16,2,1BEEP 49GOSUB@K:WAIT 5Л
65. NEXT:NEXT:NEXT:RETURNЛ
66. @KЛ
67. FOR I=0TO 1Z=I*232+23GFILL Z-23,0,Z,23K=K(I*2+2)Л
68. FOR J=0TO 1Z=Z-12GPUTCHR Z,0,”BGF”,K%10+48,I*3+9,2K=K/10NEXT:NEXTЛ
69. Z=(M>3)*232GBOX Z,16,Z+23,17,15RETURNЛ
※コードのHTML生成にPTC2HTMLを使用しています。
SPS | |
COL1 (下画面) | |
モドル BACK