|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2176 (0x880) Types: TextFile Names: »GOMOKO.BAS«
└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games └─ ⟦this⟧ »GOMOKO.BAS«
1 REM PROGRAM GOMOKO.BAS 10 DIM A(19,19) 20 PRINT :PRINT "WELCOME TO THE ORIENTAL GAME OF GOMOKU" 30 PRINT :PRINT "THE GAME IS PLAYED ON AN N BY N GRID OF A SIZE" 40 PRINT "THAT YOU SPECIFY. DURING YOUR PLAY, YOU MAY COVER ONE GRID" 50 PRINT "INTERSECTION WITH A MARKER. THE OBJECT OF THE GAME IS TO GET" 60 PRINT "5 ADJACENT MARKERS IN A ROW -- HORIZONTALLY, VERTICALLY, OR" 70 PRINT "ALONG EITHER DIAGONAL. ON THE BOARD DIAGRAM, YOUR MOVES ARE" 80 PRINT "MARKED WITH A '1', AND THE COMPUTER MOVES WITH A '2'." 90 PRINT :PRINT "THE COMPUTER DOES NOT KEEP TRACK OF WHO HAS WON." 100 PRINT "TO END THE GAME, TYPE '-1,-1' FOR YOUR MOVE":PRINT 110 PRINT "WHAT IS YOUR BOARD SIZE (MIN =7, MAX = 19)";:INPUT N 120 IF N>6 THEN 140 130 GOTO 150 140 IF N<20 THEN 170 150 PRINT "I SAID, THE MINIMUM SIZE IS 7, AND THE MAXIMUM IS 19.":GOTO 110 160 FOR I=1 TO N:FOR J=1 TO N:A(X,Y)=0:NEXT J:NEXT I 170 PRINT :PRINT "WE ALTERNATE MOVES. YOU GO FIRST...":PRINT 180 PRINT "YOUR PLAY (I,J)";:INPUT I,J 190 IF I=-1 THEN 520 200 X=I:Y=J:GOSUB 460 :IF L=1 THEN 220 210 PRINT "ILLEGAL MOVE. TRY AGAIN...":GOTO 180 220 IF A(I,J)=0 THEN 240 230 PRINT "SQUARE OCCUPIED. TRY AGAIN...":GOTO 180 240 A(I,J)=1 250 REM *** COMPUTER TRIES AN 'INTELLIGENT' MOVE *** 260 FOR E=-1 TO 1:FOR F=-1 TO 1:IF E+F-E*F=0 THEN 300 270 LET X=I+E:LET Y=J+F:GOSUB 460 280 IF L=0 THEN 300 290 IF A(X,Y)=1 THEN 350 300 NEXT F:NEXT E 310 REM *** COMPUTER TRIES A RANDOM MOVE *** 320 LET X=INT(N*RND)+1:LET Y=INT(RND)+1:GOSUB 460 :IF L=0 THEN 320 330 IF A(X,Y)<>0 THEN 320 340 A(X,Y)=2:GOSUB 390 :GOTO 180 350 X=I-E:Y=J-F:GOSUB 460 360 IF L=0 THEN 320 370 GOTO 330 380 REM *** PRINT THE BOARD *** 390 FOR I=1 TO N:FOR J=1 TO N:PRINT A(I,J); 400 NEXT J 410 PRINT 420 NEXT I 430 PRINT 440 RETURN 450 REM *** CHECK WHETHER MOVE IS LEGAL *** 460 L=1:IF X<1 THEN 510 470 IF X>N THEN 510 480 IF Y<1 THEN 510 490 IF Y>N THEN 510 500 RETURN 510 LET L=0:RETURN 520 PRINT :PRINT "THANKS FOR THE GAME!!" 530 PRINT:PRINT "DO YOU WANT TO PLAY AGAIN (Yes/No) ";:INPUT; Q$ 540 IF Q$="Y" THEN 110 545 PRINT 550 PRINT"BYE" 560 RUN "MENU" 570 END «eof»