DECLARE FUNCTION XWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
DECLARE FUNCTION OWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
DECLARE SUB Winner (Lineup AS INTEGER)
DECLARE SUB ShowWin (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER)
DECLARE SUB GetUserSignal ()
DECLARE SUB EnableMouse (c%)
DECLARE SUB DrawSCREEN ()
DECLARE SUB xo (Row%, Col%, symbol%)
DIM SHARED False AS INTEGER, True AS INTEGER: True = NOT False
DIM SHARED SymbolBOX(6000) AS INTEGER '<---NOTE
DIM SHARED cH AS INTEGER: 'Cursor Position Horizontal
DIM SHARED cV AS INTEGER: 'Cursor Position Vertical
DIM SHARED click AS INTEGER: ' 0=no click, 1=left click, 2=right
' EnableMouse 1 = Turn cursor on, return coordinates
' EnableMouse 0 = Turn cursor off in order to draw stuff, etc.
DIM SHARED cC AS STRING: 'User pressed key
' GetUserSignal will set return cC or will return Click
DIM i AS INTEGER, j AS INTEGER, k AS INTEGER
DIM WhoWon AS INTEGER
DIM MadeAMove AS INTEGER, MovesMade AS INTEGER
' ----------------------------------------------------------
' Title Screen (Main Program)
' -----------------------------------------------------------
SCREEN 12
RANDOMIZE TIMER
DIM Command AS INTEGER, Hard AS INTEGER
GOSUB InitializeScreen
DO
DO: GetUserSignal: LOOP UNTIL click = 1
GOSUB FindClickedCommand
SELECT CASE Command
CASE 1:
Hard = False
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 2:
Hard = True
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 3:
GOSUB DoHelp
GOSUB InitializeScreen
CASE 4:
EXIT DO
END SELECT
LOOP
COLOR 7: CLS
SYSTEM
' ----------------------------------------------------------
' Game Screen
' -----------------------------------------------------------
DIM SHARED zX(9) AS INTEGER: ' Where all X's are placed
DIM SHARED zO(9) AS INTEGER: ' Where all O's are placed
DIM SHARED zE(9) AS INTEGER: ' Where empty squares are
DIM theRow AS INTEGER, theColumn AS INTEGER, theBox AS INTEGER
FindClickedPosition:
CONST Delta = 4
theRow = 0: theColumn = 0: theBox = 0
SELECT CASE cH
CASE IS < 170 + Delta: RETURN
CASE IS < 269 - Delta: theColumn = 1
CASE IS < 269 + Delta: RETURN
CASE IS < 368 - Delta: theColumn = 2
CASE IS < 368 + Delta: RETURN
CASE IS < 467 - Delta: theColumn = 3
CASE ELSE: RETURN
END SELECT
SELECT CASE cV
CASE IS < 91 + Delta: RETURN
CASE IS < 190 - Delta: theRow = 1
CASE IS < 190 + Delta: RETURN
CASE IS < 289 - Delta: theRow = 2
CASE IS < 289 + Delta: RETURN
CASE IS < 388 - Delta: theRow = 3
CASE ELSE: RETURN
END SELECT
theBox = (3 * (theRow - 1)) + theColumn
RETURN
' ----------------------------------------------------------
' Play Game
' -----------------------------------------------------------
PlayGame:
DrawSCREEN 'draw the screen and create X and O symbols.
DECLARE FUNCTION OWin% (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER, l AS INTEGER)
DECLARE SUB Winner (Lineup AS INTEGER)
DECLARE SUB ShowWin (b1 AS INTEGER, b2 AS INTEGER, b3 AS INTEGER)
DECLARE SUB GetUserSignal ()
DECLARE SUB EnableMouse (c%)
DECLARE SUB DrawSCREEN ()
DECLARE SUB xo (Row%, Col%, symbol%)
DIM SHARED False AS INTEGER, True AS INTEGER: True = NOT False
DIM SHARED SymbolBOX(6000) AS INTEGER '<---NOTE
DIM SHARED cH AS INTEGER: 'Cursor Position Horizontal
DIM SHARED cV AS INTEGER: 'Cursor Position Vertical
DIM SHARED click AS INTEGER: ' 0=no click, 1=left click, 2=right
' EnableMouse 1 = Turn cursor on, return coordinates
' EnableMouse 0 = Turn cursor off in order to draw stuff, etc.
DIM SHARED cC AS STRING: 'User pressed key
' GetUserSignal will set return cC or will return Click
DIM i AS INTEGER, j AS INTEGER, k AS INTEGER
DIM WhoWon AS INTEGER
DIM MadeAMove AS INTEGER, MovesMade AS INTEGER
' ----------------------------------------------------------
' Title Screen (Main Program)
' -----------------------------------------------------------
SCREEN 12
RANDOMIZE TIMER
DIM Command AS INTEGER, Hard AS INTEGER
GOSUB InitializeScreen
DO
DO: GetUserSignal: LOOP UNTIL click = 1
GOSUB FindClickedCommand
SELECT CASE Command
CASE 1:
Hard = False
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 2:
Hard = True
WhoWon = 0
GOSUB PlayGame
GOSUB ShowWhoWon
GOSUB InitializeScreen
CASE 3:
GOSUB DoHelp
GOSUB InitializeScreen
CASE 4:
EXIT DO
END SELECT
LOOP
COLOR 7: CLS
SYSTEM
' ----------------------------------------------------------
' Game Screen
' -----------------------------------------------------------
DIM SHARED zX(9) AS INTEGER: ' Where all X's are placed
DIM SHARED zO(9) AS INTEGER: ' Where all O's are placed
DIM SHARED zE(9) AS INTEGER: ' Where empty squares are
DIM theRow AS INTEGER, theColumn AS INTEGER, theBox AS INTEGER
FindClickedPosition:
CONST Delta = 4
theRow = 0: theColumn = 0: theBox = 0
SELECT CASE cH
CASE IS < 170 + Delta: RETURN
CASE IS < 269 - Delta: theColumn = 1
CASE IS < 269 + Delta: RETURN
CASE IS < 368 - Delta: theColumn = 2
CASE IS < 368 + Delta: RETURN
CASE IS < 467 - Delta: theColumn = 3
CASE ELSE: RETURN
END SELECT
SELECT CASE cV
CASE IS < 91 + Delta: RETURN
CASE IS < 190 - Delta: theRow = 1
CASE IS < 190 + Delta: RETURN
CASE IS < 289 - Delta: theRow = 2
CASE IS < 289 + Delta: RETURN
CASE IS < 388 - Delta: theRow = 3
CASE ELSE: RETURN
END SELECT
theBox = (3 * (theRow - 1)) + theColumn
RETURN
' ----------------------------------------------------------
' Play Game
' -----------------------------------------------------------
PlayGame:
DrawSCREEN 'draw the screen and create X and O symbols.