20 REM HUNCH.BAS - Ett spel 30 REM ** Henrik ]shuvud ** 84-08-14 ** 40 REM Konverterat till ABC80X av Kristoffer Eriksson 86-05-14 50 REM Alla ljudeffekter har tyv{rr m}st utg}. 55 REM F|r att fungera p} ABC806 kr{vs DOTOPT.BAC. ABC800 klarar inte grafik. 60 REM 80 INTEGER : EXTEND 81 C1$=GYEL 82 C2$=YEL 83 C3$=GRED 84 C4$=CYA 85 ! 90 GOTO 2760 100 G=1 : L2=300 : L4=5 110 M=1 : Y5=38 120 P1=71 : P2=2 : P3=76 130 ; CHR$(12) : FOR I=1 TO 24 : ; : ; C1$; : NEXT I 140 REM **** VANLIG MUR **** 150 FOR I=12 TO 20 STEP 2 160 ; CUR(I,1) "//%//%//%//%//%//%//%//%//%//%//%//%//%"; 170 ; CUR(I+1,1) "/*//*//*//*//*//*//*//*//*//*//*//*//*%"; 180 NEXT I 190 ; CUR(22,1) "//%//%//%//%//%//%//%//%//%//%//%//%//%"; 200 \=36 210 ; CUR(0,\) "~#k" CUR(1,\-1) "j5" CUR(2,\-1) "#+#"; 220 FOR I=3 TO 29 : SET DOT I,\*2+5 : NEXT I 230 IF \<30 THEN 490 240 ON G GOSUB 370,320,380,320,320,380,320,320,380,320,320,380,320,390 250 ON G GOSUB 370,370,500,400,370,500,370,400,470,370,400,470,400,370 260 ON G GOTO 2620,2630,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750 265 ! 270 O=O-G1*25 : IF O<100 O=100. 280 ; CUR(0,0) C4$ L2 C1$; 290 ; CUR(0,28) C4$ L4 C1$; : GOTO 750 300 IF G=3 OR G=6 GOSUB 520 310 GOTO 300 320 FOR I=12 TO 18 330 ; CUR(I,5) " " CUR(I,16) " " CUR(I,26) " "; 340 NEXT I 350 FOR I=36 TO 55 : CLR DOT I,22 : CLR DOT I,31 : CLR DOT I,64 360 NEXT I 370 RETURN 380 FOR I=12 TO 19 : ; CUR(I,8) " "; : NEXT I : FOR I=36 TO 59 : CLR DOT I,64 : NEXT I 390 RETURN 395 ! 400 V=8 410 ; CUR(11,V) '`' CUR(12,V-3) 'h h1y' CUR(13,V-3) 'j j{{' CUR(14,V-3) 'j "l&' CUR(15,V-3) 'jjks{k'; 420 ; CUR(16,V-3) 'j.j,nj' CUR(17,V-3) 'j j7' CUR(18,V-3) 'j z50'; 430 IF V=29 RETURN 440 ; CUR(11,19) '0' CUR(12,16) '4 vb4' CUR(13,16) '5 ww5' CUR(14,16) '5 )24. THEN U=-1 600 IF J.<13. THEN U=1 610 RETURN 615 ! 620 GOTO 520 630 ; CUR(7,M) ' 9' CUR(8,M-1) ' 8~<0' CUR(9,M-1) ' %5&' CUR(10,M) ' 75' CUR(11,M) 'f u '; 640 IF NOT DOT(36,M*2+5) AND NOT DOT(36,M*2+6) 2080 650 IF NOT DOT(36,M*2+4) AND NOT DOT(36,M*2+5) 2080 660 ]=1 670 IF M>=35 THEN 1820 680 GOSUB 1120 690 FOR I=0 TO O : NEXT I 700 IF D4=4 THEN 2070 710 I=FNKey : IF I=216 OR I=248 THEN 750 720 IF I=174 THEN 850 730 IF I=173 THEN 1180 740 GOTO 680 745 ! 750 ; CUR(7,M+1) 'jw$' CUR(8,M) '`l}d' CUR(9,M) ')j*' CUR(10,M+1) 'j+0' CUR(11,M) ' j0j0'; 760 ]=2 770 IF NOT DOT(36,M*2+4) AND NOT DOT(36,M*2+5) 2080 780 GOSUB 1120 790 FOR I=0 TO O : NEXT I 800 IF D4=4 THEN 2070 810 I=FNKey : IF I=216 OR I=248 THEN M=M+1 : GOTO 630 820 IF I=174 THEN 850 830 IF I=173 THEN 1180 840 GOTO 780 845 ! 850 ; CUR(11,M) ' '; 860 REM OUT 6%,5% 870 S=5 : U1=-1 880 ; CUR(S,M) ' 9 ' CUR(S+1,M) '8~<0' CUR(S+2,M) '%5%' CUR(S+3,M) "`'e " CUR(S+4,M) 'u u'; 890 IF U1=-1 ; CUR(S+5,M) ' '; 900 IF U1=1 ; CUR(S-1,M+1) ' '; 910 IF S=3 U1=1 920 FOR I=0 TO O : NEXT I 930 GOSUB 1120 940 IF D4=4 THEN 2070 950 S=S+1*U1 960 IF R=1 M=M+1 970 IF S=7 THEN 990 980 GOTO 880 985 ! 990 ; CUR(6,M) ' '; 1000 ; CUR(S,M) ' ' CUR(S+3,M) ' '; 1010 REM OUT 6%,0% 1020 IF R=1 M=M-1 1030 R=0 1040 ON ] GOTO 630,750 1045 ! 1050 IF P1<72 THEN 1065 1060 P1=72 1065 ; CUR(23,38) C3$; 1070 FOR I=P1 TO P1+5 : SET DOT 32,I : NEXT I : CLR DOT 32,I+1 : CLR DOT 32,I+2 1075 ; CUR(23,38) C1$; 1080 P1=P1-2 1090 IF DOT(32,I-7) AND P1<>31 D4=4 : RETURN 1100 IF P1=1 FOR I=3 TO 9 : CLR DOT 32,I : NEXT I : P1=71 1110 RETURN 1115 ! 1120 REM ******** UPPSAMLING & DISTRUB.* 1130 IF G=3 OR G=6 THEN 520 1140 ON G GOSUB 1050,1160,100,1500,1050,100,1920,2040,1920,2510,1920,2510,2510,2510 1150 GOSUB 2560 1160 RETURN 1170 REM *** H\GER-HOPP VAL *** 1180 ON G GOTO 1190,1190,1350,1190,1190,1350,1190,1190,1190,1190,1190,1190,1190,1040 1190 REM 1200 IF M>=33 THEN 1040 1210 ; CUR(11,M) ' ' CUR(10,M+1) ' ' CUR(8,M) ' '; 1220 S2=0 : M=M+2 1230 ; CUR(10,M) ' '; 1240 ; CUR(6,M) ' 9' CUR(7,M-1) ' 8~<0' CUR(8,M-1) ' )5&0' CUR(9,M-2) " '#!##!"; 1250 IF D4=4 THEN 2070 1260 IF M>=35 THEN 1820 1270 GOSUB 1120 1280 FOR I=0 TO O : NEXT I 1290 IF D4=4 THEN 2070 1300 M=M+1 : S2=S2+1 : IF S2=6 THEN 1330 1310 IF G=9 OR G=12 THEN 2150 1320 GOTO 1240 1330 ; CUR(6,M) ' ' CUR(7,M-1) ' ' CUR(8,M-1) ' ' CUR(9,M-2) ' '; 1340 GOTO 1040 1350 ! 1360 IF M>29 OR M<2 THEN 1040 1370 S2=0 : M=M+1 : R4=0 1380 ; CUR(7,M-1) ' jw$ ' CUR(8,M-1) ' h},,' CUR(9,M-2) ' j ' CUR(10,M-2) ' "k ' CUR(11,M-2) " '# "; 1390 IF DOT(25,M*2+8) R4=4 1400 GOSUB 1120 1410 FOR I=0 TO O : NEXT I 1420 IF R4=4 M=J.-3 : GOTO 1460 1430 M=M+1 : S2=S2+1 : IF S2=6 THEN 1470 1440 IF DOT(25,M*2+6) R4=4 1450 GOTO 1380 1460 IF FNKey=173 THEN 1470 ELSE 1380 1470 ; CUR(7,M-1) ' ' CUR(8,M-1) ' ' CUR(9,M-2) ' ' CUR(10,M-2) ' ' CUR(11,M-1) " "; 1480 IF S2=6 THEN 1040 1490 M=M+3 : GOTO 1370 1495 ! 1500 REM *** VAKTERNAS SPJUTR\RELSE **** 1510 N=N+1 : IF N=1 V5=11 : GOTO 1560 1520 IF N=2 V5=32 : GOTO 1560 1530 IF N=3 V5=53 : GOTO 1560 1540 IF N>3 N=0 1550 RETURN 1555 ! 1560 IF V6=4 THEN 1700 1570 SET DOT Y5,V5 : CLR DOT Y5+20,V5 1580 IF Y5>33 SET DOT 57,V5 : SET DOT 58,V5 1590 IF Y5<30 THEN 1660 1600 IF Y5=30 THEN 1770 1610 SET DOT Y5-1,V5 : CLR DOT Y5+19,V5 1620 IF Y5<30 THEN 1680 1630 N=N-1 : Y5=Y5-2 1640 IF Y5=26 V6=4 1650 RETURN 1655 ! 1660 IF DOT(Y5-1,V5) 1790 1670 GOTO 1610 1680 IF DOT(Y5-2,V5) 1790 1690 GOTO 1630 1700 REM 1710 CLR DOT Y5,V5 : SET DOT Y5+19,V5 1720 CLR DOT Y5+1,V5 : SET DOT Y5+20,V5 1730 IF Y5=30 THEN 1780 1740 N=N-1 : Y5=Y5+2 1750 IF Y5=38 N=N+1 : V6=0 1760 RETURN 1765 ! 1770 CLR DOT 49,V5+1 : FOR I=46 TO 49 : CLR DOT I,V5+2 : NEXT I : SET DOT 44,V5+1 : GOTO 1610 1780 SET DOT 49,V5+1 : FOR I=46 TO 49 : SET DOT I,V5+2 : NEXT I : CLR DOT 44,V5+1 : GOTO 1740 1790 FOR I=Y5 TO Y5+12 : SET DOT I,V5 : NEXT I 1800 D4=4 : RETURN 1805 ! 1810 REM *** KLOCK-KLANG & DYL ********* 1820 K1=34 1830 ; CUR(0,K1) '`|6' CUR(1,K1-1) '+?! ' CUR(2,K1) '"% '; 1840 ; CHR$(7); ! OUT 6.,121. : ; CHR$(7); 1850 FOR I=20 TO 29 : SET DOT I,77 : NEXT I 1860 G=G+1 : W=0 : W1=0 : V6=0 : N=0 1870 FOR I=0 TO 2000 : NEXT I 1880 IF G=15 G=1 : G1=G1+1 : GOTO 3170 1890 ]7=]7+L2 : ; CUR(0,0) C4$ ]7 C1$; 1900 FOR I=0 TO 3000 : NEXT I 1910 GOTO 110 1920 GOSUB 1050 1930 GOSUB 1960 1940 IF G=11 GOSUB 1500 1950 RETURN 1955 ! 1960 IF W=4 THEN 1975 1970 IF P1=49 W=4 ELSE RETURN 1975 ; CUR(23,38) C3$; 1980 SET DOT 33,P2 : IF P2>4 CLR DOT 33,P2-3 1985 ; CUR(23,38) C1$; 1990 IF DOT(33,P2+1) 2020 2000 P2=P2+1 : IF P2=78 W=0 : FOR I=P2-4 TO P2 : CLR DOT 33,I : NEXT I : P2=2 2010 RETURN 2015 ! 2020 IF P2=10 OR P2=31 OR P2=52 THEN 2000 2030 D4=4 : GOTO 2000 2040 GOSUB 1050 2050 GOSUB 1500 2060 RETURN 2065 ! 2070 ; CHR$(7); : FOR I=0 TO 5000 : NEXT I ! OUT 6,5 ... OUT 6,7 2080 IF S=0 S=7 2090 ; CUR(S-1,M) ' '; 2100 ; CUR(S,M) ' 9 ' CUR(S+1,M) '8~<0' CUR(S+2,M) '%5%' CUR(S+3,M) "`'e " CUR(S+4,M) 'u u'; 2110 S=S+1 : IF S=19 THEN 2140 2120 FOR I=0 TO 250 : NEXT I 2130 GOTO 2090 2140 L4=L4-1 : H2=0 : W=0 : W1=0 : V6=0 : N=0 : D4=0 : S=7 ! : OUT 6,0 2145 IF L4=0 THEN 2760 ELSE 110 2150 IF DOT(19,M*2+5) S2=0 : GOTO 2180 2160 IF S2=2 AND M>9 FOR I=15 TO 26 : SET DOT I,M*2-3 : NEXT I 2170 GOTO 1240 2180 ! 2190 ; CUR(6,M) ' ' CUR(7,M-1) ' j' CUR(8,M-1) ' j ' CUR(9,M-2) ' j '; 2200 M=M+3 : K=7 : U5=-1 2210 ; CUR(K,M-2) 'hk9 ' CUR(K+1,M-2) '"n~<0' CUR(K+2,M-2) ' j=!' CUR(K+3,M) '75 ' CUR(K+4,M) 'uj0'; 2220 GOSUB 1120 2230 FOR I=0 TO O : NEXT I 2240 IF D4=4 THEN 2070 2250 IF H2=4 THEN 2290 2260 I=FNKey : IF I=174 THEN H2=4 2270 IF I=173 THEN 2360 2280 GOTO 2220 2290 ! 2300 K=K+1.*U5 2310 IF K=3 U5=1 : ; CUR(K+5,M) ' '; : GOTO 2330 2320 IF U5=1 ; CUR(K-1,M-2) ' j '; 2330 IF U5=-1 ; CUR(K+5,M) ' '; 2340 IF K=7 H2=0 : U5=-1 2350 GOTO 2210 2360 REM 2370 ; CUR(10.,M) ' ' CUR(11,M+2) ' '; 2380 M=M-3 2390 GOTO 1190 2400 ! 2410 IF W1=4 THEN 2425 2420 IF P1=15 OR P1=27 W1=4 ELSE RETURN 2425 ; CUR(23,38) C3$; 2430 SET DOT 20,P3 : IF P3<74 CLR DOT 20,P3+3 2435 ; CUR(23,38) C1$; 2440 IF DOT(20,P3-1) 2480 2450 IF G=12 SET DOT 20,25 : SET DOT 20,39 : SET DOT 20,53 2460 P3=P3-1 : IF P3=2 FOR I=3 TO 5 : CLR DOT 20,I : NEXT I : P3=76 : W1=0 2470 RETURN 2480 IF G<>12 D4=4 2490 IF P3=26 OR P3=40 OR P3=54 THEN 2450 ELSE D4=4 2500 RETURN 2510 GOSUB 1050 2520 GOSUB 1960 2530 GOSUB 2400 2540 IF G=13 GOSUB 1500 2550 RETURN 2560 ! 2570 L1=L1+1 : IF L1=10 THEN 2580 ELSE RETURN 2580 L1=0 : L2=L2-10 2590 ; CUR(0,0) C4$ ' ' CUR(0,0) C4$ L2 C1$; 2600 IF L2=0 D4=4 2610 RETURN 2615 ! 2620 O=300 : L2=200 : GOTO 270 2630 O=400 : L2=200 : GOTO 270 2640 O=200 : L2=300 : GOTO 270 2650 O=150 : L2=300 : GOTO 270 2660 O=250 : L2=300 : GOTO 270 2670 O=100 : L2=300 : GOTO 270 2680 O=300 : L2=350 : GOTO 270 2690 O=200 : L2=400 : GOTO 270 2700 O=250 : L2=400 : GOTO 270 2710 O=300 : L2=500 : GOTO 270 2720 O=150 : L2=400 : GOTO 270 2730 O=150 : L2=400 : GOTO 270 2740 O=150 : L2=400 : GOTO 270 2750 O=150 : L2=500 : GOTO 270 2760 ; CHR$(12) '********************************************************************************' 2770 ; CUR(20,0) '********************************************************************************' 2780 FOR I=1 TO 19 : ; CUR(I,0) '**' CUR(I,38) '**' : NEXT I 2790 ; CUR(3,14) '************' CUR(4,14) '*HUNCH BACK*' CUR(5,14) '************' 2800 ; CUR(7,4) 'Smit ifr}n borgen, men se upp' 2810 ; CUR(9,4) 'f|r alla farligheter!' 2820 ; CUR(11,15) 'STYR MED:' 2830 ; CUR(13,4) 'X=H|ger .=Hopp -=H|ger-hopp' 2840 ; CUR(16,7) 'High score:' CUR(18,7) 'Din po{ng: ' 2850 ; CUR(18,18) ]7 : IF ]7>]8 ]8=]7 2860 ; CUR(16,18) ]8 2870 G1=0 : L2=0 : L4=5 : ]7=0 : RESTORE 2880 IF FNKey>128 THEN 2900 2890 GOTO 2880 2895 ! 2900 ; CHR$(12) : FOR I=1 TO 24 : ; : ; C1$; : NEXT I 2910 FOR I=42 TO 68 : SET DOT I,6 : NEXT I : FOR I=7 TO 61 : SET DOT 68,I : NEXT I 2920 FOR I=24 TO 68 : SET DOT I,61 : NEXT I : FOR I=24 TO 50 : SET DOT I,69 : NEXT I 2930 FOR I=18 TO 53 : SET DOT 33,I : NEXT I 2940 ; CUR(1,7) ':0' CUR(1,29) '7,0' CUR(2,6) '`%e' CUR(2,29) '=#' CUR(3,6) 'j,n' CUR(3,29) '5'; 2950 ; CUR(4,6) 'j"j `p0`p0`p0`p0`p0`p0jj `ppp'; 2960 ; CUR(5,6) 'j j,7k-7k-7k-7k-7k-7k-5 5=,lk'; 2970 ; CUR(6,6) 'j#k#!"#!"#!"#!"#!"#!"k j#k"{'; 2980 ; CUR(7,6) '5`o' CUR(7,27) 'jppz 5`o'; 2990 ; CUR(8,5) 'j jj' CUR(8,27) 'jh jj :'; 3000 ; CUR(9,4) '`% 5j' CUR(9,27) 'j `j!`%'; 3010 ; CUR(10,4) ': j j' CUR(10,27) 'j "j 6'; 3020 ; CUR(11,3) "h! 5`'" CUR(11,27) 'k jj'; 3030 ; CUR(12,3) '6 : 68,| 8,| 8,| 8,| 8,|j* j5'; 3040 ; CUR(13,3) '7k h!7kj 7kj 7kj 7kj 7kjj'; 3050 ; CUR(14,4) 'j8-,5j:,5j:,5j:,5j:,5j:n'; 3060 ; CUR(15,4) '"###!"##!"##!"##!"##!"##'; 3070 ; CUR(17,34) '6' CUR(18,33) ':' CUR(19,32) '`%' CUR(20,32) '6' CUR(21,31) 'h!' CUR(22,31) '6'; 3080 ; CUR(19,13) "8c'd" CUR(20,13) '55 j' CUR(21,13) '55 j' CUR(22,13) 'u% j'; 3085 FOR B=0 TO 3000 : NEXT B : GOTO 100 ! ---- Melodin utesluten 3090 READ A,B : IF B=0 THEN 100 ! OUT 6,0 : THEN ... 3100 FOR X=1 TO A ! OUT 6,0,6,121 3110 FOR I=1 TO B : NEXT I : NEXT X 3120 FOR I=0 TO 10 : NEXT I 3130 GOTO 3090 3140 GOTO 100 3150 DATA 40,63,70,46,35,46,60,46,70,35,80,40,40,46,50,40,65,35,65,46,40,46,60,35,65,29,200,25 3160 DATA 75,25,90,29,60,35,90,35,60,46,70,40,40,46,50,40,70,35,70,46,40,56,45,56,40,63,110,46,0,0 3165 ! 3170 IF G1>4 G1=4 3180 ! OUT 6,11 3190 A1=0 3200 ON G1 GOTO 3210,3240,3270,3300 3210 ; CUR(8,A1+2) ' 8,,,,u0' CUR(9,A1+2) ' "####% '; 3220 FOR I=0 TO 100 : NEXT I 3230 A1=A1+1 : IF A1=26 THEN 3330 ELSE 3210 3240 ; CUR(7,A1+2) ' `|}t' CUR(8,A1+2) ' ##7#!' CUR(9,A1+4) ' e$'; 3250 FOR I=0 TO 100 : NEXT I 3260 A1=A1+1 : IF A1=27 THEN 3330 ELSE 3240 3270 ; CUR(8,A1+2) ' (=' CUR(9,A1+2) ' 6#4' CUR(10,A1+2) ' ),!'; 3280 FOR I=0 TO 100 : NEXT I 3290 A1=A1+1 : IF A1=27 THEN 3330 ELSE 3270 3300 ; CUR(8,A1+2) ' 6ipp' CUR(9,A1+2) ' )&"*'; 3310 FOR I=0 TO 100 : NEXT I 3320 A1=A1+1 : IF A1=27 THEN 3330 ELSE 3300 3330 FOR I=0 TO 4000 : NEXT I 3340 L4=L4+1 3350 ! OUT 6,0 3360 GOTO 1890 3900 ! 4000 DEF FNKey LOCAL G$=1 4010 IF SYS(5) THEN GET G$ : RETURN ASCII(G$) OR 128 ELSE RETURN 0 4020 FNEND