DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦602ce7f54⟧ TextFile

    Length: 2176 (0x880)
    Types: TextFile
    Names: »GOMOKO.BAS«

Derivation

└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games
    └─ ⟦this⟧ »GOMOKO.BAS« 

TextFile

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»