home *** CD-ROM | disk | FTP | other *** search
- REM---------------------------------------------------------
- REM T I C T A C T O E
- REM
- REM---------------------------------------------------------
-
- REM JUNE 7, 1977
-
- PRINT:PRINT:PRINT:PRINT
- PRINT TAB(10);"WHAT IS YOUR NAME ";
- INPUT NAME$
- PRINT:PRINT
- PRINT TAB(10);"WELCOME, ";NAME$;", TO. . ."
- PRINT:PRINT:PRINT
- RANDOMIZE
- PRINT TAB(10);" T I C T A C T O E"
- PRINT TAB(10);"-----------------------------"
- PRINT:PRINT:PRINT
- DIM C(11)
- DIM D(11)
- FOR K = 1 TO 11
- READ C(K), D(K)
- NEXT K
- 3744 REM
- PRINT TAB(10);"DO YOU NEED INSTRUCTIONS, ";NAME$;
- INPUT ANS$
- IF LEFT$(ANS$,1)="N" THEN GOTO 1200
- IF LEFT$(ANS$,1)<>"Y" THEN \
- PRINT TAB(10);"I DON'T UNDERSTAND YOU, PLEASE TRY AGAIN." :\
- GOTO 3744
- PRINT:PRINT
- PRINT TAB(10);"TO ENTER YOUR MOVE YOU MUST TYPE IN THE ROW"
- PRINT TAB(10);"AND COLUMN NUMBER OF THE SQUARE THAT YOU WISH"
- PRINT TAB(10);"TO FILL. THE NUMBERS MUST BE SEPARATED WITH A"
- PRINT TAB(10);"COMMA. I WILL MARK THOSE SQUARES WITH THE"
- PRINT TAB(10);"WORD: 'YOU'. WHEN I FILL A SQUARE, I WILL PUT"
- PRINT TAB(10);"THE WORD: 'ME' IN IT. REMEMBER THAT ROWS ARE"
- PRINT TAB(10);"HORIZONTAL AND COLUMNS ARE VERTICAL."
- PRINT
- PRINT TAB(10);" GOOD LUCK!"
- PRINT
- 1200 REM---
- PRINT
- PRINT
- PRINT TAB(15);" * *"
- PRINT TAB(15);" 1,1 * 1,2 * 1,3"
- PRINT TAB(15);" * *"
- PRINT TAB(15);"*****************"
- PRINT TAB(15);" * *"
- PRINT TAB(15);" 2,1 * 2,2 * 2,3"
- PRINT TAB(15);" * *"
- PRINT TAB(15);"*****************"
- PRINT TAB(15);" * *"
- PRINT TAB(15);" 3,1 * 3,2 * 3,3"
- PRINT TAB(15);" * *"
- PRINT:PRINT:PRINT
- DIM B(9)
- DIM A(3,3)
- 250 PRINT
- PRINT TAB(10);"HERE WE GO. . ."
- PRINT:PRINT
- FOR J = 1 TO 3
- FOR I = 1 TO 3
- LET A(I,J) = 0
- NEXT I
- LET I = I - 1
- NEXT J
- LET J = J - 1
- LET Z = 0
- 330 REM
- PRINT TAB(5);"WHAT IS YOUR MOVE ";
- INPUT R,CX
- PRINT
- IF R<1 OR R>3 THEN \
- PRINT TAB(7);"ROW IS INVALID NUMBER. TRY AGAIN." :\
- GOTO 330
- IF CX<0 OR CX>3 THEN \
- PRINT TAB(7);"COLUMN IS INVALID NUMBER. TRY AGAIN." :\
- GOTO 330
- IF A(R,CX) <> 0 THEN \
- PRINT TAB(7);"THAT SQUARE IS ALREADY TAKEN. TRY AGAIN." :\
- GOTO 330
- LET A(R,CX) = -1
- GOSUB 1660
- IF Z = 1 THEN GOTO 2070
- REMARK MACHINE MOVE ......
- GOSUB 1100
- REMARK TEST FOR WIN ......
- GOSUB 1660
- IF Z = 0 THEN 650
- REM PRINT GAME BOARD
- 490 PRINT
- FOR K = 1 TO 3
- LET BX = A(K,1)
- LET DX = A(K,2)
- LET F = A(K,3)
- GOSUB 840
- IF K > 2 THEN 570
- PRINT TAB(5);"***************"
- 570 NEXT K
- LET K = K - 1
- PRINT
- IF Z <> 0 THEN 2070
- GO TO 330
- 650 LET T2 = 0
- FOR J = 1 TO 3
- FOR I = 1 TO 3
- IF A(I,J) <> 0 THEN 700
- LET T2 = T2 + 1
- 700 NEXT I
- LET I = I - 1
- NEXT J
- LET J = J - 1
- IF T2 > 0 THEN 750
- 730 GOSUB 1340
- GO TO 490
- 750 IF T2 > 1 THEN 490
- FOR J = 1 TO 8
- IF B(J) = -2 THEN 800
- NEXT J
- LET J = J - 1
- GO TO 730
- 800 GOSUB 2000
- GO TO 490
- REM PRINT TIC-TAC-TOE BOARD ROW....
- REM
- 840 IF BX <> 0 THEN 910
- PRINT TAB(5);
- PRINT " * ";
- 860 IF DX <> 0 THEN 940
- PRINT " * ";
- 880 IF F <> 0 THEN 970
- PRINT " "
- 900 GO TO 1070
- 910 IF BX > 0 THEN 1000
- PRINT TAB(5);
- PRINT "YOU * ";
- GO TO 860
- 940 IF DX > 0 THEN 1020
- PRINT "YOU * ";
- GO TO 880
- 970 IF F > 0 THEN 1040
- PRINT "YOU"
- GO TO 900
- 1000 REM
- PRINT TAB(5);
- PRINT "ME * ";
- GO TO 860
- 1020 PRINT "ME * ";
- GO TO 880
- 1040 PRINT "ME "
- GO TO 900
- REM PRINT LEGENDS..
- 1070 PRINT TAB(5);" * * "
- RETURN
- REM PROGRAM TO MAKE MOVE FOR THE MACHINE....
- 1100 LET M=INT(3.33*RND)
- 1110 LET N = INT(3.33333*RND)
- IF M = 0 THEN 1100
- IF M > 3 THEN 1100
- IF N = 0 THEN 1110
- IF N > 3 THEN 1110
- LET C(2) = M
- LET D(2) = N
- LET C(3) = N
- LET D(3) = M
- FOR I = 1 TO 8
- IF B(I) > 1 THEN 1370
- NEXT I
- LET I = I - 1
- FOR I = 1 TO 8
- IF B(I) < -1 THEN 1370
- NEXT I
- LET I = I - 1
- IF R+CX = 0 THEN 1550
- FOR K = 1 TO 11
- LET I = C(K)
- LET J = D(K)
- IF A(I,J) <> 0 THEN 1330
- LET A(I,J) = 1
- GO TO 1360
- 1330 NEXT K
- LET K = K - 1
- 1340 REM-----TIE
- PRINT:PRINT:PRINT
- PRINT TAB(15);"TIE GAME!"
- PRINT:PRINT
- LET Z = 3
- 1360 RETURN
- 1370 IF I > 3 THEN 1440
- FOR J = 1 TO 3
- IF A(I,J) = 0 THEN 1420
- NEXT J
- LET J = J - 1
- GO TO 1360
- 1420 LET A(I,J) = 1
- GO TO 1360
- 1440 IF I > 6 THEN 1510
- FOR J = 1 TO 3
- IF A(J,I-3) = 0 THEN 1490
- NEXT J
- LET J = J - 1
- GO TO 1360
- 1490 LET A(J,I-3) = 1
- GO TO 1360
- 1510 IF I > 7 THEN 1550
- FOR J = 1 TO 3
- IF A(J,J) = 0 THEN 1590
- NEXT J
- LET J = J - 1
- 1550 IF A(1,3) = 0 THEN 1610
- IF A(3,1) = 0 THEN 1630
- LET A(2,2) = 1
- GO TO 1360
- 1590 LET A(J,J) = 1
- GO TO 1360
- 1610 LET A(1,3) = 1
- GO TO 1360
- 1630 LET A(3,1) = 1
- GO TO 1360
- REM PROGRAM TO TEST FOR GAME WINNER ....
- 1660 LET T1 = 0
- FOR J = 1 TO 9
- LET B(J) = 0
- NEXT J
- LET J = J - 1
- FOR J = 1 TO 3
- FOR I = 1 TO 3
- IF A(J,1) <> A(J,I) THEN 1750
- NEXT I
- LET I = I - 1
- LET T1 = A(J,I)
- 1750 NEXT J
- LET J = J - 1
- FOR J = 1 TO 3
- FOR I = 1 TO 3
- IF A(1,J) <> A(I,J) THEN 1810
- NEXT I
- LET I = I - 1
- LET T1 = A(I,J)
- 1810 NEXT J
- LET J = J - 1
- IF A(1,1) = A(3,3) THEN 1930
- 1830 IF A(3,1) = A(1,3) THEN 1970
- 1840 IF T1 <> 0 THEN 1990
- 1850 FOR J = 1 TO 3
- FOR I = 1 TO 3
- LET B(J) = B(J) + A(J,I)
- LET B(J+3) = B(J+3)+A(I,J)
- NEXT I
- LET I = I - 1
- NEXT J
- LET J = J - 1
- LET B(7) = A(1,1) + A(2,2) + A(3,3)
- RETURN
- 1930 IF A(2,2) = A(3,3) THEN 1950
- GO TO 1830
- 1950 LET T1 = A(2,2)
- GO TO 1840
- 1970 IF A(2,2) = A(1,3) THEN 1950
- GO TO 1840
- 1990 IF T1 > 0 THEN 2030
- 2000 REM-----PLAYER WINS
- PRINT:PRINT:PRINT
- PRINT TAB(15);CHR$(7);"YOU ARE THE WINNER!!"
- PRINT TAB(15);"----------------------"
- PRINT:PRINT
- LET Z = 1
- GO TO 1850
- 2030 REM-----COMPUTER WINS
- PRINT:PRINT:PRINT
- PRINT TAB(15);"I WIN THIS GAME! NICE TRY."
- PRINT:PRINT
- LET Z = 2
- GO TO 1850
- REM END OF TEST WINNER PROGRAM....
- 2070 REM-----ONE MORE TIME?
- PRINT:PRINT
- IF Z=1 THEN \
- PRINT TAB(15);"GOOD GAME! ";NAME$:\
- PRINT TAB(15);"WANT TO TRY TO BEAT ME AGAIN"; :\
- GOTO 2083
- IF Z=2 THEN \
- PRINT TAB(15);"WOULD YOU LIKE ANOTHER CHANCE TO WIN"; :\
- GOTO 2083
- IF Z=3 THEN \
- PRINT TAB(15);"WANT TO TRY ONE MORE"; :\
- GOTO 2083
- 2083 REM
- INPUT ANS$
- IF LEFT$(ANS$,1)="Y" THEN \
- GOTO 250
- IF LEFT$(ANS$,1)<>"N" THEN \
- PRINT TAB(15);"I CAN'T FIGURE OUT WHAT YOU SAID." :\
- PRINT TAB(15);"ENTER YES OR NO, PLEASE." :\
- GOTO 2083
- PRINT:PRINT:PRINT
- PRINT TAB(20);"THANKS FOR PLAYING WITH ME, ";NAME$
- PRINT:PRINT
- STOP
- data 2,2,0,0,0,0,1,1,3,3,1,3,3,1,1,2,3,2,2,3,2,1
- END
-