home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG003.ARK
/
TTT.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
7KB
|
302 lines
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