Qbasicnews.com

Full Version: Tic Tac Toe By John
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Here is Tic tac toe, my second program on this site. Due to complications, j2krei08's name will be seen less frequently (but I will still be around). But anywho, I ask for you to take this program and manipulate it until it is the best program ever seen by a Newbie.

Excuse the funky symbols around the title, there is supposed to be a double border and a shadow. Too bad I mainly work in DOS.

Code:
TOP:

'MAIN MENU SCREEN STARTS

SCREEN 0: WIDTH 80, 25
CLS
P% = 0
RANDOMIZE TIMER
LOCATE 1, 32: COLOR INT(RND * 15) + 1, 0: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍ»"
LOCATE 2, 32: COLOR INT(RND * 15) + 1, 0: PRINT "º TIC       º": LOCATE 2, 45: COLOR 8, 0: PRINT "±±"
LOCATE 3, 32: COLOR INT(RND * 15) + 1, 0: PRINT "º    TAC    Âº": LOCATE 3, 45: COLOR 8, 0: PRINT "±±"
LOCATE 4, 32: COLOR INT(RND * 15) + 1, 0: PRINT "º       TOE º": LOCATE 4, 45: COLOR 8, 0: PRINT "±±"
LOCATE 5, 32: COLOR INT(RND * 15) + 1, 0: PRINT "ÈÍÍÍÍÍÍÍÍÍÍͼ": LOCATE 5, 45: COLOR 8, 0: PRINT "±±"
LOCATE 6, 32: COLOR 8, 0: PRINT "±±±±±±±±±±±±±±±"
LOCATE 7, 32: COLOR 7, 0: PRINT "BY JOHN KREITLOW"
LOCATE 8, 34: PRINT "RADIUM-V, INC."
LOCATE 10, 28: PRINT "CREATION DATE 12/26/04"
PRINT
PRINT
PRINT "PRESS ENTER TO START A NEW GAME"
PRINT
PRINT "GAME KEYS:"
PRINT "PRESS `H' FOR HELP"
PRINT "PRESS `ESC' TO QUIT"
PRINT "PRESS `P' TO PAUSE"
FOR Q% = 1 TO 5
NEXT Q%
DO: N$ = INKEY$
IF N$ = CHR$(27) THEN GOTO QUIT
IF N$ = CHR$(104) OR N$ = CHR$(72) THEN GOSUB HELP
'MAIN MENU ENDS

LOOP UNTIL N$ = CHR$(13)
CLS
0
'WHAT I CALL CALIBRATION
A% = 0
B% = 0
C% = 0
D% = 0
E% = 0
F% = 0
G% = 0
H% = 0
I% = 0
J% = 0
K% = 0
L% = 106
M% = 66
P% = 1
1 SCREEN 13

'GRID LINES
LINE (0, 66)-(320, 66), 8
LINE (0, 132)-(320, 132), 8
LINE (106, 0)-(106, 200), 8
LINE (213, 0)-(213, 200), 8

'DRAWS THE X

IF A% = 1 THEN LINE (0, 0)-(106, 66): LINE (106, 0)-(0, 66)
IF B% = 1 THEN LINE (106, 0)-(212, 66): LINE (212, 0)-(106, 66)
IF C% = 1 THEN LINE (212, 0)-(320, 66): LINE (320, 0)-(212, 66)
IF D% = 1 THEN LINE (0, 66)-(106, 132): LINE (106, 66)-(0, 132)
IF E% = 1 THEN LINE (106, 66)-(212, 132): LINE (212, 66)-(106, 132)
IF F% = 1 THEN LINE (212, 66)-(320, 132): LINE (320, 66)-(212, 132)
IF G% = 1 THEN LINE (0, 132)-(106, 200): LINE (106, 132)-(0, 200)
IF H% = 1 THEN LINE (106, 132)-(212, 200): LINE (212, 132)-(106, 200)
IF I% = 1 THEN LINE (212, 132)-(320, 200): LINE (320, 132)-(212, 200)
        
'DRAWS THE O

IF A% = 2 THEN CIRCLE (53, 33), 39
IF B% = 2 THEN CIRCLE (159, 33), 39
IF C% = 2 THEN CIRCLE (265, 33), 39
IF D% = 2 THEN CIRCLE (53, 99), 39
IF E% = 2 THEN CIRCLE (159, 99), 39
IF F% = 2 THEN CIRCLE (265, 99), 39
IF G% = 2 THEN CIRCLE (53, 165), 39
IF H% = 2 THEN CIRCLE (159, 165), 39
IF I% = 2 THEN CIRCLE (265, 165), 39

'IF X'S LINED UP, GOTO WIN!

IF A% = 1 AND B% = 1 AND C% = 1 THEN GOTO WIN
IF A% = 1 AND E% = 1 AND I% = 1 THEN GOTO WIN
IF A% = 1 AND D% = 1 AND G% = 1 THEN GOTO WIN
IF B% = 1 AND E% = 1 AND H% = 1 THEN GOTO WIN
IF C% = 1 AND F% = 1 AND I% = 1 THEN GOTO WIN
IF C% = 1 AND E% = 1 AND G% = 1 THEN GOTO WIN
IF D% = 1 AND E% = 1 AND F% = 1 THEN GOTO WIN
IF G% = 1 AND H% = 1 AND I% = 1 THEN GOTO WIN

'IF O'S LINED UP, GOTO LOSE...

IF A% = 2 AND B% = 2 AND C% = 2 THEN GOTO LOSE
IF A% = 2 AND E% = 2 AND I% = 2 THEN GOTO LOSE
IF A% = 2 AND D% = 2 AND G% = 2 THEN GOTO LOSE
IF B% = 2 AND E% = 2 AND H% = 2 THEN GOTO LOSE
IF C% = 2 AND F% = 2 AND I% = 2 THEN GOTO LOSE
IF C% = 2 AND E% = 2 AND G% = 2 THEN GOTO LOSE
IF D% = 2 AND E% = 2 AND F% = 2 THEN GOTO LOSE
IF G% = 2 AND H% = 2 AND I% = 2 THEN GOTO LOSE

'CAT'S GAME

IF A% > 0 AND B% > 0 AND C% > 0 AND D% > 0 AND E% > 0 AND F% > 0 AND G% > 0 AND H% > 0 AND I% > 0 THEN GOTO CATGAME

'CURRENT X

LINE (J%, K%)-(L%, M%), 1
LINE (L%, K%)-(J%, M%), 1

N$ = INKEY$
IF N$ = CHR$(0) + "H" THEN GOTO UP
IF N$ = CHR$(0) + "P" THEN GOTO DOWN
IF N$ = CHR$(0) + "M" THEN GOTO RIGHT
IF N$ = CHR$(0) + "K" THEN GOTO LEFT
IF N$ = CHR$(32) THEN GOTO ENTER
IF N$ = CHR$(27) THEN GOTO QUIT
IF N$ = CHR$(104) OR N$ = CHR$(72) THEN GOSUB HELP
IF N$ = CHR$(80) OR N$ = CHR$(112) THEN GOSUB PAUSE
GOTO 1

UP:
LINE (J%, K%)-(L%, M%), 0
LINE (L%, K%)-(J%, M%), 0
K% = K% - 66
M% = M% - 66
IF K% < 0 THEN K% = K% + 66: M% = M% + 66
GOTO 1

DOWN:
LINE (J%, K%)-(L%, M%), 0
LINE (L%, K%)-(J%, M%), 0
K% = K% + 66
M% = M% + 66
IF K% > 132 THEN K% = K% - 66: M% = M% - 66
GOTO 1

LEFT:
LINE (J%, K%)-(L%, M%), 0
LINE (L%, K%)-(J%, M%), 0
J% = J% - 106
L% = L% - 106
IF J% < 0 THEN J% = J% + 106: L% = L% + 106
GOTO 1

RIGHT:
LINE (J%, K%)-(L%, M%), 0
LINE (L%, K%)-(J%, M%), 0
J% = J% + 106
L% = L% + 106
IF J% > 212 THEN J% = J% - 106: L% = L% - 106
GOTO 1

ENTER:

'IF THEY HIT ENTER, IT ANALYZES THE SITUATION

'IF ENTER WAS HIT AND THE SPACE IS TAKEN THEN RETURN

IF J% = 0 AND K% = 0 AND A% > 0 THEN GOTO 1
IF J% = 106 AND K% = 0 AND B% > 0 THEN GOTO 1
IF J% = 212 AND K% = 0 AND C% > 0 THEN GOTO 1
IF J% = 0 AND K% = 66 AND D% > 0 THEN GOTO 1
IF J% = 106 AND K% = 66 AND E% > 0 THEN GOTO 1
IF J% = 212 AND K% = 66 AND F% > 0 THEN GOTO 1
IF J% = 0 AND K% = 132 AND G% > 0 THEN GOTO 1
IF J% = 106 AND K% = 132 AND H% > 0 THEN GOTO 1
IF J% = 212 AND K% = 132 AND I% > 0 THEN GOTO 1

'SETS THE SQUARE AS OCCUPIED

IF J% = 0 AND K% = 0 AND A% <> (0 OR 2) THEN A% = 1
IF J% = 106 AND K% = 0 AND B% <> (0 OR 2) THEN B% = 1
IF J% = 212 AND K% = 0 AND C% <> (0 OR 2) THEN C% = 1
IF J% = 0 AND K% = 66 AND D% <> (0 OR 2) THEN D% = 1
IF J% = 106 AND K% = 66 AND E% <> (0 OR 2) THEN E% = 1
IF J% = 212 AND K% = 66 AND F% <> (0 OR 2) THEN F% = 1
IF J% = 0 AND K% = 132 AND G% <> (0 OR 2) THEN G% = 1
IF J% = 106 AND K% = 132 AND H% <> (0 OR 2) THEN H% = 1
IF J% = 212 AND K% = 132 AND I% <> (0 OR 2) THEN I% = 1

'I DON'T KNOW WHICH ONE IS USED, THIS OR THE PREVIOUS ONE

IF A% > 0 AND B% > 0 AND C% > 0 AND D% > 0 AND E% > 0 AND F% > 0 AND G% > 0 AND H% > 0 AND I% > 0 THEN GOTO CATGAME

COMPGO:

'COMPUTER'S TURN

O% = INT(RND * 9) + 1

'HERE'S THE "SMARTS" OF THE COMPUTER

IF A% = 1 AND B% = 1 AND C% = 0 THEN O% = 3
IF A% = 1 AND C% = 1 AND B% = 0 THEN O% = 2
IF B% = 1 AND C% = 1 AND A% = 0 THEN O% = 1

IF A% = 1 AND E% = 1 AND I% = 0 THEN O% = 9
IF A% = 1 AND I% = 1 AND E% = 0 THEN O% = 5
IF E% = 1 AND I% = 1 AND A% = 0 THEN O% = 1

IF A% = 1 AND D% = 1 AND G% = 0 THEN O% = 7
IF A% = 1 AND G% = 1 AND D% = 0 THEN O% = 4
IF D% = 1 AND G% = 1 AND A% = 0 THEN O% = 1

IF B% = 1 AND E% = 1 AND H% = 0 THEN O% = 8
IF B% = 1 AND H% = 1 AND E% = 0 THEN O% = 5
IF E% = 1 AND H% = 1 AND B% = 0 THEN O% = 2

IF C% = 1 AND F% = 1 AND I% = 0 THEN O% = 9
IF C% = 1 AND I% = 1 AND F% = 0 THEN O% = 6
IF F% = 1 AND I% = 1 AND C% = 0 THEN O% = 3

IF C% = 1 AND E% = 1 AND G% = 0 THEN O% = 7
IF C% = 1 AND G% = 1 AND E% = 0 THEN O% = 5
IF E% = 1 AND G% = 1 AND C% = 0 THEN O% = 3

IF G% = 1 AND H% = 1 AND I% = 0 THEN O% = 9
IF G% = 1 AND I% = 1 AND H% = 0 THEN O% = 8
IF H% = 1 AND I% = 1 AND G% = 0 THEN O% = 7

IF D% = 1 AND E% = 1 AND F% = 0 THEN O% = 6
IF D% = 1 AND F% = 1 AND E% = 0 THEN O% = 5
IF E% = 1 AND F% = 1 AND D% = 0 THEN O% = 4

'CORRECTS IF THE SQUARE IS TAKEN

IF O% = 1 AND A% > 0 THEN GOTO COMPGO
IF O% = 2 AND B% > 0 THEN GOTO COMPGO
IF O% = 3 AND C% > 0 THEN GOTO COMPGO
IF O% = 4 AND D% > 0 THEN GOTO COMPGO
IF O% = 5 AND E% > 0 THEN GOTO COMPGO
IF O% = 6 AND F% > 0 THEN GOTO COMPGO
IF O% = 7 AND G% > 0 THEN GOTO COMPGO
IF O% = 8 AND H% > 0 THEN GOTO COMPGO
IF O% = 9 AND I% > 0 THEN GOTO COMPGO

'SETS THE SQUARE

IF O% = 1 AND A% = 0 THEN A% = 2
IF O% = 2 AND B% = 0 THEN B% = 2
IF O% = 3 AND C% = 0 THEN C% = 2
IF O% = 4 AND D% = 0 THEN D% = 2
IF O% = 5 AND E% = 0 THEN E% = 2
IF O% = 6 AND F% = 0 THEN F% = 2
IF O% = 7 AND G% = 0 THEN G% = 2
IF O% = 8 AND H% = 0 THEN H% = 2
IF O% = 9 AND I% = 0 THEN I% = 2

GOTO 1

WIN:
LOCATE 13, 16: PRINT "YOU WIN!"
LOCATE 14, 13: PRINT "PRESS SPACE"
DO: LOOP UNTIL INKEY$ = CHR$(32)
GOTO TOP

LOSE:
LOCATE 13, 15: PRINT "YOU LOSE!"
LOCATE 14, 13: PRINT "PRESS SPACE"
DO: LOOP UNTIL INKEY$ = CHR$(32)
GOTO TOP

CATGAME:
LOCATE 13, 13: PRINT "CAT'S GAME!"
LOCATE 14, 13: PRINT "PRESS SPACE"
DO: LOOP UNTIL INKEY$ = CHR$(32)
GOTO TOP

PAUSE:
LOCATE 13, 18: PRINT "PAUSED!"
LOCATE 14, 12: PRINT "SPACE TO CONTINUE"
DO: LOOP UNTIL INKEY$ = CHR$(32)
CLS
RETURN
'-----------------------------------------------------------------------------

QUIT:
END

HELP:

'HELP SCREEN

SCREEN 0: WIDTH 80, 25
CLS
PRINT "HELP:"
PRINT
PRINT "To select a square, use the arrow keys to move."
PRINT "Then, press the SPACEBAR to place your X on the square."
PRINT "Try to get 3 X's in a row, from one edge to the other either"
PRINT "Horizontally, vertically, or diagonally.  Watch out, though!  The"
PRINT "computer has a mind of its own and can block your move.  Try to outsmart"
PRINT "the computer and win.  Good luck!"
PRINT
PRINT "You are the blue X.  That is your current area.  You cannot place your X"
PRINT "over any space that either already has an X or an O.  If you cannot find"
PRINT "the blue X on the board, simply move it around and it will show itself."
PRINT
PRINT "PRESS ANY KEY TO RETURN"
DO: LOOP UNTIL INKEY$ > CHR$(0)

'FOR SCREEN ISSUES:
IF P% = 0 THEN GOTO TOP
IF P% = 1 THEN RETURN
Farewell, hope things turn out well.

Meg is not Mac, Mac is not Meg.


Hope you come back sometime, and post, maybe under a new nickname?