|
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: 2560 (0xa00) Types: TextFile Names: »BAKGAM.BAS«
└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games └─ ⟦this⟧ »BAKGAM.BAS«
1 REM *** BAKGAM.BAS *** 2 POKE 1221,80 5 DIM B$(24,8) 10 DIM N$(2) 11 DIM C$(2) 12 INPUT"FIRST PLAYER'S NAME";N$(1) 14 INPUT"SECOND PLAYER'S NAME";N$(2) 16 GOSUB 1000 18 IF D1=D2 GOTO 16 20 IF D1>D2 THEN D=-1:T=1 25 IF D1<D2 THEN D=1:T=2 30 DIM A(25),P$(2) 33 P$(1)="WHITE" 34 C$(1)="B" 36 P$(2)="BLACK" 38 C$(2)="W" 40 A(1)=2:A(24)=-2:A(6)=-5:A(19)=5 45 A(8)=-3:A(17)=3:A(12)=5:A(13)=-5 50 FOR I=1 TO 24 55 FOR J=1 TO 8:B$(I,J)=" ":NEXT J 57 IF A(I)=0 GOTO 70 59 S$="W" 60 IF A(I)<0 THEN S$="B" 63 FOR J=1 TO ABS(A(I)) 65 B$(I,J)=S$ 67 NEXT J 70 NEXT I 75 PRINT -A(25);"ON BAR";TAB(20);N$(1);" BLACK" 76 PRINT" 1 2 3 4 5 6 7 8 9 10 11 12" 77 PRINT"-------------------------------------------------------" 78 FOR I=1 TO 8:Z=0 79 PRINT"** "; 80 FOR K=0 TO 6 STEP 6 81 FOR J=1 TO 5 200 PRINT B$(J+K,I);" ! "; 205 IF ABS(A(J+K))>I THEN Z=1 210 NEXT J 211 PRINT B$(K+6,I);" ** "; 212 IF ABS(A(K+6))>I THEN Z=1 216 NEXT K 220 PRINT 225 IF Z=0 GOTO 240 230 NEXT I 240 FOR I=8 TO 1 STEP -1 242 PRINT"** "; 245 FOR K=6 TO 0 STEP -6 250 FOR J=18 TO 14 STEP -1 260 PRINT B$(J+K,I);" ! "; 270 NEXT J 273 PRINT B$(13+K,I);" ** "; 276 NEXT K 280 PRINT 290 NEXT I 295 PRINT"------------------------------------------------------" 296 PRINT" 24 23 22 21 20 19 18 17 16 15 14 13" 297 PRINT A(0);"ON BAR";TAB(20);N$(2);" WHITE" 298 N=0:D=-D:T=3-T 299 PRINT N$(T);" YOUR DICE ARE";D1;D2;". INPUT YOUR MOVES" 300 IF D1=D2 THEN INPUT C:M=D1:GOTO 340 310 INPUT C,M 320 IF M=D1 GOTO 340 330 IF M<>D2 GOTO 570 340 IF A(50-25*T)=0 GOTO 360 350 IF C<>50-25*T GOTO 520 360 IF D*A(C)<1 GOTO 500 370 IF (C+D*M)*D<(25*T-25) GOTO 390 380 PRINT"BEARS A PIECE OFF" 385 GOTO 413 390 IF A(C+D*M)*D<-1 GOTO 440 393 IF A(C+D*M)*D>-1 GOTO 400 394 PRINT"THAT HITS A BLOT" 395 A(C+D*M)=0 397 A(25*T-25)=A(25*T-25)-D 400 REM 403 A(C+D*M)=A(C+D*M)+D 406 B$(C+D*M,ABS(A(C+D*M)))=C$(T) 410 IF ABS(C-12.5)>12 GOTO 414 413 B$(C,ABS(A(C)))=" " 414 A(C)=A(C)-D 415 N=N+1 420 IF N=4 GOTO 435 425 IF D1=D2 GOTO 300 430 IF N<>2 GOTO 300 435 GOSUB 1000 437 GOTO 75 440 PRINT"POINT";C+D*M;"IS BLOCKED.PLEASE ENTER A CORRECT MOVE" 450 GOTO 300 500 PRINT"YOU HAVE NO STONES ON POINT"C",PLEASE ENTER THE CORRECT MOVE" 510 GOTO 300 520 PRINT"YOU MUST MOVE OFF THE BAR FIRST" 530 GOTO 300 570 IF M=0 GOTO 435 575 PRINT"YOU MUST MOVE BY";D1;"OR";D2 580 GOTO 300 1000 D1=INT(RND(1)*6+1) 1010 D2=INT(RND(1)*6+1) 1020 RETURN «eof»