BOXGAME_[ZX81 BASIC TEXT CODES] - Notepad - Bob Mockford ...

5 downloads 761 Views 16KB Size Report
BOXGAME (The Pyramid Box Game) for ZX81 with 16K expansion. A Bob Mockford program. Line 11 has 8 spaces. Line 31 has 3 spaces at the end, line 32 hasĀ ...
BOXGAME (The Pyramid Box Game) for ZX81 with 16K expansion. A Bob Mockford program. Line 11 has 8 spaces. Line 31 has 3 spaces at the end, line 32 has 2 and line 34 has 1. Line 342 is ZX followed by 6 spaces. Line 344 has 8 spaces plus 1 spaces added at the end. Line 420 is (2 spaces)1(3 spaces)2(3 spaces)5(2 spaces)10 Line 421 is (space)25(2 spaces)50(2 spaces)75(space)100 Lines 460 and 461 are 31 spaces each. Lines 470 to 473 have 6 spaces each. Line 501 has 31 spaces. 5 RAND 10 CLS 11 LET T$=" PYRAMID BOX GAME" 12 PRINT T$ 13 PRINT 14 PRINT "SETTING DATA ..." 15 DIM N$(4,13) 16 DIM P$(4,8) 17 DIM E(4) 18 DIM F(4) 19 DIM B(16) 20 DIM U(16) 21 DIM V(16) 22 DIM V$(16,3) 23 DIM A(16) 24 DIM D(16) 25 DIM G(16) 26 DIM H(16) 31 LET N$(1)="ONE PLAYER " 32 LET N$(2)="TWO PLAYERS " 33 LET N$(3)="THREE PLAYERS" 34 LET N$(4)="FOUR PLAYERS " 41 LET V(1)=1 42 LET V(2)=2 43 LET V(3)=5 44 LET V(4)=10 45 LET V(5)=25 46 LET V(6)=50 47 LET V(7)=75 48 FOR I=8 TO 16 49 LET V(I)=100*(I-7) 50 NEXT I 51 FOR I=1 TO 4 52 LET D(I)=2 53 LET D(I+4)=3 54 LET D(I+8)=4 55 LET D(I+12)=5 56 NEXT I 61 FOR I=1 TO 13 STEP 4 62 LET A(I)=16 63 LET A(I+1)=20 64 LET A(I+2)=24 65 LET A(I+3)=28 66 NEXT I 100 CLS 101 PRINT T$ 110 PRINT 111 PRINT "CHOOSE ANY OF 16 BOXES HOLDING" 120 PRINT "FROM 1 TO 900 POINTS." 121 PRINT 125 PRINT "YOU WILL THEN BE ABLE TO KEEP IT" 130 PRINT "OR SWAP IT UNTIL YOU ARE LEFT"

140 PRINT "WITH JUST TWO BOXES." 141 PRINT 150 PRINT "YOU WIN THE CONTENTS OF THE ONE" 155 PRINT "YOU THEN DECIDE TO KEEP." 160 PRINT 161 PRINT "UP TO 4 PEOPLE CAN PLAY, ANY CAN" 170 PRINT "BE THE COMPUTER, ENTER ZX AS THE" 175 PRINT "NAME OF THE PLAYER." 180 PRINT 200 PRINT "HOW MANY PLAYERS?" 210 IF INKEY$"" THEN GOTO 210 215 LET A$=INKEY$ 216 IF A$="" THEN GOTO 215 220 IF VAL A$4 THEN GOTO 215 230 LET N=VAL A$ 231 PRINT 232 PRINT N$(N);" - THANK YOU."; 240 FOR W=1 TO 20 241 NEXT W 300 CLS 301 PRINT T$ 310 FOR I=1 TO N 311 PRINT 320 PRINT "PLAYER ";I;" NAME?" 321 INPUT P$(I) 325 PRINT P$(I) 330 NEXT I 331 PRINT 332 PRINT "THANK YOU."; 340 FOR I=1 TO N 341 LET E(I)=0 342 IF P$(I)="ZX " THEN LET P$(I)="COMPUTER" 343 IF P$(I)="COMPUTER" THEN LET E(I)=1 344 IF P$(I)=" " THEN LET P$(I)="PLAYER"+STR$ I+" " 345 NEXT I 350 FOR W=1 TO 20 351 NEXT W 360 LET GM=0 361 GOTO 1000 400 FOR I=1 TO N 401 PRINT AT 1+I,0;P$(I) 402 NEXT I 403 RETURN 410 FOR I=1 TO N 411 PRINT AT 1+I,9;F(I) 412 NEXT I 413 RETURN 420 PRINT AT 2,16;" 1 2 5 10" 421 PRINT AT 3,16;" 25 50 75 100" 422 PRINT AT 4,16;"200 300 400 500" 423 PRINT AT 5,16;"600 700 800 900" 424 RETURN 430 FOR I=1 TO 16 431 LET U(I)=0 432 NEXT I 433 FOR I=1 TO 16 434 LET R=INT (RND*16)+1 435 IF U(R)=1 THEN GOTO 434 436 LET B(I)=V(R) 437 LET U(R)=1 438 LET G(I)=A(R) 439 LET H(I)=D(R) 440 NEXT I 441 FOR I=1 TO 16 442 LET V$(I)=STR$ B(I)

443 NEXT I 444 RETURN 450 FOR I=1 TO 20 451 NEXT I 452 PRINT AT H(BS),G(BS);"..." 453 RETURN 460 PRINT AT 20,0;" " 461 PRINT " "; 462 RETURN 470 PRINT AT 2,9;" " 471 PRINT AT 3,9;" " 472 PRINT AT 4,9;" " 473 PRINT AT 5,9;" " 474 FOR I=1 TO 4 475 LET F(I)=0 476 NEXT I 477 RETURN 500 FOR I=7 TO 18 501 PRINT AT I,0;" " 502 NEXT I 503 RETURN 510 PRINT AT 18,2;"--- --- --- --- --- --- ---" 511 PRINT AT 17,2;"-A- -B- -C- -D- -E- -F- -G-" 512 PRINT AT 16,2;"--- --- --- --- --- --- ---" 513 PRINT AT 15,6;"--- --- --- --- ---" 514 PRINT AT 14,6;"-H- -I- -J- -K- -L-" 515 PRINT AT 13,6;"--- --- --- --- ---" 516 PRINT AT 12,10;"--- --- ---" 517 PRINT AT 11,10;"-M- -N- -O-" 518 PRINT AT 10,10;"--- --- ---" 519 PRINT AT 9,14;"---" 520 PRINT AT 8,14;"-P-" 521 PRINT AT 7,14;"---" 522 RETURN 540 PRINT AT 17,-2+BS*4;V$(BS) 541 RETURN 550 PRINT AT 14,2+(BS-7)*4;V$(BS) 551 RETURN 560 PRINT AT 11,6+(BS-12)*4;V$(BS) 561 RETURN 570 PRINT AT 8,14;V$(BS) 571 RETURN 1000 CLS 1001 PRINT T$ 1002 GOSUB 400 1003 GOSUB 410 1004 GOSUB 420 1020 LET PL=1 1100 PRINT AT 20,0;"FILLING NEW BOXES ..." 1101 GOSUB 430 1102 GOSUB 500 1103 GOSUB 510 1104 GOSUB 420 1105 LET C=0 1110 FOR I=1 TO 16 1111 LET U(I)=0 1112 NEXT I 1120 IF E(PL)>0 THEN GOTO 2000 1130 GOSUB 460 1140 PRINT AT 20,0;P$(PL);" YOUR FIRST BOX?" 1150 IF INKEY$"" THEN GOTO 1150 1160 LET A$=INKEY$ 1161 IF A$="" THEN GOTO 1160 1170 IF A$"P" THEN GOTO 1160 1180 LET BC=CODE (A$)-37

1181 LET U(BC)=1 1190 GOSUB 460 1200 PRINT AT 20,0;P$(PL);" YOU HAVE BOX ";CHR$ (BC+37);"." 1210 LET BS=INT (RND*16)+1 1211 IF U(BS)>0 THEN GOTO 1210 1220 FOR W=1 TO 20 1221 NEXT W 1222 LET U(BS)=1 1230 PRINT AT 21,0;"K TO KEEP OR S TO SWAP WITH ";CHR$ (BS+37);"?"; 1240 IF INKEY$"" THEN GOTO 1240 1250 LET A$=INKEY$ 1251 IF A$="" THEN GOTO 1250 1260 IF A$="K" THEN GOTO 1290 1270 IF A$"S" THEN GOTO 1250 1280 LET BT=BC 1281 LET BC=BS 1282 LET BS=BT 1290 GOSUB 460 1291 IF C=14 THEN GOTO 1400 1300 IF BS7 AND BS12 AND BS0 THEN GOTO 2060 2070 FOR W=1 TO 20 2071 NEXT W 2072 LET U(BS)=1 2080 PRINT AT 21,0;"CONSIDERING A SWAP WITH ";CHR$ (BS+37);" ..."; 2090 FOR W=1 TO 20 2091 NEXT W 2092 GOSUB 460 2100 LET X=INT (RND*2)+1 2110 IF X=1 THEN GOTO 2150 2120 PRINT AT 20,0;"I WILL SWAP ..." 2130 LET BT=BC 2131 LET BC=BS 2132 LET BS=BT 2140 GOTO 2160 2150 PRINT AT 20,0;"I WILL KEEP BOX ";CHR$ (BC+37);"." 2160 FOR W=1 TO 20 2161 NEXT W 2170 GOSUB 460 2171 IF C=14 THEN GOTO 1400 2200 IF BS7 AND BS12 AND BS