01-26-2005, 06:26 AM
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.
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