Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SCREEN 12
- WIDTH 80, 60
- DIM a(8, 8), b(19, 2)
- a(4, 4) = 1: a(5, 5) = 1
- a(5, 4) = 2: a(4, 5) = 2
- 'a(2, 2) = 1: a(3, 2) = 2: a(2, 1) = 1: a(3, 1) = 2: a(2, 8) = 1: a(3, 8) = 2: a(6, 8) = 2: a(7, 8) = 1
- 'a(6, 7) = 2: a(7, 7) = 1: a(6, 1) = 0: a(7, 1) = 1: a(4, 1) = 2: a(1, 1) = 1: a(2, 1) = 2: a(5, 1) = 2
- 'a(7, 1) = 2: a(8, 1) = 1: a(8, 3) = 1: a(7, 2) = 2: a(8, 5) = 1: a(7, 4) = 2: a(6, 3) = 2: a(5, 4) = 0
- 'a(7, 6) = 1: a(6, 5) = 2: a(3, 6) = 2: a(2, 7) = 2: a(1, 8) = 1: a(2, 1) = 1: a(4, 3) = 2: a(5, 1) = 1
- 'a(5, 2) = 2: a(5, 3) = 2: a(5, 5) = 2: a(5, 6) = 2: a(5, 7) = 2: a(5, 8) = 1: a(6, 4) = 2: a(8, 4) = 1
- 'a(2, 4) = 2: a(3, 4) = 2: a(4, 4) = 2: a(1, 4) = 1
- xshift = 130
- yshift = 44
- GOSUB empty
- GOSUB board
- REM p = 1 means white player, p = 2 means black player
- p = 1
- FOR move = 1 TO 60
- GOSUB Counter
- p = 3 - p
- DO
- GOSUB ShowFlipNumbers: IF t = 0 THEN p = 3 - p: GOSUB ShowFlipNumbers: IF t = 0 THEN END
- DO
- DO WHILE _MOUSEINPUT: LOOP
- LOOP UNTIL _MOUSEBUTTON(1) = -1
- GOSUB HideFlipNumbers
- x = INT((_MOUSEX - xshift) / 48) + 1
- y = INT((_MOUSEY - yshift) / 48) + 1
- LOOP UNTIL (x >= 1 AND x <= 8 AND y >= 1 AND y <= 8)
- GOSUB legal
- IF legal$ = "yes" THEN GOSUB Flip: GOSUB board
- IF legal$ = "no" THEN move = move - 1: p = 3 - p
- NEXT move
- GOSUB Counter
- END
- Counter:
- REM === the code will be below this LINE
- REM === the code will be above this LINE
- RETURN
- Flip:
- IF legal$ = "no" THEN RETURN
- IF legal$ = "yes" THEN
- a(x, y) = p: GOSUB board: 'SLEEP 1
- FOR s = 1 TO m
- a(b(s, 1), b(s, 2)) = p
- NEXT s
- END IF
- RETURN
- HideFlipNumbers:
- FOR x = 1 TO 8
- FOR y = 1 TO 8
- IF (a(x, y) = 0) THEN
- GOSUB legal
- IF (legal$ = "yes") THEN
- IF p = 1 THEN c = 15: REM c = 15 means white stone colour
- IF p = 2 THEN c = 0: REM c = 0 means black stone colour
- FOR r = 19 TO 21 STEP 0.5: CIRCLE ((x - 0.5) * 48 + xshift, (y - 0.5) * 48 + yshift), r, 2: NEXT r
- LOCATE INT(((y - 0.5) * 48 + yshift) / 8 + 0.5), INT(((x - 0.5) * 48 + xshift) / 8 + 0.5) - INT(total / 10): COLOR 2, 2: PRINT total
- END IF
- END IF
- NEXT y
- NEXT x
- RETURN
- ShowFlipNumbers:
- t = 0
- FOR x = 1 TO 8
- FOR y = 1 TO 8
- IF (a(x, y) = 0) THEN
- GOSUB legal
- IF (legal$ = "yes") THEN
- t = t + 1
- IF p = 1 THEN c = 15: REM c = 15 means white stone colour
- IF p = 2 THEN c = 0: REM c = 0 means black stone colour
- FOR r = 19 TO 21 STEP 0.5: CIRCLE ((x - 0.5) * 48 + xshift, (y - 0.5) * 48 + yshift), r, c: NEXT r
- LOCATE INT(((y - 0.5) * 48 + yshift) / 8 + 0.5), INT(((x - 0.5) * 48 + xshift) / 8 + 0.5) - INT(total / 10): COLOR c, 2: PRINT total
- END IF
- END IF
- NEXT y
- NEXT x
- RETURN
- legal:
- legal$ = "yes"
- IF a(x, y) <> 0 THEN legal$ = "no": RETURN
- total = 0: m = 0
- FOR i = x - 1 TO x + 1
- FOR j = y - 1 TO y + 1
- IF (i >= 1 AND i <= 8 AND j >= 1 AND j <= 8) THEN
- IF a(i, j) = 3 - p THEN
- n = 1: m = m + 1: dx = i - x: dy = j - y: b(m, 1) = i: b(m, 2) = j
- FOR k = 1 TO 7
- IF (i + k * dx < 1 OR i + k * dx > 8 OR j + k * dy < 1 OR j + k * dy > 8) THEN
- m = m - n: n = 0
- END IF
- IF (i + k * dx >= 1 AND i + k * dx <= 8 AND j + k * dy >= 1 AND j + k * dy <= 8) THEN
- IF (a(i + k * dx, j + k * dy) = 0) THEN m = m - n: n = 0
- IF (a(i + k * dx, j + k * dy) = 3 - p AND n > 0) THEN n = n + 1: m = m + 1: b(m, 1) = i + k * dx: b(m, 2) = j + k * dy
- IF (a(i + k * dx, j + k * dy) = p AND n > 0) THEN total = total + n: n = 0
- END IF
- NEXT k
- END IF
- END IF
- NEXT j
- NEXT i
- IF (total = 0) THEN legal$ = "no"
- RETURN
- empty:
- xb = 1: yb = 1
- IF xshift < xb THEN xb = 8 * 48 + 1 + xshift
- IF yshift < yb THEN yb = 8 * 48 + 1 + yshift
- PAINT (xb, yb), 2
- FOR i = 0 TO 8 * 48 STEP 48
- LINE (i + xshift, 0 + yshift)-(i + xshift, 8 * 48 + yshift), 0
- LINE (0 + xshift, i + yshift)-(8 * 48 + xshift, i + yshift), 0
- NEXT i
- PAINT (xb, yb), 8, 0
- RETURN
- board:
- FOR i = 1 TO 8
- FOR j = 1 TO 8
- IF (a(i, j) <> 0) THEN
- IF a(i, j) = 1 THEN c = 15: REM c=15 represents white stone colour
- IF a(i, j) = 2 THEN c = 0: REM c=0 represents black stone colour
- CIRCLE ((i - 0.5) * 48 + xshift, (j - 0.5) * 48 + yshift), 20, c
- PAINT ((i - 0.5) * 48 + xshift, (j - 0.5) * 48 + yshift), c, c
- CIRCLE ((i - 0.5) * 48 + xshift, (j - 0.5) * 48 + yshift), 20, 15 - c
- END IF
- NEXT j
- NEXT i
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement