One more game!
This commit is contained in:
parent
6b9771071e
commit
a398656dca
1 changed files with 127 additions and 0 deletions
127
tictactoe/main.bas
Normal file
127
tictactoe/main.bas
Normal file
|
@ -0,0 +1,127 @@
|
|||
DIM CELLCOORDS(3,3,2) AS INTEGER
|
||||
DIM CELLS(3,3,2) AS BOOLEAN
|
||||
|
||||
SUB DRAWCROSS(X AS INTEGER, Y AS INTEGER, SIZE AS INTEGER)
|
||||
SETCOLOR 205,90,22
|
||||
DRAWLINE X+10, Y+10, X+10+SIZE, Y+10+SIZE
|
||||
DRAWLINE X+10+SIZE, Y+10, X+10, Y+10+SIZE
|
||||
END SUB
|
||||
|
||||
FUNCTION ISWINNER(PLAYER AS INTEGER) AS BOOLEAN
|
||||
DIM VERT, HORIZ, DIAG1, DIAG2 AS BOOLEAN
|
||||
DIM VI, HI AS INTEGER
|
||||
|
||||
FOR VI=1 TO 3
|
||||
IF NOT VERT THEN
|
||||
VERT = CELLS(1,VI,PLAYER) AND CELLS(2,VI,PLAYER) AND CELLS(3,VI,PLAYER)
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
FOR HI=1 TO 3
|
||||
IF NOT HORIZ THEN
|
||||
HORIZ = CELLS(HI,1,PLAYER) AND CELLS(HI,2,PLAYER) AND CELLS(HI,3,PLAYER)
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
DIAG1 = CELLS(1,1,PLAYER) AND CELLS(2,2, PLAYER) AND CELLS(3,3,PLAYER)
|
||||
DIAG2 = CELLS(1,3,PLAYER) AND CELLS(2,2,PLAYER) AND CELLS(3,1,PLAYER)
|
||||
|
||||
ISWINNER = (VERT OR HORIZ OR DIAG1 OR DIAG2)
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION ISFILLED() AS BOOLEAN
|
||||
DIM I, J AS INTEGER
|
||||
DIM FILLED AS BOOLEAN
|
||||
FILLED=TRUE
|
||||
FOR I=1 TO 3
|
||||
FOR J=1 TO 3
|
||||
IF (NOT CELLS(I, J, 1)) AND (NOT CELLS(I, J, 2)) THEN
|
||||
FILLED=FALSE
|
||||
END IF
|
||||
END FOR
|
||||
END FOR
|
||||
ISFILLED=FILLED
|
||||
END FUNCTION
|
||||
|
||||
SUB MAIN
|
||||
|
||||
DIM W, H, SIZE AS INTEGER
|
||||
DIM I, J, K AS INTEGER
|
||||
DIM COL, ROW AS INTEGER
|
||||
DIM QUEUE AS BOOLEAN
|
||||
DIM TCHD, TCHX, TCHY AS INTEGER
|
||||
DIM GAMEOVER AS BOOLEAN
|
||||
|
||||
GRAPHICS
|
||||
|
||||
W = SCREENWIDTH()
|
||||
H = SCREENHEIGHT()
|
||||
SIZE = 100
|
||||
|
||||
FOR I=1 TO 3
|
||||
FOR J=1 TO 3
|
||||
CELLCOORDS(I, J, 1) = INTEGER(DOUBLE(W/2)-DOUBLE(SIZE)*1.5)+(SIZE*(I-1))
|
||||
CELLCOORDS(I, J, 2) = INTEGER(DOUBLE(H/2)-DOUBLE(SIZE)*1.5)+(SIZE*(J-1))
|
||||
END FOR
|
||||
END FOR
|
||||
|
||||
WHILE NOT GAMEOVER
|
||||
|
||||
SETCOLOR 70, 70, 70
|
||||
CLS
|
||||
|
||||
SETCOLOR 255, 255, 255
|
||||
FOR I=1 TO 3
|
||||
FOR J=1 TO 3
|
||||
DRAWRECT CELLCOORDS(I, J, 1), CELLCOORDS(I, J, 2), SIZE, SIZE
|
||||
END FOR
|
||||
END FOR
|
||||
|
||||
TCHD = TOUCHDOWN()
|
||||
TCHX = (TCHD / 65536) & 0x0000ffff
|
||||
TCHY = TCHD & 0x0000ffff
|
||||
|
||||
FOR I=1 TO 3
|
||||
FOR J=1 TO 3
|
||||
IF TCHX > CELLCOORDS(I, J, 1)-1 AND TCHX < CELLCOORDS(I, J, 1)+SIZE AND TCHY > CELLCOORDS(I, J, 2)-1 AND TCHY < CELLCOORDS(I, J, 2)+SIZE AND (NOT CELLS(I, J, 1)) AND (NOT CELLS(I, J, 2)) THEN
|
||||
IF NOT QUEUE THEN
|
||||
CELLS(I, J, 1) = TRUE
|
||||
ELSEIF QUEUE THEN
|
||||
CELLS(I, J, 2) = TRUE
|
||||
END IF
|
||||
QUEUE = NOT QUEUE
|
||||
END IF
|
||||
END FOR
|
||||
END FOR
|
||||
|
||||
FOR I=1 TO 3
|
||||
FOR J=1 TO 3
|
||||
IF CELLS(I, J, 1) THEN
|
||||
DRAWCROSS CELLCOORDS(I, J, 1), CELLCOORDS(I, J, 2), SIZE-SIZE/5
|
||||
ELSEIF CELLS(I, J, 2) THEN
|
||||
SETCOLOR 50, 90, 170
|
||||
DRAWCIRCLE (CELLCOORDS(I, J, 1)+SIZE/2), (CELLCOORDS(I, J, 2)+SIZE/2), (SIZE-(SIZE/5))/2
|
||||
END IF
|
||||
END FOR
|
||||
END FOR
|
||||
|
||||
REPAINT
|
||||
SLEEP 50
|
||||
|
||||
IF ISWINNER(1) THEN
|
||||
SLEEP 100
|
||||
ALERT "[X] PLAYER 1 IS WINNER", "GAME OVER", "OK","","", TRUE
|
||||
GAMEOVER = TRUE
|
||||
ELSEIF ISWINNER(2) THEN
|
||||
SLEEP 100
|
||||
ALERT "[O] PLAYER 2 IS WINNER", "GAME OVER", "OK","","", TRUE
|
||||
GAMEOVER = TRUE
|
||||
ELSEIF ISFILLED() THEN
|
||||
SLEEP 100
|
||||
ALERT "GAME OVER", "", "OK","","", TRUE
|
||||
GAMEOVER=TRUE
|
||||
END IF
|
||||
|
||||
END WHILE
|
||||
|
||||
END SUB
|
Loading…
Add table
Add a link
Reference in a new issue