10 OPTION BASE 1 20 DIM MARK(10,4),COST(10,4),XX(10,4),YY(10,4),TAX(10,4),PL(10,4) 30 DIM NW(4),TNW(4),P$(4) 40 DEF N$(I)="$"&STR$(I) 45 RANDOMIZE 50 GOTO 15000 90 X=27-LEN(Z$) 100 REM PRINT AT SUB 110 FOR I=0 TO LEN(Z$)-1 120 J=ASC(SEG$(Z$,I+1,1)) 130 CALL HCHAR(Y,X+I,J) 150 NEXT I 160 RETURN 165 X=27-LEN(Z$) 170 FOR I=0 TO LEN(Z$)-1 175 J=ASC(SEG$(Z$,I+1,1)) 180 CALL HCHAR(Y,X+I,J) 185 NEXT I 190 RETURN 200 JP=1-(P/2=INT(P/2)) 220 CALL HCHAR(PY-1,PX,124) 230 CALL HCHAR(PY,PX,125) 240 SX=PX 250 SY=PY 260 CALL JOYST(JP,JX,JY) 270 CALL KEY(0,K,S) 280 IF(S=0)*(JX=0)*(JY=0)THEN 260 290 IF K=81 THEN 12000 300 IF((K=32)+(K=13))*(C2=126)THEN 490 310 PX=PX+(PX<27)*((K=68)+(JX=4))-(PX>1)*((K=83)+(JX=-4)) 320 PY=PY+(PY<19)*((K=88)+(JY=-4))-(PY>2)*((K=69)+(JY=4)) 330 IF(PX=SX)*(PY=SY)THEN 260 340 CALL HCHAR(SY-1,SX,C1) 350 CALL HCHAR(SY,SX,C2) 360 CALL GCHAR(PY-1,PX,C1) 370 CALL GCHAR(PY,PX,C2) 375 CALL SOUND(-20,300,1) 380 Z$=STR$(PX)&" " 390 X=15 400 Y=20 410 GOSUB 170 420 Z$=STR$(PY)&" " 430 Y=21 440 GOSUB 170 450 GOTO 220 490 RETURN 500 CALL KEY(0,K,S) 510 IF S=0 THEN 500 520 RETURN 600 FOR I=20 TO 24 610 CALL HCHAR(I,1,32,32) 620 NEXT I 630 RETURN 1000 RX=INT(26*RND)+1 1020 RY=INT(16*RND)+1 2000 FOR W=1 TO 10 2020 CALL CLEAR 2030 PRINT TAB(11);"SCOREBOARD": 2040 IF W=10 THEN 2070 ELSE 2050 2050 PRINT TAB(13);"WEEK ";W: 2060 GOTO 2080 2070 PRINT TAB(12);"LAST WEEK": 2080 FOR J=1 TO NP 2090 FOR K=1 TO W-1 2100 IF TAX(K,J)=-1 THEN 2170 2110 IF RND>.2 THEN 2130 2120 INC(K,J)=INT(INC(K,J)/2) 2130 INC(K,J)=INT(INC(K,J)*(.8+.1*RND)) 2140 A=INC(K,J)-TAX(K,J) 2150 PL(K,J)=PL(K,J)+A 2160 NW(J)=NW(J)+A 2170 NEXT K 2180 Z$=N$(NW(J)) 2190 PRINT:TAB(5);P$(J);TAB(26-LEN(Z$));Z$ 2200 NEXT J 2210 PRINT: : :"TO CONTINUE, PRESS ANY KEY." 2220 GOSUB 500 3000 FOR P=1 TO NP 3005 CALL CLEAR 3010 IF W=10 THEN 3040 3020 Z$=P$(P)&"'S TURN WEEK "&STR$(W) 3030 GOTO 3050 3040 Z$=P$(P)&"'S TURN LAST WEEK" 3050 PRINT TAB(INT((25-LEN(Z$))/2));Z$: : : : : : : : : : : : : : : : : : : 3060 PRINT TAB(11);"X=13" 3070 PRINT TAB(11);"Y=10" 3080 PRINT:"USE ARROW TO MOVE":"USE SPACE TO SELECT LAND"; 4000 REM DRAW BOARD 4020 FOR I=2 TO 19 4030 CALL HCHAR(I,1,126,27) 4040 NEXT I 4050 FOR K=1 TO W 4060 FOR I=1 TO NP 4065 IF YY(K,I)=0 THEN 4080 4070 CALL HCHAR(YY(K,I),XX(K,I),MARK(K,I)) 4080 NEXT I 4090 NEXT K 5000 REM DRAW WELL 5010 CALL HCHAR(3,30,96) 5020 K=97 5030 FOR I=4 TO 10 5040 FOR J=29 TO 31 5050 CALL HCHAR(I,J,K) 5060 K=K+1 5070 NEXT J 5080 NEXT I 5090 FOR I=8 TO 10 5100 CALL HCHAR(I,28,K) 5110 CALL HCHAR(I,32,K+1) 5120 K=K+2 5130 NEXT I 5500 CALL COLOR(13,1,1) 5510 CALL COLOR(14,1,1) 5520 K=128 5530 FOR Y=1 TO 2 5540 FOR X=28 TO 32 5550 CALL HCHAR(Y,X,K) 5560 K=K+1 5570 NEXT X 5580 NEXT Y 5590 CALL HCHAR(3,28,138) 5600 CALL HCHAR(3,29,139) 5610 CALL HCHAR(3,31,140) 5620 CALL HCHAR(3,32,141) 5630 CALL HCHAR(4,28,142) 5640 CALL HCHAR(4,32,143) 6110 PX=13 6120 PY=10 6130 CALL GCHAR(PY-1,PX,C1) 6140 CALL GCHAR(PY,PX,C2) 7000 GOSUB 200 8000 GOSUB 600 8020 R=RND 8030 N=INT(ABS(PX-RX)/1.5+ABS(PY-RY)) 8035 PR=(100-N*3.25+N*N/37.8)/100 8040 C=-(N<13)-(N<8)-(N<1) 8050 C=C-((N>12)*(N<15)*(R<.5))-((N>1)*(N<4)*(R<.5)) 8060 C=C-((N>7)*(N<10)*(R<.5)) 8070 MARK(W,P)=-127*(C=0)-152*(C=1)-34*(C=2)-43*(C=3) 8075 MARK(W,P)=-MARK(W,P)*(N>0)-32*(N=0) 8080 DC=5+INT(10*RND) 8090 TAX(W,P)=INT((C+1)^1.5*100+(600*RND)) 8100 X=3 8110 Y=20 8120 Z$="PROBABILITY OF OIL ..."&STR$(INT(100*PR))&"%" 8130 GOSUB 100 8140 Y=21 8150 Z$="DRILLING COST (/M)" 8160 GOSUB 100 8162 Z$=N$(DC) 8164 GOSUB 90 8166 X=3 8170 Y=22 8180 Z$="TAX" 8190 GOSUB 100 8192 Z$=N$(TAX(W,P)) 8194 GOSUB 90 8200 XX(W,P)=PX 8210 YY(W,P)=PY 8220 X=2 8230 Y=24 8240 Z$="DO YOU WISH TO DRILL? (Y,N)" 8250 GOSUB 100 8260 GOSUB 500 8270 IF S=0 THEN 8260 8280 IF K=ASC("N")THEN 8310 8290 IF K=ASC("Y")THEN 9000 8300 GOTO 8260 8310 TAX(W,P)=0 8320 COST(W,P)=0 8330 INC(W,P)=0 8340 PL(W,P)=0 8350 GOTO 11000 9000 REM DRILL 9010 TDC=0 9020 D=0 9030 GOSUB 600 9080 Y=20 9090 Z$="DEPTH (M)" 9100 GOSUB 100 9110 Y=21 9120 Z$="TOTAL DRILLING COST" 9130 GOSUB 100 9140 Y=22 9150 Z$="NET WORTH" 9160 GOSUB 100 9170 Y=24 9180 X=2 9190 Z$="HOLD SPACE BAR TO DRILL." 9200 GOSUB 100 9210 GOSUB 500 9500 PR=(1-PR)^(1/18) 9515 DC=DC*50 9520 FOR A=11 TO 19 9530 FOR B=147 TO 151 STEP 4 9540 CALL HCHAR(A,30,B) 9560 CALL KEY(0,K,S) 9570 IF S=O THEN 9780 9580 D=D+50 9585 CALL SOUND(-900,-5,5,110,1) 9600 Y=20 9610 Z$=STR$(D) 9620 GOSUB 165 9630 TDC=TDC+DC 9640 COST(W,P)=TDC 9650 PL(W,P)=-TDC 9670 Y=21 9680 Z$=N$(TDC) 9690 GOSUB 165 9700 NW(P)=NW(P)-DC 9720 Y=22 9730 Z$=N$(NW(P)) 9740 GOSUB 165 9750 IF RND>PR THEN 10000 9760 NEXT B 9770 NEXT A 9780 REM NO OIL 9790 CALL HCHAR(23,1,32,32) 9800 Y=23 9810 X=2 9820 Z$="NO OIL FOUND" 9830 GOSUB 100 9840 GOTO 10500 10000 REM HIT OIL 10010 INC(W,P)=INT((.9+RND*.2)*(TAX(W,P)*(C+1)^1.2)) 10011 FOR J=-7 TO-5 10012 FOR I=1 TO 6 10013 CALL SOUND(-900,J,1,116,1,116,1) 10014 NEXT I 10015 NEXT J 10030 CALL COLOR(13,2,1) 10040 CALL COLOR(14,2,1) 10050 FOR I=1 TO 30 10055 CALL SOUND(100,-5,I,116,I,130,I) 10060 NEXT I 10070 CALL HCHAR(24,1,32,32) 10100 CALL HCHAR(23,1,32,32) 10130 Y=23 10140 Z$="INCOME="&N$(INC(W,P)) 10150 GOSUB 90 10500 X=2 10510 Y=24 10520 Z$="TO CONTINUE, PRESS ANY KEY" 10530 GOSUB 100 10540 GOSUB 500 11000 CALL CLEAR 11010 Z$=P$(P)&"'S PORTFOLIO" 11020 PRINT TAB((27-LEN(Z$))/2);Z$: 11040 IF W=10 THEN 11080 11050 Z$="WEEK "&STR$(W) 11060 GOTO 11090 11080 Z$="LAST WEEK" 11090 PRINT TAB((27-LEN(Z$))/2);Z$: : 11100 PRINT "X Y COST TAX INCOME P/L": 11110 FOR A=1 TO W 11120 PRINT:STR$(XX(A,P));" ";STR$(YY(A,P)); 11130 IF TAX(A,P)=-1 THEN 11140 ELSE 11160 11140 PRINT TAB(6);"****** SOLD ******"; 11150 GOTO 11230 11160 IF COST(A,P)=0 THEN 11250 11170 Z$=N$(COST(A,P)) 11180 PRINT TAB(12-LEN(Z$));Z$; 11190 Z$=N$(TAX(A,P)) 11200 PRINT TAB(17-LEN(Z$));Z$; 11210 Z$=N$(INC(A,P)) 11220 PRINT TAB(23-LEN(Z$));Z$; 11230 Z$=N$(PL(A,P)) 11240 X=32-LEN(Z$) 11241 Y=24 11242 GOSUB 100 11250 NEXT A 11260 PRINT:TAB(10);"NET WORTH": : 11270 Z$=N$(NW(P)) 11275 X=32-LEN(Z$) 11280 Y=22 11285 GOSUB 100 11290 CALL HCHAR(24,1,32,32) 11300 Z$="DO YOU WISH TO SELL? (Y,N)" 11310 X=2 11320 Y=24 11330 GOSUB 100 11340 GOSUB 500 11360 IF K=78 THEN 11650 11370 IF K<>89 THEN 11340 11380 X=2 11390 Y=22-W 11400 H=21 11410 L=Y 11420 CALL KEY(0,K,S) 11422 CALL HCHAR(Y,X,62) 11424 CALL HCHAR(Y,X,32) 11430 IF S=0 THEN 11420 11440 IF(K=13)+(K=32)THEN 11470 11445 IF K=78 THEN 11650 11450 Y=Y+(K=88)*(YL) 11460 GOTO 11420 11470 K=Y-21+W 11480 IF TAX(K,P)=0 THEN 11420 11490 A=INT((.3+.5*RND)*COST(K,P)) 11500 Z$="** SOLD FOR "&N$(A)&"****" 11510 X=8 11520 GOSUB 100 11530 PL(K,P)=PL(K,P)+A 11540 Z$=N$(PL(K,P)) 11550 X=32-LEN(Z$) 11560 GOSUB 100 11570 NW(P)=NW(P)+A 11580 Z$=" "&N$(NW(P)) 11590 X=32-LEN(Z$) 11600 Y=22 11610 GOSUB 100 11620 COST(K,P)=0 11630 TAX(K,P)=-1 11635 INC(K,P)=0 11640 GOTO 11290 11650 NEXT P 11660 NEXT W 11670 W=10 11999 REM FINAL SCORE & MAP 12000 CALL CLEAR 12010 PRINT TAB(5);"MAP OF GAME PLAYED": : : 12080 FOR W=1 TO W 12090 FOR P=1 TO NP 12095 IF XX(W,P)=0 THEN 12110 12100 CALL HCHAR(YY(W,P),XX(W,P)+2,MARK(W,P)) 12110 COST(W,P)=0 12120 MARK(W,P)=0 12130 TAX(W,P)=0 12140 PL(W,P)=0 12150 XX(W,P)=0 12160 YY(W,P)=0 12170 NEXT P 12180 NEXT W 12190 FOR X=1 TO 27 12200 FOR Y=2 TO 19 12210 CALL GCHAR(Y,X+2,A) 12220 IF A<>32 THEN 12280 12230 R=RND 12240 N=INT(ABS(X-RX)/1.5+ABS(Y-RY)) 12250 C=-(N<13)-(N<8)-(N<1)-((N>12)*(N<15)*(R<.5))-((N>1)*(N<4)*(R<.5))-((N>7)*(N<10)*(R<.5)) 12260 C=-127*(C=0)-152*(C=1)-34*(C=2)-43*(C=3) 12265 C=-C*(N>0)-32*(N=0) 12270 CALL HCHAR(Y,X+2,C) 12280 NEXT Y 12290 NEXT X 13000 Z$="TO CONTINUE, PRESS ANY KEY." 13010 X=3 13020 Y=23 13030 GOSUB 100 13040 GOSUB 500 13060 CALL CLEAR 13070 PRINT TAB(11);"SCOREBOARD": : 13075 PRINT TAB(17);"LAST";TAB(24);"TOTAL":TAB(17);"GAME";TAB(24);"GAMES": : 13080 FOR I=1 TO NP 13090 TNW(I)=TNW(I)+NW(I) 13100 Z$=N$(NW(I)) 13110 A$=N$(TNW(I)) 13120 PRINT TAB(5);P$(I);TAB(20-LEN(Z$));Z$;TAB(28-LEN(A$));A$: : 13130 NW(I)=0 13140 NEXT I 13150 PRINT: :TAB(2);"SAME PLAYERS GO AGAIN? (Y,N)" 13160 GOSUB 500 13180 IF K=ASC("Y")THEN 1000 13190 IF K<>ASC("N")THEN 13160 13200 FOR I=1 TO 4 13210 TNW(I)=0 13220 NEXT I 14000 CALL CLEAR 14010 PRINT "NUMBER 0F PLAYERS? (1-4)"; 14020 GOSUB 500 14040 IF(K<49)+(K>52)THEN 14020 14050 NP=K-48 14060 PRINT NP: : : 14070 PRINT TAB(5);"TYPE NAME, PRESS ENTER.": : 14075 FOR I=1 TO NP 14080 PRINT:TAB(5);"PLAYER ";I; 14090 INPUT P$(I) 14100 IF P$(I)="" THEN 14090 14110 P$(I)=SEG$(P$(I),1,8) 14120 NEXT I 14130 GOTO 1000 15000 CALL CLEAR 15010 CALL SCREEN(8) 15020 PRINT TAB(9);"WILDCATTING": : : : 15030 PRINT: : : :TAB(5);"COPYRIGHT (C) 1980" 15040 PRINT " THE IMAGE PRODUCERS,INC.": : : : : 15050 REM DEF CHAR FOR WELL 15060 CALL CHAR(96,"000000003C242424") 15070 CALL CHAR(97,"0101010101000000") 15080 CALL CHAR(98,"FF244281FF242424") 15090 CALL CHAR(99,"8080808080000000") 15100 CALL CHAR(100,"0000000000000101") 15110 CALL CHAR(101,"5A5A5A9999991818") 15120 CALL CHAR(102,"0000000000008080") 15130 CALL CHAR(103,"0102030204040408") 15140 CALL CHAR(104,"181818995A3C5A99") 15150 CALL CHAR(105,"8040C04020202010") 15160 CALL CHAR(106,"090A14FF90A0A0FF") 15170 CALL CHAR(107,"181818FF181818FF") 15180 CALL CHAR(108,"905028FF090505FF") 15190 CALL CHAR(109,"6050488482810001") 15200 CALL CHAR(110,"181818183C5A995A") 15210 CALL CHAR(111,"060A122141810080") 15220 CALL CHAR(112,"0204081020408000") 15230 CALL CHAR(113,"3C18181818181818") 15240 CALL CHAR(114,"4020100804020100") 15250 CALL CHAR(115,"0000FF8244281000") 15260 CALL CHAR(116,"1818FF995A3C1818") 15270 CALL CHAR(117,"0000FF4122140800") 15280 CALL CHAR(118,"0000000000000101") 15290 CALL CHAR(119,"0000000000008080") 15300 CALL CHAR(120,"0102020204040409") 15310 CALL CHAR(121,"8040404020202090") 15320 CALL CHAR(122,"0A0C3F1214181000") 15330 CALL CHAR(123,"5030FC4828180800") 15340 CALL CHAR(124,"D7EFEFD7D7D7D7BB") 15350 CALL CHAR(125,"BBBBBB556D55397D") 15360 Z$="FFFFFFFFFFFFFFFF" 15370 CALL CHAR(126,Z$) 15380 CALL CHAR(127,Z$) 15390 CALL CHAR(152,Z$) 15400 CALL CHAR(34,Z$) 15410 CALL CHAR(43,Z$) 15420 CALL COLOR(16,11,1) 15430 CALL COLOR(1,13,1) 15440 CALL COLOR(2,5,1) 15480 CALL CHAR(147,"1818181800000000") 15520 CALL CHAR(151,"1818181818181818") 15530 REM DEF CHAR OIL 15540 CALL CHAR(128,"0001020408080808") 15550 CALL CHAR(129,"0100384480000000") 15560 CALL CHAR(130,"A051221414141102") 15570 CALL CHAR(131,"FC0201000000E010") 15580 CALL CHAR(132,"0000008080809088") 15590 CALL CHAR(133,"0808080828080101") 15600 CALL CHAR(134,"3804808083840808") 15610 CALL CHAR(135,"1418181890501010") 15620 CALL CHAR(136,"0808C02014121111") 15630 CALL CHAR(137,"0808480808080800") 15640 CALL CHAR(138,"0101010000000404") 15650 CALL CHAR(139,"0808080000000000") 15660 CALL CHAR(140,"1101010109010000") 15670 CALL CHAR(141,"0000080000010000") 15680 CALL CHAR(142,"0404040400000001") 15690 CALL CHAR(143,"0000008000000000") 15700 GOTO 14000