10 REM FISHING
20 REM By Michael Kelsall 30 REM Adapted by Ken Goodman 40 REM(c)Computing with the Amstrad 45 REM -------- CPC ONLY --------- 50 SYMBOL AFTER 230 60 MODE 1 70 DIM name$(7),weight(7) 80 GOSUB 200:REM Define characters 90 GOSUB 490:REM Title page 100 GOSUB 840:REM Initialise 110 GOSUB 990:REM Input data 120 GOSUB 1170:REM Set penalties 130 GOSUB 1260:REM Screen graphics 140 GOSUB 1470:REM Game loop 150 GOSUB 2360:REM End of game 160 INK 0,0:INK 1,26:INK 2,26,0:INK 3,24:PAPER 0:BORDER 8:CLS 170 GOSUB 2410:REM Weigh-in 180 RUN 190 REM define characters 200 RESTORE 240:FOR i=232 TO 255 210 READ d1,d2,d3,d4,d5,d6,d7,d8 220 SYMBOL i,d1,d2,d3,d4,d5,d6,d7,d8 230 NEXT i:RETURN 240 DATA 255,255,255,255,255,255,255,126 250 DATA 204,51,204,51,204,51,204,51 260 DATA 51,204,51,204,51,204,51,204 270 DATA 4,4,66,66,34,33,33,33 280 DATA 0,8,20,20,17,17,34,34 290 DATA 33,145,149,149,85,80,66,2 300 DATA 34,40,68,68,84,80,16,16 310 DATA 8,8,8,28,28,0,0,0 320 DATA 0,8,8,8,28,0,0,0 330 DATA 248,248,232,168,136,254,14,7 340 DATA 0,0,0,0,0,0,0,3 350 DATA 3,3,4,11,14,51,196,8 360 DATA 15,55,207,62,252,212,68,206 370 DATA 12,48,192,0,0,0,0,0 380 DATA 17,34,58,59,59,123,247,15 390 DATA 26,50,116,212,204,202,145,16 400 DATA 0,0,0,0,0,0,126,129 410 DATA 0,0,1,0,0,1,1,131 420 DATA 99,27,6,7,7,3,4,8 430 DATA 7,7,127,254,228,92,68,206 440 DATA 0,0,1,0,0,1,1,3 450 DATA 0,0,0,3,12,48,192,0 460 DATA 20,54,126,126,60,24,60,126 470 DATA 20,54,62,28,8,62,0,0 480 REM Title page 490 INK 0,9:INK 1,26:INK 2,19:INK 3,2:PAPER 0:BORDER 9:CLS 500 MOVE 63,80:DRAWR 482,0,1:DRAWR 0,225:DRAWR -482,0:DRAWR 0,-225 510 MOVE 61,79:DRAWR 486,0,1:DRAWR 0,227:DRAWR -486,0:DRAWR 0,-227 520 MOVE 59,76:DRAWR 490,0,1:DRAWR 0,231:DRAWR -490,0:DRAWR 0,-231 530 WINDOW #1,5,34,7,12:PAPER #1,2:CLS#1 540 WINDOW #2,5,34,12,20:PAPER #2,3:CLS#2 550 TAG:PLOT -10,-10,2:FOR i=65 TO 529 STEP 16 560 MOVE i,236+INT(RND*8)-6:PRINT CHR$(232);:NEXT:TAGOFF 570 PEN 1:LOCATE 7,2:PRINT"U N I T E D K I N G D O M" 580 PEN 0:PAPER 3:FOR i=8 TO 18 STEP 2:LOCATE i,2:PRINT CHR$(207):NEXT 590 FOR i=19 TO 31 STEP 2:LOCATE i,2:PRINT CHR$(207):NEXT 600 PEN 1:PAPER 0:LOCATE 6,4:PRINT"F I S H I N G C O N T E S T" 610 PEN 0:PAPER 3:FOR i=7 TO 19 STEP 2:LOCATE i,4:PRINT CHR$(207):NEXT 620 FOR i=20 TO 32 STEP 2:LOCATE i,4:PRINT CHR$(207):NEXT 630 PEN 0:PAPER 2:LOCATE 26,9:PRINT CHR$(252)CHR$(241) 640 LOCATE 25,10:PRINT CHR$(242)CHR$(243)CHR$(244) 650 LOCATE 24,11:PRINT CHR$(253)CHR$(245)CHR$(246)CHR$(247) 660 rd$=CHR$(235)+CHR$(236)+CHR$(8)+CHR$(8)+CHR$(10)+CHR$(237)+CHR$(238) 670 PEN 0:LOCATE 22,10:PRINT rd$:PEN 2:PAPER 3:LOCATE 17,12:PRINT rd$:LOCATE 32,12:PRINT rd$ 680 MOVE 368,226:DRAW 224,108,1 690 LOCATE 14,19:PRINT CHR$(239) 700 PEN 1:PAPER 0:LOCATE 1,22:PRINT"PLEASE TYPE YOUR NAME (up to 15 letters)" 710 WHILE INKEY$<>"":WEND 720 name$(1)=SPACE$(16):WHILE LEN(name$(1))>15 730 name$(1)=SPACE$(16) 740 LOCATE 1,24:PRINT CHR$(20); 750 LOCATE 1,24:INPUT name$(1) 760 WEND 770 LOCATE 1,22:PRINT CHR$(20) 780 LOCATE 2,22:PRINT"KEYS: A/Z = cast : Space/Fire = strike" 790 LOCATE 10,23:PRINT"Shift/Joystick to reel in" 800 LOCATE 5,24:PRINT"Press any key to start the match"; 810 MOVE 8,72:DRAW 632,72:DRAW 632,8:DRAW 8,8:DRAW 8,72 820 CALL &BB18:RETURN 830 REM Initialise 840 RANDOMIZE TIME:KEY DEF 76,1,32 850 fishcaught=0:fw=0:xpo=INT(RND*26)+11:ypo1=14:ypo2=24:cast=0:e=0:flag=0:weather=INT(RND*3)+1:depth=INT(RND*20)+11:penalty=INT(RND*10)+1 860 RESTORE 870:FOR i=2 TO 7:READ n$:name$(i)=n$:weight(i)=INT(RND*75)+1:NEXT 870 DATA Michael Kelsall,Robert Kelsall,Shaun Wilson,Nigel Saunders,David Sturgess,Gary Gregory 880 IF weather =1 THEN weather$="Sunny.":recbait=7:rechook=15:rechookdepth=depth-1 890 IF weather=2 THEN weather$="Cloudy.":recbait=3:rechook=17:rechookdepth=depth-2 900 IF weather=3 THEN weather$="Raining.":recbait=2:rechook=14:rechookdepth=depth-3 910 flow=INT(RND*3)+1 920 IF flow=1 THEN flow$="fast.":recounces=4 930 IF flow=2 THEN flow$="steady.":recounces=3 940 IF flow=3 THEN flow$="slow.":recounces=2 950 ENV 1,1,10,1,1,0,2,10,-1,1 960 ENT 2,3,-5,1 970 SPEED INK 40,18:RETURN 980 REM Input data 990 INK 0,1:INK 1,8:INK 2,20:INK 3,19:CLS 1000 PRINT TAB(13)"FISHING LOG" 1010 LOCATE 7,4:PEN 2:PRINT"Weather:- "weather$ 1020 LOCATE 7,5:INPUT "What hook size (10-25) ";i$:hooksize=VAL(i$) 1030 IF hooksize<10 OR hooksize>25 THEN LOCATE 32,5:PRINT CHR$(20):PRINT CHR$(7):GOTO 1020 1040 PEN 3:LOCATE 7,7:PRINT"Which bait: 1..Luncheon Meat" 1050 LOCATE 19,8:PRINT"2..Cheese":LOCATE 19,9:PRINT"3..Earthworms":LOCATE 19,10:PRINT"4..Bread" 1060 LOCATE 11,11:PRINT"Maggots 5..Bronze":LOCATE 19,12:PRINT"6..White" 1070 LOCATE 19,13:PRINT"7..Mixed":LOCATE 19,14:PRINT"8..Casters" 1080 PEN 1:LOCATE 11,16:INPUT "Press 1-8 for bait ";i$:bait=VAL(i$) 1090 IF bait<1 OR bait>8 THEN LOCATE 32,16:PRINT CHR$(20):PRINT CHR$(7):GOTO 1080 1100 PEN 2:LOCATE 3,18:PRINT"The water has a depth of"depth"metres." 1110 LOCATE 3,19:PRINT CHR$(20);:INPUT "What depth will you fish at ";i$:IF i$="" OR ASC(LEFT$(i$,1))<48 OR ASC(LEFT$(i$,1))>57 THEN 1110 ELSE hookdepth=VAL(i$) 1120 IF hookdepth>depth THEN 1110 1130 PEN 3:LOCATE 3,21:PRINT"The water is flowing "flow$:LOCATE 3,22:INPUT "What weight will you use (1-10) ";i$:ounces=VAL(i$) 1140 IF ounces<1 OR ounces>10 THEN LOCATE 37,22:PRINT CHR$(20):PRINT CHR$(7):GOTO 1130 1150 FOR dl=1 TO 1000:NEXT:RETURN 1160 REM Set the penalties 1170 IF hooksize<>rechook THEN penalty=penalty+2 1180 IF bait<>recbait THEN penalty=penalty+2 1190 IF hookdepth<>rechoohdepth THEN penalty=penalty+2 1200 IF ounces<>recounces THEN penalty=penalty+2 1210 RETURN 1220 REM Draw the fisherman 1230 PEN 2:PAPER 1:LOCATE xpo-1,7:PRINT CHR$(32)CHR$(32)CHR$(252)CHR$(241):LOCATE xpo-1,8:PRINT CHR$(32)CHR$(242)CHR$(243)CHR$(244):LOCATE xpo-1,9:PRINT CHR$(253)CHR$(245)CHR$(246)CHR$(247) 1240 RETURN 1250 REM Screen graphics 1260 MODE 1:INK 0,2:INK 1,22:INK 2,0:INK 3,26:PAPER 2:BORDER 0:CLS 1270 WINDOW #1,1,40,5,9:PAPER #1,1:CLS #1 1280 WINDOW #2,1,40,10,25:PAPER #2,0:CLS #2 1290 TAG:PLOT -10,-10,1:FOR i=1 TO 640 STEP 12 1300 MOVE i,266+INT(RND*8)-6:PRINT CHR$(232);:NEXT:TAGOFF 1310 REM FOR i=0 TO 144 STEP 48:MOVE i,310:DRAW i,334,2:MOVE i+2,310:DRAW i+2,334:next 1320 FOR i=8 TO 152 STEP 48:MOVE i,310:DRAW i,334,2:MOVE i+2,310:DRAW i+2,334:NEXT 1330 FOR o=208 TO 640 STEP 46:MOVE i,310:DRAW i,334:MOVE i+2,310:DRAW i+2,334:NEXT 1340 MOVE 0,334:DRAW 640,334:FOR j=326 TO 318 STEP -8 1350 MOVE 0,j:DRAW 152,j:MOVE 208,j:DRAW 640,j:NEXT 1360 MOVE 152,334:DRAW 208,310:n=330:FOR i=1 TO 4 1370 MOVE 152,n:DRAW 208,n:n=n-6:NEXT 1380 PEN 1:PAPER 0:FOR i=1 TO 5:READ p,q:LOCATE p,q:PRINT rd$:NEXT 1390 DATA 5,11,8,12,15,13,31,11,37,11 1400 PAPER 2:LOCATE 4,1:PRINT"United Kingdom Fishing Contest" 1410 PEN 3:LOCATE 2,2:PRINT"Peg No.: 1 - "name$(1) 1420 LOCATE 2,3:PRINT"Number of fish caught":LOCATE 2,4:PRINT"Weight of last fish (lb)" 1430 LOCATE 32,2:PRINT"Total":LOCATE 32,3:PRINT"weight":LOCATE 32,4:PRINT"0lb" 1440 LOCATE 24,3:PRINT"0":LOCATE 27,4:PRINT"0" 1450 RETURN 1460 REM Game loop 1470 t1=TIME/300 1480 PEN 2:PAPER 0 1490 LOCATE xpo-7,ypo1:PRINT" ":LOCATE xpo-7,ypo2:PRINT" " 1500 PEN 2:PAPER 1:IF cast=0 THEN LOCATE xpo-3,9:PRINT" " 1510 PRINT CHR$(23)CHR$(1); 1520 IF e=1 AND flag=1 THEN MOVE (xpo-2)*16,254:DRAW (xpo-7)*16,186 1530 IF e=1 AND flag=2 THEN MOVE (xpo-2)*16,254:DRAW (xpo-7)*16,38 1540 PRINT CHR$(23)CHR$(0);:PEN 2 1550 e=0:IF cast=1 OR cast=2 THEN 1690 1560 LOCATE xpo,7:PRINT CHR$(248)CHR$(249)CHR$(241) 1570 LOCATE xpo,8:PRINT CHR$(32)CHR$(250)CHR$(251) 1580 LOCATE xpo,9:PRINT CHR$(32)CHR$(246)CHR$(247) 1590 WHILE cast=0 1600 t2=TIME/300:IF t2-t1>300 THEN 2340 1610 WHILE INKEY$<>"":WEND 1620 IF INKEY(69)>-1 THEN GOSUB 1230:FOR i=15 TO 1 STEP -1:SOUND 3,0,1,4,0,0,i:NEXT:FOR dl=1 TO 400:NEXT:SOUND 3,40,3,15,1,1:PEN 3:PAPER 0:LOCATE xpo-7,ypo1:PRINT CHR$(239):cast=1::PEN 2:PAPER 1 1630 IF INKEY(71)>-1 THEN GOSUB 1230:FOR i=15 TO 1 STEP -1:SOUND 3,0,1,4,0,0,i:NEXT:FOR dl=1 TO 400:NEXT:SOUND 3,40,3,15,1,1:PEN 3:PAPER 0:LOCATE xpo-7,ypo2:PRINT CHR$(239):cast=2:PEN 2:PAPER 1 1640 WEND 1650 PEN 3 1660 MOVE (xpo-2)*16,254 1670 IF cast=1 THEN DRAW (xpo-7)*16,186,3 1680 IF cast=2 THEN DRAW (xpo-7)*16,38,3 1690 fish=INT(RND*200)+1-INT(RND*penalty)+1 1700 IF INKEY(47)>-1 OR (JOY(0) AND 48)<>0 THEN flag=cast:e=1:cast=0:GOTO 1480 1710 t2=TIME/300:IF t2-t1>300 THEN 2340 1720 IF fish<>1 THEN 1690 1730 PEN 3:PAPER 0 1740 float=INT(RND*7)+1:WHILE float>0 1750 t2=TIME/300:IF t2-t1>300 THEN 2340 1760 IF cast=1 THEN LOCATE xpo-7,ypo1:PRINT CHR$(240) 1770 IF cast=2 THEN LOCATE xpo-7,ypo2:PRINT CHR$(240) 1780 zz$=INKEY$ 1790 IF zz$=" " THEN flag=cast:e=1:cast=0:GOTO 1480 1800 FOR dl=1 TO 1600:NEXT 1810 IF cast=1 THEN LOCATE xpo-7,ypo1:PRINT CHR$(239) 1820 IF cast=2 THEN LOCATE xpo-7,ypo2:PRINT CHR$(239) 1830 zz$=INKEY$ 1840 IF zz$=" " THEN flag=cast:e=1:cast=0:GOTO 1480 1850 FOR dl=1 TO 3200:NEXT 1860 float=float-1:WEND 1870 PAPER 0:LOCATE xpo-7,ypo1:PRINT CHR$(32):LOCATE xpo-7,ypo2:PRINT CHR$(32) 1880 PRINT CHR$(23)CHR$(1); 1890 strike=INT(RND*55)+5:WHILE strike>1 1900 t2=TIME/300:IF t2-t1>300 THEN 2340 1910 zz$=INKEY$ 1920 IF zz$=" "AND cast=1 THEN MOVE (xpo-2)*16,254:DRAW (xpo-7)*16,186 1930 IF zz$=" " AND cast=2 THEN MOVE (xpo-2)*16,254:DRAW (xpo-7)*16,38 1940 PEN 2:PAPER 1 1950 IF zz$=" " THEN LOCATE xpo,7:PRINT CHR$(248)CHR$(249)CHR$(241):LOCATE xpo,8:PRINT CHR$(32)CHR$(250)CHR$(251):LOCATE xpo-1,9:PRINT CHR$(32)CHR$(32)CHR$(246)CHR$(247):flag=cast:cast=0:loop=0:GOTO 2020 1960 strike=strike-1:WEND 1970 PRINT CHR$(23)CHR$(0); 1980 PEN 3:PAPER 0:IF cast=1 THEN LOCATE xpo-7,ypo1:PRINT CHR$(239) 1990 IF cast=2 THEN LOCATE xpo-7,ypo2:PRINT CHR$(239) 2000 t2=TIME/300:IF t2-t1>300 THEN 2340 2010 GOTO 1500 2020 IF flag=1 THEN y=186:fw=INT(RND*3)+4 2030 IF flag=2 THEN y=38:fw=INT(RND*4)+5 2040 IF RND <0.015 THEN fw=40:FOR i=150 TO 10 STEP -5:SOUND 1,i,1,15:NEXT 2050 IF fw=40 THEN PEN 1:TAG:MOVE 240,112:PRINT"PIKE!";:FOR dl=1 TO 750:NEXT:MOVE 240,112:PRINT"PIKE!";:TAGOFF 2060 x=(xpo-6)*16:MOVE (xpo-1)*16,286:DRAW x,y 2070 WHILE y<254 2080 t2=TIME/300:IF t2-t1>300 THEN 2340 2090 MOVE (xpo-1)*16,286:DRAW x,y 2100 x=x+INT(RND*70)+1:x=x-INT(RND*70)+1:y=y+0.86-(fw*0.24) 2110 IF INKEY(21)=32 OR (JOY(0) AND 9)<>0 THEN ri=1 ELSE ri=0 2120 IF ri=1 AND kh=1 THEN 2180 2130 IF ri=0 THEN kh=0 2140 IF fw<40 THEN 2170 2150 IF hooksize>13 THEN 2170 2160 IF hooksize<13 AND ri THEN y=y+INT(RND*25)+14:kh=1 2170 IF ri THEN y=y+INT(RND*5)+8:SOUND 1,10,1,15,0,0,5:kh=1 2180 MOVE (xpo-1)*16,286:DRAW x,y 2190 IF RND>0.5 THEN TAG:MOVE x,y:PRINT "..";:MOVE x,y:PRINT "..";:TAGOFF 2200 IF y<2 OR x<2 OR x>638 THEN 2230 2210 WEND 2220 MOVE (xpo-1)*16,286:DRAW x,y:GOTO 2250 2230 MOVE (xpo-1)*16,286:DRAW x,y 2240 SOUND 1,1000,50,15:GOTO 1520 2250 PEN 0:SOUND 17,20,20,15:SOUND 10,19,20,15 2260 IF fw<6 THEN LOCATE xpo-1,8:PRINT CHR$(255) 2270 IF fw>=6 THEN LOCATE xpo-1,8:PRINT CHR$(254) 2280 PEN 3:PAPER 2 2290 fishcaught=fishcaught+1:LOCATE 23,3:PRINT fishcaught 2300 LOCATE 26,4:PRINT fw" " 2310 weight(1)=weight(1)+fw:LOCATE 32,4:PRINT weight(1)" lb" 2320 PEN 2:PAPER 0:t2=TIME/300:IF t2-t1>300 THEN 2340 2330 GOTO 1500 2340 float=0:strike=0:loop=0:RETURN 2350 REM End of game 2360 PEN 3:PAPER 0:LOCATE 1,21:PRINT CHR$(20);:LOCATE 13,21:PRINT"STOP FISHING" 2370 FOR i=1 TO 50:SOUND 129,40,20,5,1:SOUND 130,39,5,1:FOR dl=1 TO 70:NEXT:NEXT 2380 LOCATE 14,23:PRINT"TIME'S UP" 2390 FOR dl=1 TO 5000:NEXT:FOR i=1 TO 30:PRINT:NEXT:RETURN 2400 REM Weigh-in 2410 PRINT CHR$(23)CHR$(0); 2420 PEN 3:LOCATE 5,1:PRINT"UNITED KINGDOM FISHING CONTEST" 2430 PEN 1:LOCATE 2,3:PRINT"Position"SPC(7)"Name"SPC(7)"Weight (lb)" 2440 MOVE 8,376:DRAW 632,376:MOVE 8,344:DRAW 632,344:MOVE 8,216:DRAW 632,216 2450 MOVE 8,376:DRAW 8,216:MOVE 168,376:DRAW 168,216 2460 MOVE 424,376:DRAW 424,216:MOVE 632,376:DRAW 632,216 2470 IF weight(1)>80 THEN msc=weight(1) ELSE msc=80 2480 p=1:FOR loop=msc TO 0 STEP -1:FOR i=1 TO 7 2490 IF weight(1)=loop AND i=1 THEN PEN 2 ELSE PEN 1 2500 IF weight(i)=loop THEN LOCATE 5,p+4:PRINT p;STRING$(4,9)name$(i):LOCATE 31,p+4:PRINT weight(i):p=p+1:IF p-1=1 THEN winner$=name$(i) 2510 NEXT:NEXT:LOCATE 1,13 2520 PRINT"The winner,"winner$",will receive" 2530 LOCATE 4,15:PRINT"The sponsor's solid-gold trophy." 2540 PEN 0:PAPER 3:LOCATE 10,17:PRINT SPC(21):LOCATE 10,18:PRINT"UNITED KINGDOM ANGLER" 2550 LOCATE 10,19:PRINT SPC(5)"OF THE YEAR"SPC(5):LOCATE 12,20:PRINT SPC(17) 2560 LOCATE 14,21:PRINT " PRESENTED TO":LOCATE 14,22:PRINT SPC(13) 2570 LOCATE 12,23:PRINT SPC(17):LOCATE 20-INT(LEN(winner$)/2),23:PRINT winner$:GOSUB 2620 2580 PEN 1:PAPER 0:LOCATE 11,25:PRINT"Press a key to fish"; 2590 IF INKEY$<>"" THEN 2590 2600 CALL &BB18:RETURN 2610 REM Jingle 2620 FOR i=1 TO 15:READ tp1,tp2,d:SOUND 17,tp1,d,15,1:SOUND 10,tp2,d,15,1:NEXT 2630 RETURN 2640 DATA 159,190,40,190,239,20,239,319,40 2650 DATA 213,252,20,190,239,40,213,252,20 2660 DATA 190,239,20,159,190,70,0,0,10 2670 DATA 159,190,40,190,239,20,239,319,40 2680 DATA 190,239,20,213,252,60,239,319,60 |