'=========================================================================== ' Subject: X'S AND O'S Date: Year of 1995 (00:00:00) ' Author: The ABC Programmer Code: QB, QBasic ' Keys: X'S,O'S,TIC,TAC,TOE Packet: GAMES.ABC '=========================================================================== '=================================================================== ' X's and O's by William Yu 1994 ' ' Yes the basic of all basic games, this is an EGA version of ' the popular X's and O's game (or TAC-TAC-TOE if you prefer). ' ' WARNING: Do not adopt this style of programming. ' I programmed this at school. It's really messy and ' again I don't document much of my stuff that is ' years old, because I don't know what half of it means. '=================================================================== DIM TITLE(650), TITLE2(650) DIM X(510), O(450) P1 = 0 P2 = 0 CLS SCREEN 9 PALETTE 15, 0 PALETTE 8, 0 COLOR 15 PRINT "Programmed by William Yu (C) 1994 Allrights Reserved" GET (0, 1)-(425, 12), TITLE COLOR 8 LOCATE 1, 1: PRINT "Programmed by William Yu (C) 1994 Allrights Reserved" GET (0, 1)-(425, 12), TITLE2 LOCATE 1, 1: PRINT SPACE$(80) LINE (1, 1)-(640, 16), 12, BF LINE (1, 1)-(639, 17), 4, B PALETTE 15, 31 PUT (98, 5), TITLE2 PUT (95, 3), TITLE, OR LINE (1, 50)-(319, 249), 10, B LINE (105, 50)-(105, 249), 10 LINE (210, 50)-(210, 249), 10 LINE (1, 117)-(319, 117), 10 LINE (1, 185)-(319, 185), 10 LINE (17, 60)-(91, 107), 12 LINE (18, 60)-(92, 107), 12 LINE (91, 60)-(17, 107), 12 LINE (90, 60)-(16, 107), 12 CIRCLE (158, 83), 30, 14 CIRCLE (158, 83), 29, 14 GET (17, 60)-(91, 110), X GET (124, 60)-(190, 106), O PUT (230, 60), X: PUT (21, 128), O: PUT (122, 128), X: PUT (233, 128), O: PUT (18, 193), X PUT (125, 193), O: PUT (228, 193), X COLOR 12: LOCATE 8, 50: PRINT "Play Computer" COLOR 11: LOCATE 9, 50: PRINT "Two Players" LOCATE 10, 50: PRINT "Instructions" LOCATE 11, 50: PRINT "Quit Tic-Tac-Toe" R = 8 MAINMENU: V$ = INKEY$ IF V$ = CHR$(13) THEN GOTO MAINENTER IF V$ = CHR$(0) + "P" THEN GOSUB MAINDOWN IF V$ = CHR$(0) + "H" THEN GOSUB MAINUP GOTO MAINMENU MAINUP: COLOR 11 GOSUB MAINAREA R = R - 1 COLOR 12 GOSUB MAINAREA RETURN MAINDOWN: COLOR 11 GOSUB MAINAREA R = R + 1 COLOR 12 GOSUB MAINAREA RETURN MAINAREA: IF R = 12 THEN R = 8 IF R = 7 THEN R = 11 IF R = 8 THEN LOCATE 8, 50: PRINT "Play Computer" IF R = 9 THEN LOCATE 9, 50: PRINT "Two Players" IF R = 10 THEN LOCATE 10, 50: PRINT "Instructions" IF R = 11 THEN LOCATE 11, 50: PRINT "Quit Tic-Tac-Toe" RETURN MAINENTER: IF R = 8 THEN GOTO PLAYCOMP IF R = 9 THEN GOTO TWOPLAYERS IF R = 10 THEN GOTO INSTRUCTIONS IF R = 11 THEN GOTO TICTACQUIT TWOPLAYERS: LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 9, B LINE (105, 50)-(105, 249), 9 LINE (210, 50)-(210, 249), 9 LINE (1, 117)-(319, 117), 9 LINE (1, 185)-(319, 185), 9 FOR X = 8 TO 11 LOCATE X, 50: PRINT SPACE$(20) NEXT X COLOR 10 LOCATE 5, 50: PRINT "PLAYER ONE PLAYER TWO" LINE (380, 70)-(570, 70), 14 LINE (478, 55)-(479, 100), 14, BF COLOR 12 LOCATE 7, 53: PRINT 0 LOCATE 7, 64: PRINT 0 PLAYER1$ = "X" PLAYER2$ = "O" GP = 0 PLAYXO: GP = GP + 1 LOCATE 12, 47: COLOR 10: PRINT "PLAYER ONE: "; : COLOR 13: PRINT PLAYER1$ LOCATE 13, 47: COLOR 2: PRINT "PLAYER TWO: "; : COLOR 13: PRINT PLAYER2$ LOCATE 6, 6: PRINT 1: LOCATE 6, 19: PRINT 2: LOCATE 6, 32: PRINT 3 LOCATE 11, 6: PRINT 4: LOCATE 11, 19: PRINT 5: LOCATE 11, 32: PRINT 6 LOCATE 16, 6: PRINT 7: LOCATE 16, 19: PRINT 8: LOCATE 16, 32: PRINT 9 IF PLAYER1$ = "X" THEN PLAYER = 1 ELSE PLAYER = 2 END IF CHOOSE: IF PLAYER = 1 THEN LOCATE 15, 45: COLOR 15: PRINT "PLAYER ONE" IF PLAYER = 2 THEN LOCATE 15, 45: COLOR 15: PRINT "PLAYER TWO" LOCATE 17, 45: COLOR 14: PRINT "Choose a square: "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO STATS IF PLAYER1$ = "X" AND PLAYER = 1 THEN GOTO SELSQUARE IF PLAYER1$ = "O" AND PLAYER = 1 THEN GOTO SELOSQUARE IF PLAYER2$ = "O" AND PLAYER = 2 THEN GOTO SELOSQUARE IF PLAYER2$ = "X" AND PLAYER = 2 THEN GOTO SELSQUARE SELSQUARE: SELECT CASE VAL(A$) CASE 1 IF SQUARE(1) = 1 THEN GOTO AGAIN PUT (18, 60), X, PSET SQUARE(1) = 1 X(1) = 1 CASE 2 IF SQUARE(2) = 2 THEN GOTO AGAIN PUT (124, 60), X, PSET SQUARE(2) = 2 X(2) = 2 CASE 3 IF SQUARE(3) = 3 THEN GOTO AGAIN PUT (230, 60), X, PSET SQUARE(3) = 3 X(3) = 3 CASE 4 IF SQUARE(4) = 4 THEN GOTO AGAIN PUT (18, 125), X, PSET SQUARE(4) = 4 X(4) = 4 CASE 5 IF SQUARE(5) = 5 THEN GOTO AGAIN PUT (124, 125), X, PSET SQUARE(5) = 5 X(5) = 5 CASE 6 IF SQUARE(6) = 6 THEN GOTO AGAIN PUT (230, 125), X, PSET SQUARE(6) = 6 X(6) = 6 CASE 7 IF SQUARE(7) = 7 THEN GOTO AGAIN PUT (18, 193), X, PSET SQUARE(7) = 7 X(7) = 7 CASE 8 IF SQUARE(8) = 8 THEN GOTO AGAIN PUT (124, 193), X, PSET SQUARE(8) = 8 X(8) = 8 CASE 9 IF SQUARE(9) = 9 THEN GOTO AGAIN PUT (230, 193), X, PSET SQUARE(9) = 9 X(9) = 9 CASE ELSE AGAIN: LOCATE 17, 45: COLOR 14: PRINT "Choose a square (1-9): "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO STATS GOTO SELSQUARE END SELECT IF X(1) = 1 AND X(2) = 2 AND X(3) = 3 THEN GOTO WINX IF X(4) = 4 AND X(5) = 5 AND X(6) = 6 THEN GOTO WINX IF X(7) = 7 AND X(8) = 8 AND X(9) = 9 THEN GOTO WINX IF X(1) = 1 AND X(4) = 4 AND X(7) = 7 THEN GOTO WINX IF X(2) = 2 AND X(5) = 5 AND X(8) = 8 THEN GOTO WINX IF X(3) = 3 AND X(6) = 6 AND X(9) = 9 THEN GOTO WINX IF X(1) = 1 AND X(5) = 5 AND X(9) = 9 THEN GOTO WINX IF X(3) = 3 AND X(5) = 5 AND X(7) = 7 THEN GOTO WINX IF SQUARE(1) = 1 AND SQUARE(2) = 2 AND SQUARE(3) = 3 AND SQUARE(4) = 4 AND SQUARE(5) = 5 AND SQUARE(6) = 6 AND SQUARE(7) = 7 AND SQUARE(8) = 8 AND SQUARE(9) = 9 THEN GOTO TIE IF PLAYER = 1 THEN PLAYER = 2: GOTO CHOOSE IF PLAYER = 2 THEN PLAYER = 1: GOTO CHOOSE SELOSQUARE: SELECT CASE VAL(A$) CASE 1 IF SQUARE(1) = 1 THEN GOTO AGAINO PUT (18, 60), O, PSET SQUARE(1) = 1 O(1) = 1 CASE 2 IF SQUARE(2) = 2 THEN GOTO AGAINO PUT (124, 60), O, PSET SQUARE(2) = 2 O(2) = 2 CASE 3 IF SQUARE(3) = 3 THEN GOTO AGAINO PUT (230, 60), O, PSET SQUARE(3) = 3 O(3) = 3 CASE 4 IF SQUARE(4) = 4 THEN GOTO AGAINO PUT (18, 125), O, PSET SQUARE(4) = 4 O(4) = 4 CASE 5 IF SQUARE(5) = 5 THEN GOTO AGAINO PUT (124, 125), O, PSET SQUARE(5) = 5 O(5) = 5 CASE 6 IF SQUARE(6) = 6 THEN GOTO AGAINO PUT (230, 125), O, PSET SQUARE(6) = 6 O(6) = 6 CASE 7 IF SQUARE(7) = 7 THEN GOTO AGAINO PUT (18, 193), O, PSET SQUARE(7) = 7 O(7) = 7 CASE 8 IF SQUARE(8) = 8 THEN GOTO AGAINO PUT (124, 193), O, PSET SQUARE(8) = 8 O(8) = 8 CASE 9 IF SQUARE(9) = 9 THEN GOTO AGAINO PUT (230, 193), O, PSET SQUARE(9) = 9 O(9) = 9 CASE ELSE AGAINO: LOCATE 17, 45: COLOR 14: PRINT "Choose a square (1-9): "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO STATS GOTO SELOSQUARE END SELECT IF O(1) = 1 AND O(2) = 2 AND O(3) = 3 THEN GOTO WINO IF O(4) = 4 AND O(5) = 5 AND O(6) = 6 THEN GOTO WINO IF O(7) = 7 AND O(8) = 8 AND O(9) = 9 THEN GOTO WINO IF O(1) = 1 AND O(4) = 4 AND O(7) = 7 THEN GOTO WINO IF O(2) = 2 AND O(5) = 5 AND O(8) = 8 THEN GOTO WINO IF O(3) = 3 AND O(6) = 6 AND O(9) = 9 THEN GOTO WINO IF O(1) = 1 AND O(5) = 5 AND O(9) = 9 THEN GOTO WINO IF O(3) = 3 AND O(5) = 5 AND O(7) = 7 THEN GOTO WINO IF SQUARE(1) = 1 AND SQUARE(2) = 2 AND SQUARE(3) = 3 AND SQUARE(4) = 4 AND SQUARE(5) = 5 AND SQUARE(6) = 6 AND SQUARE(7) = 7 AND SQUARE(8) = 8 AND SQUARE(9) = 9 THEN GOTO TIE IF PLAYER = 1 THEN PLAYER = 2: GOTO CHOOSE IF PLAYER = 2 THEN PLAYER = 1: GOTO CHOOSE INSTRUCTIONS: LOCATE 20: COLOR 13: PRINT "INSTRUCTIONS:" COLOR 15 LOCATE 21: PRINT "Use your arrow keys to select a square and place your X or O" LOCATE 22: PRINT "Place three X's or O's diagonally, vertically or horizontally to win" LOCATE 23: PRINT "To quit the game just press 'Q'" GOTO MAINMENU WINX: IF PLAYER1$ = "X" THEN P1 = P1 + 1 LOCATE 7, 53: COLOR 12: PRINT P1 LOCATE 10, 51: COLOR 12: PRINT "PLAYER ONE WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) ELSE P2 = P2 + 1 LOCATE 7, 64: COLOR 12: PRINT P2 LOCATE 10, 51: COLOR 12: PRINT "PLAYER TWO WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) END IF SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 9, B LINE (105, 50)-(105, 249), 9 LINE (210, 50)-(210, 249), 9 LINE (1, 117)-(319, 117), 9 LINE (1, 185)-(319, 185), 9 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO PLAYXO WINO: IF PLAYER1$ = "O" THEN P1 = P1 + 1 LOCATE 7, 53: COLOR 12: PRINT P1 LOCATE 10, 51: COLOR 12: PRINT "PLAYER ONE WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) ELSE P2 = P2 + 1 LOCATE 7, 64: COLOR 12: PRINT P2 LOCATE 10, 51: COLOR 12: PRINT "PLAYER TWO WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) END IF SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 9, B LINE (105, 50)-(105, 249), 9 LINE (210, 50)-(210, 249), 9 LINE (1, 117)-(319, 117), 9 LINE (1, 185)-(319, 185), 9 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO PLAYXO TIE: LOCATE 10, 55: COLOR 15: PRINT "IT'S A TIE!!!" WHILE INKEY$ = "": WEND LOCATE 10, 55: PRINT SPACE$(20) SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 9, B LINE (105, 50)-(105, 249), 9 LINE (210, 50)-(210, 249), 9 LINE (1, 117)-(319, 117), 9 LINE (1, 185)-(319, 185), 9 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO PLAYXO STATS: LINE (0, 50)-(640, 350), 0, BF LOCATE 6, 5: COLOR 13: PRINT "STATISTICS" GP = GP - 1 LOCATE 8, 10: COLOR 15: PRINT "GAMES PLAYED:"; GP IF GP = 0 THEN GP = 1 AVG1 = (P1 / GP) * 100 AVG2 = (P2 / GP) * 100 LOCATE 10, 10: COLOR 10: PRINT "NUMBER OF WINS FOR PLAYER ONE:"; P1; : COLOR 2: PRINT " PERCENTAGE:"; INT(AVG1); "%" LOCATE 11, 10: COLOR 11: PRINT "NUMBER OF WINS FOR PLAYER TWO:"; P2; : COLOR 3: PRINT " PERCENTAGE:"; INT(AVG2); "%" IF P1 > P2 THEN LOCATE 13, 10: COLOR 14: PRINT "PLAYER ONE HAS MORE WINS!!! CONGRADULATIONS!!!" IF P1 < P2 THEN LOCATE 13, 10: COLOR 14: PRINT "PLAYER TWO HAS MORE WINS!!! CONGRADULATIONS!!!" IF P1 = P2 THEN LOCATE 13, 10: COLOR 14: PRINT "HEY, WHAT'DA YA KNOW, IT'S A TIE!" WHILE INKEY$ = "": WEND GOTO TICTACQUIT PLAYCOMP: LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 10, B LINE (105, 50)-(105, 249), 10 LINE (210, 50)-(210, 249), 10 LINE (1, 117)-(319, 117), 10 LINE (1, 185)-(319, 185), 10 FOR X = 8 TO 11 LOCATE X, 50: PRINT SPACE$(20) NEXT X COLOR 10 LOCATE 5, 50: PRINT "PLAYER ONE COMPUTER" LINE (380, 70)-(570, 70), 14 LINE (478, 55)-(479, 100), 14, BF COLOR 12 LOCATE 7, 53: PRINT 0 LOCATE 7, 64: PRINT 0 PLAYER1$ = "X" PLAYER2$ = "O" GP = 0 COMPXO: GP = GP + 1 LOCATE 12, 47: COLOR 10: PRINT "PLAYER ONE: "; : COLOR 13: PRINT PLAYER1$ LOCATE 13, 47: COLOR 2: PRINT "COMPUTER: "; : COLOR 13: PRINT PLAYER2$ LOCATE 6, 6: PRINT 1: LOCATE 6, 19: PRINT 2: LOCATE 6, 32: PRINT 3 LOCATE 11, 6: PRINT 4: LOCATE 11, 19: PRINT 5: LOCATE 11, 32: PRINT 6 LOCATE 16, 6: PRINT 7: LOCATE 16, 19: PRINT 8: LOCATE 16, 32: PRINT 9 IF PLAYER1$ = "X" THEN PLAYER = 1 ELSE PLAYER = 2 END IF COMPCHOOSE: IF PLAYER = 1 THEN LOCATE 15, 45: COLOR 15: PRINT "PLAYER ONE " IF PLAYER = 2 THEN LOCATE 15, 45: COLOR 15: PRINT "COMPUTERS TURN" SLEEP 1 RANDOMIZE TIMER A = INT(RND * 9) + 1 IF X(1) = 1 OR X(3) = 3 OR X(7) = 7 OR X(9) = 9 THEN A = 5 IF X(2) = 2 AND X(3) = 3 AND SQUARE(1) <> 1 THEN A = 1 IF X(1) = 1 AND X(3) = 3 AND SQUARE(2) <> 2 THEN A = 2 IF X(1) = 1 AND X(2) = 2 AND SQUARE(3) <> 3 THEN A = 3 IF X(1) = 1 AND X(5) = 5 AND SQUARE(9) <> 9 THEN A = 9 IF X(9) = 9 AND X(5) = 5 AND SQUARE(1) <> 1 THEN A = 1 IF X(1) = 1 AND X(9) = 9 AND SQUARE(5) <> 5 THEN A = 5 IF X(2) = 2 AND X(5) = 5 AND SQUARE(8) <> 8 THEN A = 8 IF X(8) = 8 AND X(5) = 5 AND SQUARE(2) <> 2 THEN A = 2 IF X(2) = 2 AND X(8) = 8 AND SQUARE(5) <> 5 THEN A = 5 IF X(3) = 3 AND X(6) = 6 AND SQUARE(9) <> 9 THEN A = 9 IF X(9) = 9 AND X(6) = 6 AND SQUARE(3) <> 3 THEN A = 3 IF X(9) = 9 AND X(3) = 3 AND SQUARE(6) <> 6 THEN A = 6 IF X(1) = 1 AND X(4) = 4 AND SQUARE(7) <> 7 THEN A = 7 IF X(1) = 1 AND X(7) = 7 AND SQUARE(4) <> 4 THEN A = 4 IF X(4) = 4 AND X(7) = 7 AND SQUARE(1) <> 1 THEN A = 1 IF X(3) = 3 AND X(5) = 5 AND SQUARE(7) <> 7 THEN A = 7 IF X(5) = 5 AND X(7) = 7 AND SQUARE(3) <> 3 THEN A = 3 IF X(3) = 3 AND X(7) = 7 AND SQUARE(5) <> 5 THEN A = 5 IF X(4) = 4 AND X(5) = 5 AND SQUARE(6) <> 6 THEN A = 6 IF X(5) = 5 AND X(6) = 6 AND SQUARE(4) <> 4 THEN A = 4 IF X(6) = 6 AND X(4) = 4 AND SQUARE(5) <> 5 THEN A = 5 IF X(9) = 9 AND X(8) = 8 AND SQUARE(7) <> 7 THEN A = 7 IF X(8) = 8 AND X(7) = 7 AND SQUARE(9) <> 9 THEN A = 9 IF X(9) = 9 AND X(7) = 7 AND SQUARE(8) <> 8 THEN A = 8 IF O(2) = 2 AND O(3) = 3 AND SQUARE(1) <> 1 THEN A = 1 IF O(1) = 1 AND O(3) = 3 AND SQUARE(2) <> 2 THEN A = 2 IF O(1) = 1 AND O(2) = 2 AND SQUARE(3) <> 3 THEN A = 3 IF O(1) = 1 AND O(5) = 5 AND SQUARE(9) <> 9 THEN A = 9 IF O(9) = 9 AND O(5) = 5 AND SQUARE(1) <> 1 THEN A = 1 IF O(1) = 1 AND O(9) = 9 AND SQUARE(5) <> 5 THEN A = 5 IF O(2) = 2 AND O(5) = 5 AND SQUARE(8) <> 8 THEN A = 8 IF O(8) = 8 AND O(5) = 5 AND SQUARE(2) <> 2 THEN A = 2 IF O(2) = 2 AND O(8) = 8 AND SQUARE(5) <> 5 THEN A = 5 IF O(3) = 3 AND O(6) = 6 AND SQUARE(9) <> 9 THEN A = 9 IF O(9) = 9 AND O(6) = 6 AND SQUARE(3) <> 3 THEN A = 3 IF O(9) = 9 AND O(3) = 3 AND SQUARE(6) <> 6 THEN A = 6 IF O(1) = 1 AND O(4) = 4 AND SQUARE(7) <> 7 THEN A = 7 IF O(1) = 1 AND O(7) = 7 AND SQUARE(4) <> 4 THEN A = 4 IF O(4) = 4 AND O(7) = 7 AND SQUARE(1) <> 1 THEN A = 1 IF O(3) = 3 AND O(5) = 5 AND SQUARE(7) <> 7 THEN A = 7 IF O(5) = 5 AND O(7) = 7 AND SQUARE(3) <> 3 THEN A = 3 IF O(3) = 3 AND O(7) = 7 AND SQUARE(5) <> 5 THEN A = 5 IF O(4) = 4 AND O(5) = 5 AND SQUARE(6) <> 6 THEN A = 6 IF O(5) = 5 AND O(6) = 6 AND SQUARE(4) <> 4 THEN A = 4 IF O(6) = 6 AND O(4) = 4 AND SQUARE(5) <> 5 THEN A = 5 IF O(9) = 9 AND O(8) = 8 AND SQUARE(7) <> 7 THEN A = 7 IF O(8) = 8 AND O(7) = 7 AND SQUARE(9) <> 9 THEN A = 9 IF O(9) = 9 AND O(7) = 7 AND SQUARE(8) <> 8 THEN A = 8 A$ = STR$(A) IF PLAYER2$ = "X" THEN GOTO COMPSELSQUARE IF PLAYER2$ = "O" THEN GOTO COMPSELOSQUARE END IF LOCATE 17, 45: COLOR 14: PRINT "Choose a square: "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO COMPSTATS IF PLAYER1$ = "X" AND PLAYER = 1 THEN GOTO COMPSELSQUARE IF PLAYER1$ = "O" AND PLAYER = 1 THEN GOTO COMPSELOSQUARE COMPSELSQUARE: SELECT CASE VAL(A$) CASE 1 IF SQUARE(1) = 1 THEN GOTO COMPAGAIN PUT (18, 60), X, PSET SQUARE(1) = 1 X(1) = 1 CASE 2 IF SQUARE(2) = 2 THEN GOTO COMPAGAIN PUT (124, 60), X, PSET SQUARE(2) = 2 X(2) = 2 CASE 3 IF SQUARE(3) = 3 THEN GOTO COMPAGAIN PUT (230, 60), X, PSET SQUARE(3) = 3 X(3) = 3 CASE 4 IF SQUARE(4) = 4 THEN GOTO COMPAGAIN PUT (18, 125), X, PSET SQUARE(4) = 4 X(4) = 4 CASE 5 IF SQUARE(5) = 5 THEN GOTO COMPAGAIN PUT (124, 125), X, PSET SQUARE(5) = 5 X(5) = 5 CASE 6 IF SQUARE(6) = 6 THEN GOTO COMPAGAIN PUT (230, 125), X, PSET SQUARE(6) = 6 X(6) = 6 CASE 7 IF SQUARE(7) = 7 THEN GOTO COMPAGAIN PUT (18, 193), X, PSET SQUARE(7) = 7 X(7) = 7 CASE 8 IF SQUARE(8) = 8 THEN GOTO COMPAGAIN PUT (124, 193), X, PSET SQUARE(8) = 8 X(8) = 8 CASE 9 IF SQUARE(9) = 9 THEN GOTO COMPAGAIN PUT (230, 193), X, PSET SQUARE(9) = 9 X(9) = 9 CASE ELSE COMPAGAIN: IF PLAYER = 2 THEN LOCATE 15, 45: COLOR 15: PRINT "COMPUTERS TURN" RANDOMIZE TIMER A = INT(RND * 9) + 1 A$ = STR$(A) IF PLAYER2$ = "X" THEN GOTO COMPSELSQUARE IF PLAYER2$ = "O" THEN GOTO COMPSELOSQUARE END IF LOCATE 17, 45: COLOR 14: PRINT "Choose a square (1-9): "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO COMPSTATS GOTO COMPSELSQUARE END SELECT IF X(1) = 1 AND X(2) = 2 AND X(3) = 3 THEN GOTO COMPWINX IF X(4) = 4 AND X(5) = 5 AND X(6) = 6 THEN GOTO COMPWINX IF X(7) = 7 AND X(8) = 8 AND X(9) = 9 THEN GOTO COMPWINX IF X(1) = 1 AND X(4) = 4 AND X(7) = 7 THEN GOTO COMPWINX IF X(2) = 2 AND X(5) = 5 AND X(8) = 8 THEN GOTO COMPWINX IF X(3) = 3 AND X(6) = 6 AND X(9) = 9 THEN GOTO COMPWINX IF X(1) = 1 AND X(5) = 5 AND X(9) = 9 THEN GOTO COMPWINX IF X(3) = 3 AND X(5) = 5 AND X(7) = 7 THEN GOTO COMPWINX IF SQUARE(1) = 1 AND SQUARE(2) = 2 AND SQUARE(3) = 3 AND SQUARE(4) = 4 AND SQUARE(5) = 5 AND SQUARE(6) = 6 AND SQUARE(7) = 7 AND SQUARE(8) = 8 AND SQUARE(9) = 9 THEN GOTO COMPTIE IF PLAYER = 1 THEN PLAYER = 2: GOTO COMPCHOOSE IF PLAYER = 2 THEN PLAYER = 1: GOTO COMPCHOOSE COMPSELOSQUARE: SELECT CASE VAL(A$) CASE 1 IF SQUARE(1) = 1 THEN GOTO COMPAGAINO PUT (18, 60), O, PSET SQUARE(1) = 1 O(1) = 1 CASE 2 IF SQUARE(2) = 2 THEN GOTO COMPAGAINO PUT (124, 60), O, PSET SQUARE(2) = 2 O(2) = 2 CASE 3 IF SQUARE(3) = 3 THEN GOTO COMPAGAINO PUT (230, 60), O, PSET SQUARE(3) = 3 O(3) = 3 CASE 4 IF SQUARE(4) = 4 THEN GOTO COMPAGAINO PUT (18, 125), O, PSET SQUARE(4) = 4 O(4) = 4 CASE 5 IF SQUARE(5) = 5 THEN GOTO COMPAGAINO PUT (124, 125), O, PSET SQUARE(5) = 5 O(5) = 5 CASE 6 IF SQUARE(6) = 6 THEN GOTO COMPAGAINO PUT (230, 125), O, PSET SQUARE(6) = 6 O(6) = 6 CASE 7 IF SQUARE(7) = 7 THEN GOTO COMPAGAINO PUT (18, 193), O, PSET SQUARE(7) = 7 O(7) = 7 CASE 8 IF SQUARE(8) = 8 THEN GOTO COMPAGAINO PUT (124, 193), O, PSET SQUARE(8) = 8 O(8) = 8 CASE 9 IF SQUARE(9) = 9 THEN GOTO COMPAGAINO PUT (230, 193), O, PSET SQUARE(9) = 9 O(9) = 9 CASE ELSE COMPAGAINO: IF PLAYER = 2 THEN LOCATE 15, 45: COLOR 15: PRINT "COMPUTERS TURN" RANDOMIZE TIMER A = INT(RND * 9) + 1 A$ = STR$(A) IF PLAYER2$ = "X" THEN GOTO COMPSELSQUARE IF PLAYER2$ = "O" THEN GOTO COMPSELOSQUARE END IF LOCATE 17, 45: COLOR 14: PRINT "Choose a square (1-9): "; A$ = INPUT$(1) IF UCASE$(A$) = "Q" THEN GOTO COMPSTATS GOTO COMPSELOSQUARE END SELECT IF O(1) = 1 AND O(2) = 2 AND O(3) = 3 THEN GOTO COMPWINO IF O(4) = 4 AND O(5) = 5 AND O(6) = 6 THEN GOTO COMPWINO IF O(7) = 7 AND O(8) = 8 AND O(9) = 9 THEN GOTO COMPWINO IF O(1) = 1 AND O(4) = 4 AND O(7) = 7 THEN GOTO COMPWINO IF O(2) = 2 AND O(5) = 5 AND O(8) = 8 THEN GOTO COMPWINO IF O(3) = 3 AND O(6) = 6 AND O(9) = 9 THEN GOTO COMPWINO IF O(1) = 1 AND O(5) = 5 AND O(9) = 9 THEN GOTO COMPWINO IF O(3) = 3 AND O(5) = 5 AND O(7) = 7 THEN GOTO COMPWINO IF SQUARE(1) = 1 AND SQUARE(2) = 2 AND SQUARE(3) = 3 AND SQUARE(4) = 4 AND SQUARE(5) = 5 AND SQUARE(6) = 6 AND SQUARE(7) = 7 AND SQUARE(8) = 8 AND SQUARE(9) = 9 THEN GOTO COMPTIE IF PLAYER = 1 THEN PLAYER = 2: GOTO COMPCHOOSE IF PLAYER = 2 THEN PLAYER = 1: GOTO COMPCHOOSE COMPWINX: IF PLAYER1$ = "X" THEN P1 = P1 + 1 LOCATE 7, 53: COLOR 12: PRINT P1 LOCATE 10, 51: COLOR 12: PRINT "PLAYER ONE WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) ELSE P2 = P2 + 1 LOCATE 7, 64: COLOR 12: PRINT P2 LOCATE 10, 52: COLOR 12: PRINT "COMPUTER WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) END IF SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 10, B LINE (105, 50)-(105, 249), 10 LINE (210, 50)-(210, 249), 10 LINE (1, 117)-(319, 117), 10 LINE (1, 185)-(319, 185), 10 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO COMPXO COMPWINO: IF PLAYER1$ = "O" THEN P1 = P1 + 1 LOCATE 7, 53: COLOR 12: PRINT P1 LOCATE 10, 51: COLOR 12: PRINT "PLAYER ONE WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) ELSE P2 = P2 + 1 LOCATE 7, 64: COLOR 12: PRINT P2 LOCATE 10, 51: COLOR 12: PRINT "COMPUTER WINS!!!" WHILE INKEY$ = "": WEND LOCATE 10, 51: COLOR 12: PRINT SPACE$(25) END IF SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 10, B LINE (105, 50)-(105, 249), 10 LINE (210, 50)-(210, 249), 10 LINE (1, 117)-(319, 117), 10 LINE (1, 185)-(319, 185), 10 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO COMPXO COMPTIE: LOCATE 10, 55: COLOR 15: PRINT "IT'S A TIE!!!" WHILE INKEY$ = "": WEND LOCATE 10, 55: PRINT SPACE$(20) SWAP PLAYER1$, PLAYER2$ LINE (1, 50)-(319, 249), 0, BF LINE (1, 50)-(319, 249), 10, B LINE (105, 50)-(105, 249), 10 LINE (210, 50)-(210, 249), 10 LINE (1, 117)-(319, 117), 10 LINE (1, 185)-(319, 185), 10 FOR I = 1 TO 9 X(I) = 0 O(I) = 0 SQUARE(I) = 0 NEXT I GOTO COMPXO COMPSTATS: LINE (0, 50)-(640, 350), 0, BF LOCATE 6, 5: COLOR 13: PRINT "STATISTICS" GP = GP - 1 LOCATE 8, 10: COLOR 15: PRINT "GAMES PLAYED:"; GP IF GP = 0 THEN GP = 1 AVG1 = (P1 / GP) * 100 AVG2 = (P2 / GP) * 100 LOCATE 10, 10: COLOR 10: PRINT "NUMBER OF WINS FOR PLAYER ONE:"; P1; : COLOR 2: PRINT " PERCENTAGE:"; INT(AVG1); "%" LOCATE 11, 10: COLOR 11: PRINT "NUMBER OF WINS FOR COMPUTER: "; P2; : COLOR 3: PRINT " PERCENTAGE:"; INT(AVG2); "%" IF P1 > P2 THEN LOCATE 13, 10: COLOR 14: PRINT "PLAYER ONE HAS MORE WINS!!! CONGRADULATIONS!!!" IF P1 < P2 THEN LOCATE 13, 10: COLOR 14: PRINT "COMPUTER HAS MORE WINS!!! YOU LOSE, HA HA HA!!!" IF P1 = P2 THEN LOCATE 13, 10: COLOR 14: PRINT "HEY, WHAT'DA YA KNOW, IT'S A TIE!" WHILE INKEY$ = "": WEND TICTACQUIT: