senior_falcon Posted July 13, 2020 Share Posted July 13, 2020 3 minutes ago, oddemann said: 430 IF X=18 THEN CALL PATTERN(#2,13) ELSE 420 PATTERN has to use an integer from 32 to 143. (Page 142 of XB manual) Quote Link to comment Share on other sites More sharing options...
oddemann Posted July 13, 2020 Author Share Posted July 13, 2020 (edited) 8 minutes ago, senior_falcon said: PATTERN has to use an integer from 32 to 143. (Page 142 of XB manual) Thx!!! That solved it.... Looked at the PDF... there was a 1 lurking in the line under :p The ref to manual and 32-143 helped! f... bugs... or is it my eyes... I spent so much time, reading and reading over and trying to be sure that I typed in everything correct after the bug. BUT... manged to NOT see the "1" lurking in the line right under... "Programmers blindness!" - wounder what sets it off! And how to de-bug that bug :p hehehe Line 430 is... IF X=18 THEN CALL PATTERN(#2,131) ELSE 420 With that bug fixed... Next fix... 570 CALL MOTION(#2,0,0):: CALL SOUND(200,-4,3):: CALL PATTERN(#2,43) Edited July 13, 2020 by oddemann Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 13, 2020 Share Posted July 13, 2020 1 hour ago, oddemann said: 570 CALL MOTION(#2,0,0):: CALL SOUND(200,-4,3):: CALL PATTERN(#2,43) I don't see anything obvious here. One of the drawbacks of multistatement lines is that you don't know which part of the line is causing the error. If you divide this line into 3 lines then you will get more information from the error message: 570 CALL MOTION (#2,0,0) 571 CALL SOUND(200,-4,3) 572 CALL PATTERN(#2,43) 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted July 13, 2020 Share Posted July 13, 2020 3 hours ago, oddemann said: I typed in everything I find this much easier... Tigercub 1444 - More Fine Joystick Games (19xx)(Tigercub Software)(PD).dsk 1 Quote Link to comment Share on other sites More sharing options...
oddemann Posted July 17, 2020 Author Share Posted July 17, 2020 Not really a problem... But a update of PARATROOPER to PARATROOPER 1.8... There are some "tiny" bugs and stuff I want to make/add to this game before it is PARATROOPER 2 - Thinking about making the bouts move up and down in the sea too... Anims ready! Need to play around and see how it looks. - Make a dancing man when he hits targets... Anims ready! Have to move Dance "partner" to a better place to get correct color. - Fix <>... "Just do it!" - Maybe move 75,50,25 in front of targets... (and have the man dancing on top)... Tinkering and number testing... Boring :p hehehe - Maybe use magnify to make a level 1-2-3. First level is everything big, next level is small and last Experienced. Not give the option of N or E! Let everyone start at lvl 1, then redraw after X score. Huge change in program! - Make sure that sprite of bout is in front of splash! Figure out WHY Sprite is behind... :p - And MAYBE fix the colored letters by moving graphics around... VERY LOW on list! I have been adding "better" visuals... WOW how limiting the TI 99/4A is... Or more correct Ex B. Been a lot of planing where to put the graphic to get the colors right. And jumping around and NOT "delete" some text or symbols... It is a very limiting lango / ram! Well, I can ask about this... In the MISS of target... (Line 580)... It is displaying Parachute as green.. OK... But I want to make the waves light blue. I have not figures out way Call Color(12,6.5) will not make 120 light blue... Help? I guess it has something to do with Call Pattern? But anyway... what do you think about it so fare? 10 REM EXTENDED BASIC REQUIRED 20 CALL CLEAR :: RANDOMIZE :: CALL MAGNIFY(3) 25 CALL CHAR(60,"01073F7FF8914B25130F01010103020680E0FCFE1F89D2A4C8F0808080C04060") 26 CALL CHAR(130,"107CFE8254381028") 30 FOR T=10 TO 14 :: FOR I=10 TO 14 :: DISPLAY AT(12,9):"PARATROOPER" 40 CALL SCREEN(T) :: NEXT I :: NEXT T 45 CALL SPRITE(#28,60,13,1,115,2,0) 50 CALL SCREEN(12) 60 FOR T=450 TO 550 STEP 50 :: FOR I=9 TO 19 70 CALL COLOR(13,4,1) :: DISPLAY AT(14,I):CHR$(130) 80 CALL SOUND(10,T,3) :: NEXT I :: NEXT T 90 FOR I=1 TO 100 :: NEXT I :: GOSUB 920 100 DISPLAY AT(22,2):"NEED INSTRUCTIONS (Y/N)" 110 ACCEPT AT(22,25)VALIDATE("YNyn") : Y$ 115 CALL DELSPRITE(#28) 120 IF (Y$="Y")OR(Y$="y")THEN 750 130 IF (Y$="N")OR (Y$="n")THEN 860 140 CALL CLEAR :: CALL SCREEN(8) 150 CALL CHAR(33,"47A424468181A5E2",34,"E28585C52525A542") 160 CALL CHAR(35,"F794141621418582",120,"00030812241348201B0000000000000000A018E412E409029C00000000000000") 170 CALL CHAR(96,"00008187DFFF78000000000000000000000081E1FFFE1C000000000000000000",136,"030100010307070F1F1F3F3F7F00FF7F8080004040606060707078787C80FFFC") 180 CALL CHAR(104,"0103C3417F3F07070707077E7C40000080C0C080FCFEE2E3E0E0E06060606070",132,"202031337373F7FF") 190 CALL CHAR(133,"020203070F8FDFFF",64,"FFFFFFFFFFFFFFFF") 200 CALL CHAR(91,"FFFFFFFFFFFFFFFF",129,"00E0A6E6A6FEBAEE") 210 CALL CHAR(36,"000000000103077FDDFF3F0703010000000078F0E0C387FF57FFFE80C0E0F000",40,"FFFFCECEFF7F19191F1F19191F000000FFFF7373FFFE9898F8F89898F8000000") 220 CALL CHAR(44,"FFFFCECEFF7F19191F1F19191F000000FFFF7373FFFE9898F8F89898F8000000",92,"FFFFCECEFF7F19191F1F19191F000000FFFF7373FFFE9898F8F89898F8000000") 230 CALL CHAR(128,"183C7E7EFFFF1818",140,"00000603311EE63F5EFF7F0F1F000000000000C0E0E8F47EFFFFFFFFFE000000") 235 CALL CHAR(134,"0000889899DDFFFF",135,"008888DCDCDEFEFF") 236 CALL CHAR(104,"0103C3417F3F07070707077E7C40000080C0C080FCFEE2E3E0E0E06060606070") 240 CALL SCREEN(8) :: CALL COLOR(9,4,8,10,6,1) :: CALL COLOR(5,5,1) 250 CALL HCHAR(16,1,64,256) 260 FOR I=1 TO 31 STEP 4 :: CALL HCHAR(16,I,132) :: CALL HCHAR(16,I+1,133) :: CALL HCHAR(16,I+2,134) :: CALL HCHAR(16,I+3,135) :: NEXT I 270 POINT=0 :: PARA=10 280 FOR N=22 TO 24 :: G=INT(RND*100)+10 290 CALL SPRITE(#N,140,15,G,G+120,0,.60) :: NEXT N :: CALL MAGNIFY(3) 300 S=7 :: FOR N=4 TO 6 :: S=S-1 310 D=INT(RND*5)+1 :: DD=INT(RND*14)+3 :: IF(D=OD)+(DD=ODD)+(DD=6) THEN 310 320 OD=D :: ODD=DD :: J=N*10+90+RND*10 :: CALL SPRITE(#S,136,DD,J,J,0,D) :: NEXT N :: CALL MAGNIFY(3) 330 IF FL=1 THEN 370 ELSE DISPLAY AT(15,5):CHR$(35) :: DISPLAY AT(15,14):CHR$(34) 340 DISPLAY AT(15,23):CHR$(33) 350 CALL SPRITE(#3,32,1,180,180,0,60) 360 CALL SPRITE(#7,40,7,121,193,#8,44,12,121,121,#9,92,13,121,49) 370 IF PARA=0 THEN 630 ELSE RANDOMIZE :: U=INT(RND*70)+10 380 CALL SPRITE(#1,36,13,U,10,0,-12,#2,36,4,U,7,0,-12) 390 V=INT(RND*9)+1 :: L=INT(RND*4)+1 400 DISPLAY AT(1,1):"TROOPS LEFT";PARA;" SCORE";POINT 410 DISPLAY AT(24,2):"WIND SPEED";L*2;" WEIGHT";(V*25)+50 420 CALL KEY(1,X,Y) 430 IF X=18 THEN CALL PATTERN(#2,60) ELSE 420 440 CALL MOTION(#2,V,L) :: CALL SOUND(30,-6,5,150,5) 450 CALL COINC(#2,#7,Z,C) 460 CALL COINC(#2,#8,Z,CC) 470 CALL COINC(#2,#9,Z,CCC) 480 IF(C=-1)+(CC=-1)+(CCC=-1)THEN 510 490 CALL COINC(#2,#3,50,R) :: IF R=-1 THEN 570 500 GOTO 450 510 CALL MOTION(#2,0,0) :: CALL PATTERN(#2,104) :: CALL SOUND(-1500,5995,4) 520 FOR T=950 TO 1500 STEP 50 :: CALL SOUND(50,T,3) :: NEXT T 530 POINT=POINT-25*(C=-1)-50*(CC=-1)-75*(CCC=-1) 540 CALL DELSPRITE(#1,#2) :: DISPLAY AT(13,5):"MISSION ACCOMPLISHED" 550 FOR I=1 TO 150 :: NEXT I 560 CALL HCHAR(13,5,32,22) :: GOTO 370 570 CALL COLOR(2,6,1) :: CALL MOTION(#2,0,0):: CALL SOUND(200,-4,3):: CALL PATTERN(#2,96) 580 FOR I=1 TO 100 :: NEXT I :: CALL PATTERN(#2,120) :: FOR I=1 TO 200 :: NEXT I 590 CALL DELSPRITE(#1,#2) :: DISPLAY AT(13,3):"YOU MISSED THE DROP ZONE" 600 POINT=POINT-10 :: PARA=PARA-1 610 FOR I=1 TO 150 :: NEXT I :: CALL HCHAR(13,3,32,26) 620 GOTO 370 630 CALL HCHAR(1,1,32,29) :: CALL HCHAR(24,1,32,29) 640 FOR I=450 TO 850 STEP 25 :: CALL SOUND(50,I,3) :: NEXT I 650 FOR T=850 TO 450 STEP-25 :: CALL SOUND(50,T,3) :: NEXT T 660 DISPLAY AT(7,10):"GAME OVER" 670 DISPLAY AT(9,6):"YOU HAD ";POINT;"POINTS" 680 DISPLAY AT(12,2):"WANT TO PLAY AGAIN? (Y/N)" 690 ACCEPT AT(12,27)VALIDATE("YN"):R$ 700 IF R$="N" THEN 730 710 CALL HCHAR(12,4,32,26) :: CALL HCHAR(7,12,32,9) :: CALL HCHAR(9,6,32,24) 720 FL=1 :: GOTO 270 730 CALL CLEAR :: CALL DELSPRITE(ALL) :: CALL SCREEN(14) :: DISPLAY AT(12,10):"GOOD BYE " 740 GOSUB 920 :: END 750 CALL CLEAR :: CALL SCREEN(12) 760 PRINT "LAND YOUR PARATROOPERS ON","DROP PADS WORTH 75, 50, OR" 770 PRINT "25 POINTS. RELEASE EACH","WITH THE FIRE BUTTON ON","JOYSTICK #1 OR THE (Q) KEY.": : 780 PRINT "IF YOU MISS, YOU WILL DRIFT","INTO THE OCEN AND LOSE 10" 790 PRINT "POINTS. YOU CAN ONLY LOSE","10 TROOPERS BEFORE THE","GAME ENDS.": : :: PRINT "THE WIND SPEED AND WEIGHT" 800 PRINT "OF EACH TROOPER ARE DIS-","PLAYED AT THE BOTTOM OF THE","SCREEN. CONSIDER THE SPEED" 810 PRINT "OF DESCENT AND THE DRIFT " 820 PRINT "CHECK THESE BEFOR RELEASING","EACH PARATROOPER." 830 PRINT TAB(10);"GOOD LUCK!": : 840 PRINT TAB(14);"PRESS ANY KEY TO BEGIN" 850 CALL KEY(0,K,S) :: IF S=0 THEN 850 860 CALL CLEAR :: DISPLAY AT(8,6):"PARATROOPER RANK ?" 870 DISPLAY AT(11,2):"<N>OVICE OR <E>XPERIENCED" 880 ACCEPT AT(14,28)VALIDATE("EeNn"):C$ 882 IF (C$="N")OR (C$="n")THEN 900 884 IF (C$="E")OR(C$="e")THEN 910 900 CALL MAGNIFY(3) :: Z=10 :: GOTO 140 910 Z=5 :: GOTO 140 920 CALL SOUND(300,330,3) :: CALL SOUND(300,392,3) 930 CALL SOUND(500,392,3) :: CALL SOUND(200,349,3) 940 CALL SOUND(100,330,3) :: CALL SOUND(200,294,3) 950 CALL SOUND(300,330,3) :: CALL SOUND(300,349,3) 960 CALL SOUND(300,370,3) :: CALL SOUND(300,349,3) 970 CALL SOUND(250,440,3) :: CALL SOUND(150,524,3) 980 CALL SOUND(500,524,3) 990 CALL SOUND(300,583,3) :: CALL SOUND(100,523,3) 1000 CALL SOUND(200,440,3) :: CALL SOUND(100,523,3) 1010 RETURN Quote Link to comment Share on other sites More sharing options...
RXB Posted July 17, 2020 Share Posted July 17, 2020 On 7/13/2020 at 4:52 AM, oddemann said: Thx!!! That solved it.... Looked at the PDF... there was a 1 lurking in the line under ? The ref to manual and 32-143 helped! f... bugs... or is it my eyes... I spent so much time, reading and reading over and trying to be sure that I typed in everything correct after the bug. BUT... manged to NOT see the "1" lurking in the line right under... "Programmers blindness!" - wounder what sets it off! And how to de-bug that bug ? hehehe Line 430 is... IF X=18 THEN CALL PATTERN(#2,131) ELSE 420 With that bug fixed... Next fix... 570 CALL MOTION(#2,0,0):: CALL SOUND(200,-4,3):: CALL PATTERN(#2,43) CALL PATTERN(#2,30) ! notice 30 to 159 used RXB handles 30 to 159 of course when using above characters 143 up, care must be taken to stay with higher numbers for characters and sprite numbers. Say for instance Sprite #28 the 4 Characters 156 to 159 redefined for that sprite. I just noticed that I never added CALL PATTERN changes in RXB 2001 to RXB 2015, geez that is a huge oversite on my part. Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted July 18, 2020 Share Posted July 18, 2020 7 hours ago, oddemann said: Well, I can ask about this... In the MISS of target... (Line 580)... It is displaying Parachute as green.. OK... But I want to make the waves light blue. I have not figures out way Call Color(12,6.5) will not make 120 light blue... Help? I guess you change a sprite from parachute to splash. You change the color of a sprite with something like this: CALL COLOR(#2,8) 7 hours ago, oddemann said: But anyway... what do you think about it so far? Very nice. 1 Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted July 18, 2020 Share Posted July 18, 2020 It seems as if the wind has too much effect if your weight is low. Half a man drifts like ... - Just saying. Colors. Contrast. Try white clouds. I had a lot of the original Atari 2600 games when released. Sky Diver is one I skipped, as I thought it wouldn't be that much fun. Apparently you can deploy the parachute, and then steer. I think that would be great additions to your game, instead of just "sit and watch" after pushing the paratrooper out of the plane. Quote Link to comment Share on other sites More sharing options...
oddemann Posted August 7, 2020 Author Share Posted August 7, 2020 I.T. - The Adventure of the Century (Book - Terrific Games for the TI 99 4A) New game test and debugging... I have not done 100% debugging of the DATA, most should be correct. Maybe everything is :p hehehe BUT... I think the problem is somewhere else! I have gone over so many times that my eyes has crossed over and is protesting :p (I was given a sight where many programs where, I am going to look there for this game too). But I am putting it put here, It looks cool (I love D&D) so... Help??? 10 REM TI(EXTENDED)-I.T. 15 CALL CLEAR 20 RANDOMIZE 30 DIM K(36,6),R$(36),H$(15),VP(12),V$(12),B(12),PR(6,3) 40 GOSUB 2810 50 IHD=8 :: NKAM=0 60 GOTO 80 70 GOSUB 130 80 GOSUB 390 90 GOSUB 290 100 IF CWD<5 THEN 70 110 PRINT "You were killed" 120 END 130 NKAM=0 140 IHD=0 150 INPUT "What would you like to do:":C1$ 160 LNG=LEN(C1$) 170 FOR I=1 TO 15 180 IF SEG$(H$(I),1,LNG)=C1$ THEN IHD=I :: I=16 190 NEXT I 200 IF IHD>6 THEN RETURN 210 IF IHD=0 THEN 260 220 NKAM=K(IKM,IHD) 230 IF NKAM<>0 THEN RETURN 240 PRINT "Impossible direction" 230 GOTO 130 260 PRINT "I do not understand " 270 GOTO 130 280 RETURN 290 PRINT "you are in the ";R$(IKM) 300 IF IKM>24 OR BLL=1 THEN 330 310 PRINT "You cannot see much here" 320 GOTO 340 330 IF IVW<>0 THEN PRINT "There is a ";V$(IVW);" here" 340 FOR I=1 TO 6 350 IF K(IKM,I)<>0 THEN PRINT "You can go ";H$(I) 360 NEXT I 370 PRINT 380 RETURN 390 IF NKAM<>0 THEN IKM=NKAM 400 IVW=0 410 FOR I=1 TO 12 420 IF VP(I)=IKM THEN IVW=I :: I=12 430 NEXT I 440 IPS=0 450 FOR I=1 TO 6 460 IF PR(I,1)=IKM THEN IPS=I :: I=6 470 NEXT I 480 IF IKM<12 AND CRI<>8 THEN GOSUB 2670 490 CLL=CLL+BLL 500 IF IHD<7 THEN 530 510 ON IHD-6 GOSUB 560,760,810,910,1130,1220,1340,1420,1500 520 REM 530 IF IPS=0 THEN RETURN 540 ON IPS GOSUB 1620,1840,2080,2180,2290,2470 550 RETURN 560 IF IPS=0 OR IPS>4 THEN PRINT "Killing time is the only thing you can do here" :: RETURN 570 IVWB=7 580 GOSUB 2610 590 IF IBZ=0 THEN PRINT "You can't attack without sword" :: RETURN 600 PRINT "So you want to kill the ";P$(IPS) 610 PRINT "You attack it with your sword"; 620 IF RND<.5 THEN PRINT " but you missed him" :: GOTO 650 630 PRINT " and you give your victim a terrible blow" 640 PR(IPS,3)=PR(IPS,3)-1 650 IF RND>.2 THEN 700 660 PRINT "You can hit it again but be quick" 670 INPUT "Do you want to?(y or n)":Y$ 680 IF Y$<>"y" THEN 700 690 PRINT "You raise your sword again";:: GOTO 620 700 IF PR(IPS,3)>1 THEN RETURN 710 IF PR(IPS,3)=1 THEN PRINT "Your victim is badly wounded" :: RETURN 720 PRINT "You killed your victim" 730 PR(IPS,1)=0 :: IVW=8+IPS 740 VP(IVW)=IKM :: IPS=0 750 RETURN 760 PRINT "Possible commands:" 770 FOR I=1 TO 15 780 PRINT H$(I) 790 NEXT I 800 RETURN 810 IF IVW<>0 THEN 840 820 PRINT "There is nothing to take here" 830 RETURN 840 IF BLL=0 AND IKM<25 THEN PRINT "You cannot take things that you do not see" :: RETURN 850 PRINT "I take the ";V$(IVW);" for you" 860 B(IBMAX)=IVW 870 IBMAX=IBMAX+1 880 VP(IVW)=0 890 IVW=0 900 RETURN 910 INPUT "What would you like to drop? ":D$ 920 LNG=LEN(D$) 930 IVWB=0 940 FOR I=1 TO 12 950 IF D$=SEG$(V$(I),1,LNG) THEN IVWB=I :: I=12 960 NEXT I 970 IF IVWB<>0 THEN 1000 980 PRINT "I do not understand you" 990 RETURN 1000 GOSUB 2610 1010 IF IBZ<>0 THEN 1040 1020 PRINT "Impossible to drop" 1030 RETURN 1040 PRINT "I dropped the ";V$(B(IBZ));" for you" 1050 IVW=B(IBZ) 1060 VP(B(IBZ))=IKM 1070 B(IBZ)=B(IBMAX-1) 1080 IBMAX=IBMAX-1 1090 IF IKM<>25 THEN RETURN 1100 INPUT "Do you want to drop more?(y or n)":Y$ 1110 IF Y$="y" THEN 910 1120 RETURN 1130 IF IBMAX<>1 THEN 1160 1140 PRINT "You own nothing" 1150 GOTO 1200 1160 PRINT "You have the following things:" 1170 FOR I=1 TO IBMAX-1 1180 PRINT V$(B(I)) 1190 NEXT I 1200 PRINT "You can still have ";5-CWD;"wounds before you die" 1210 RETURN 1220 IVWB=6 1230 GOSUB 2610 1240 IF IBZ<>0 THEN 1270 1250 PRINT "Impossible without bandage" 1260 RETURN 1270 PRINT "I use all the bandages to bandage you" 1280 CALL S0UND(100,1000,0) 1290 PRINT "So, that will hold for a while" 1300 CWD=0 1310 B(IBZ)=B(IBMAX-1) 1320 IBMAX=IBMAX-1 1330 RETURN 1340 IVWB=1 1350 GOSUB 2610 1360 IF IBZ<>0 THEN 1390 1370 PRINT "Impossible without a lantern" 1380 RETURN 1390 PRINT "The lantern is on now" 1400 BLL=1 1410 RETURN 1420 IVWB=1 1430 GOSUB 2610 1440 IF IBZ<>0 THEN 1470 1450 PRINT "You do not even have a lantern" 1460 RETURN 1470 PRINT "The lantern is off now" 1480 BLL=0 1490 RETURN 1500 IVWB=4 1510 GOSUB 2610 1520 IF IBZ<>0 THEN 1550 1530 PRINT "Nothing to read" 1540 RETURN 1550 IF BLL=1 OR IKM>24 THEN 1580 1560 PRINT "It is to dark to read here" 1570 RETURN 1580 T$="Uifsf!jt!b!b!sfdfjqu!gps!!!!!!dppljft!jo!uijt!cppl" :: GOSUB 3520 1590 T$="Ju!tbzt|!ublf!b!efbe!!!!!!!!ifmmipvoelboe!tpnfIxifbu/!!!Espq!uijt!po!b!cbBCfdvf!boe!xbju!b!nJovuf" :: GOSUB 3520 1600 PRINT "That is all" 1610 RETURN 1620 IF IVW=3 THEN PR(1,2)=3 :: VP(IVW)=0 :: IVW=0 1630 ON PR(1,2)GOTO 1640,1690,1720,1790,1820 1640 PRINT "I.T.(the intra-terrestrial) is here" 1650 PRINT "It looks like he wants to talk" 1660 PRINT "He talks but you cannot understand him" 1670 PR(1,2)=2 1680 RETURN 1690 T$="J/U/!nblft!hftuvsft!uibu!if!offet!tpnfuijoh!upesjol" :: GOSUB 3520 1700 T$="If!mpplt!sbuifs!eftqfsbuf" :: GOSUB 3520 1710 RETURN 1720 T$="J/U/!offefe!uif!esjol!wfsz!!nvdi/" :: GOSUB 3520 1730 T$="If!tbzt;QMFBTF!hp!epxo!joup!uif!dbwft!boe!gjoe!uif!!!!!!ovmmjuz!cpnc" :: GOSUB 3520 1740 T$="Ju!nbz!cz!op!xbz!fyqmpef/!npotufs!qspufdut/" :: GOSUB 3520 1750 T$="Pomz!ZPVidbo!tbwf!uif!fbsui/" :: GOSUB 3520 1760 PRINT "Suddenly I.T. collapses and falls down" 1770 PR(1,2)=4 1780 RETURN 1790 PRINT "I.T. is in a coma." 1800 PR(I,2)=5 1810 RETURN 1820 PRINT "I.T. is here":"He is in a coma" 1830 RETURN 1840 IF IVW=8 THEN PR(2,2)=5 :: VP(IVW)=0 :: IVW=0 1850 ON PR(2,2)G0T0 1860,1900,1930,1960,2000,2060 1860 PRINT "There is an enormous monsterhere." 1870 PRINT "The monster yells:are you a cookie" 1880 PR(2,2)=2 1890 RETURN 1900 PRINT "The monster yells louder andlouder:ARE YOU ACOOKIE" 1910 PR(2,2)=3 1920 RETURN 1930 PRINT "The monster keeps yelling and becomes rather agressive" 1940 PR(2,2)=4 1950 RETURN 1960 PRINT "The monster gives you a terrible blow. Your head is spinning" 1970 CWD=CWD+1 1980 PR(2,2)=INT(RND*3)+2 1990 RETURN 2000 PRINT "The monster starts to eat atonce." 2010 PRINT "It falls asleep" 2020 CALL SOUND(100,110,0) 2030 K(16,6)=l 2040 PR(2,2)=6 2050 RETURN 2060 PRINT "The monster sleeps" 2070 RETURN 2080 PRINT "There is a snake in here" 2090 IF RND<.4 THEN RETURN 2100 IF IBMAX=1 OR RNDX.5 THEN 2140 2110 IBMAX=IBMAX-1 2120 VP(B(BMAX))=13+INT(RND*12) 2130 PRINT "The snake takes something " 2140 PRINT "It sneaks away" 2150 PRO, l)=PRO, l)+3 2160 IF PR(3,1)>24 THEN PRO, 1)=PRO, 1)-8 2170 RETURN 2180 ON PR(4,2)G0T0 2190,2220,2260 2190 PRINT "There is a giant hellhound in here. It looks like he wants you for dinner" 2200 PR(4,2)=2 2210 RETURN 2220 PRINT "The hellhound attacks you and bites you violently" 2230 CWD=CWD+1 2240 PR(4,2)=3 2250 RETURN 2260 PRINT "The hellhound may attack youagain" 2270 PR(4,2)=2+INT(RND#2) 2280 RETURN 2290 PRINT "The nullity bomb is here" 2300 PRINT "There are three wires: a green one(g),a red one(r) and a yellow one (y)" 2310 PRINT "You must disconnect two of them" 2320 INPUT "Which will be the first one:":X$ 2330 INPUT "And which will be the second one: ":Y$ 2340 CBO=0 :: C$="ryg" 2350 FOR I=1 TO 3 2360 IF X$=SEG$(C$,1,1)THEN CB0=CB0+1 2370 IF Y$=SEG$(C$,1,1)THEN CB0=CB0+1 2380 NEXT I 2390 IF CB0<2 THEN PRINT "Watch out, wrong input" :: GOTO 2300 2400 IF (X$&Y$)="yr" OR(X$&Y$)="ry" THEN 2440 2410 CALL CLEAR 2420 PRINT "By disconnecting the wrong wires, you set the bomb off and the earth was destroyed" 2430 END 2440 CALL CLEAR 2450 PRINT "Congratulations, you succeeded where others failed" 2460 END 2470 IF IVW=0 THEN 2520 2480 PR(6,2)=2 2490 IF VP(2)=IKM AND VP(12)=IKM THEN IVW=8 :: VP(IVW)=IKM :: VP(2)=0 :: VP(12)=0 :: GOTO 2520 2500 VP(IVW)=0 2510 IVW=0 2520 ON PR(6,2)G0T0 2530,2550,2580 2530 PRINT "There is an enormous barbecue here with a large fire under it" 2540 RETURN 2550 PRINT "An awful smell fills your nose" 2560 PR(6,2)=3 2570 RETURN 2580 PRINT "Everything is quiet now. Even the terrible smell fades" 2590 PR(6,2)=1 2600 RETURN 2610 REM 2620 IBZ=0 2630 FOR I=l TO IBMAX-1 2640 IF B(I)=IVWB THEN IBZ=I :: I=IBMAX-1 2650 NEXT I 2660 RETURN 2670 REM 2680 CR0=CR0+1 2690 IF IKM=D(CRO) THEN CRI=CRI+1 2700 IF CR0<8 THEN RETURN 2710 IF CRI=8 THEN 2770 2720 PRINT "Strange forces did somethingto you. It is dark" 2730 PRINT "For a moment you are unconscious" 2740 CR0=1 :: CRI=1 2750 IKM=1 2760 RETURN 2770 PRINT "You hear a strange sound like something being pushed away" 2780 PRINT "Now it has stopped" 2790 K(2,1)=3 2800 RETURN 2810 REM 2820 REM 2830 FOR I=1 TO 36 2840 K(I,1)=I+1 :: K(I,2)=I-1 2850 K(I,3)=I+4 :: K(I,4)=I-4 2860 NEXT I 2870 FOR I=0 TO 24 STEP 12 2880 FOR J=l TO 9 STEP 4 2890 K(I+J+3,1)=0 :: K(I+J,2)=0 2900 NEXT J 2910 FOR J=l TO 4 2920 K(I+J+8,3)=0 :: K(I+J,4)=0 2930 NEXT J 2940 NEXT I 2950 K(1,5)=16 :: K(7,5)=15 2960 K(32,6)=13 :: K(13,5)=32 2970 K(35,6)=18 :: K(18,5)=35 2980 FOR I=1 TO 15 2990 READ IKM :: READ IHD 3000 K(IKM,IHD)=0 3010 NEXT I 3020 REM 3030 IKM=36 3040 IBZ=1 :: IBMAX=1 3050 CKM=0 3060 CLL=0 3070 BLL=0 3080 CWD=0 3090 CRO=0 :: CRI=0 3100 REM 3110 FOR I=1 TO 15 3120 READ H$(I) 3130 NEXT I 3140 IN=-1 3150 FOR I=1 TO 12 3160 READ T$ 3170 GOSUB 3520 3180 V$(I)=TN$ 3190 NEXT I 3200 FOR I=1 TO 6 3210 READ T$ 3220 GOSUB 3520 3230 P$(I)=TN$ 3240 NEXT I 3250 FOR I=1 TO 36 3260 READ T$ 3270 GOSUB 3520 3280 R$(I)=TN$ 3290 NEXT I 3300 FOR I=1 TO 12 3310 READ VP(I) 3320 NEXT I 3330 FOR I=1 TO 6 3340 READ PR(I,1) :: PR(I,2)=1 3350 READ PR(I,3) 3360 NEXT I 3370 FOR I=1 TO 8 3380 READ D(I) 3390 NEXT I 3400 IN=0 3410 RETURN 3420 DATA 21,1,22,2,22,1,23,2,18,1,19,2,16,3,20,4,11,1,12,2,7,1,8,2,7,4,3,3,2,1 3430 DATA east,west,north,south,up,down,kill,help,take,drop,invent,bandage,lanternon,lanternoff,read 3440 DATA mboufso,xifbuqjmf,xbufstbdl,dpplcppl,mfbgmmfu,cboebhft,txpse,dppljt,JU(t!cpez,hjbmucpez,toblfcpez,efbe!ipvoe 3450 DATA J/U/,npotufs,toblf,ifmmipvoe,cbscfdvf,cpnc 3460 DATA sftfudbwf,udbwf,tfdsfudpssjeps,dpouspmsppn,pdbwf,jdbwf,tqbdfdbwf,cmbdlsppn,qdbwf,fdbwf,odbwf,fnquzoftt 3470 DATA tnbmmdbwf,spdlzdbwf,tnfmmzdbwf,esbhpodbwf,toblfdbwf,zfmmpvdbwf,tusfbncbol,tujolzqmbdf,sfedbwf,gjobmdbwf 3480 DATA dpmpsdbwf,jdfdbwf,pqfoqmbdf,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet 3490 DATA 34,30,28,21,14,15,13,0,0,0,0,0 3500 DATA 34,2,16,15,17,4,29,2,8,1,25,1 3510 DATA 1,5,9,10,11,7,6,2 3520 REM 3530 TN$="" 3540 FOR AA=1 TO LEN(T$) 3550 C$=SEG$(T$,AA,1) 3560 C$=CHR$(ASC(C$)-1) 3570 TN$=TN$&C$ 3580 NEXT AA 3590 IF IN=0 THEN PRINT TN$ 3600 RETURN Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted August 8, 2020 Share Posted August 8, 2020 A somewhat different version... 5 CALL CLEAR 7 PRINT " I.T.": :" Intra Terrestrial": : : : 10 PRINT " ( Alpha Lock Must Be Up!) ": : :: PRINT " Be back in just a minute.": : : : : : : : 20 RANDOMIZE 30 DIM K(36,6),R$(36),H$(15),VP(12),V$(12),B(12),PR(6,3) 40 GOSUB 2810 50 IHD=8 :: NKAM=0 60 GOTO 80 70 GOSUB 130 80 GOSUB 390 90 GOSUB 290 100 IF CWD<5 THEN 70 110 PRINT "You were killed" 120 END 130 NKAM=0 140 IHD=0 150 PRINT 155 PRINT " What would you like to do?" 156 INPUT C1$ 158 CALL CLEAR 160 LNG=LEN(C1$) 170 FOR I=1 TO 15 180 IF SEG$(H$(I),1,LNG)=C1$ THEN IHD=I :: I=16 190 NEXT I 200 IF IHD>6 THEN RETURN 210 IF IHD=0 THEN 260 220 NKAM=K(IKM,IHD) 230 IF NKAM<>0 THEN RETURN 240 PRINT "Impossible direction" 250 GOTO 130 260 PRINT "I do not understand " 270 GOTO 130 280 RETURN 290 PRINT "you are in the ";R$(IKM) 300 IF IKM>24 OR BLL=1 THEN 330 310 PRINT "You cannot see much here" 320 GOTO 340 330 IF IVW<>0 THEN PRINT "There is a ";V$(IVW);" here" 340 FOR I=1 TO 6 350 IF K(IKM,I)<>0 THEN PRINT "You can go ";H$(I) 360 NEXT I 370 PRINT 380 RETURN 390 IF NKAM<>0 THEN IKM=NKAM 400 IVW=0 410 FOR I=1 TO 12 420 IF VP(I)=IKM THEN IVW=I :: I=12 430 NEXT I 440 IPS=0 450 FOR I=1 TO 6 460 IF PR(I,1)=IKM THEN IPS=I :: I=6 470 NEXT I 480 IF IKM<12 AND CRI<>8 THEN GOSUB 2670 490 CLL=CLL+BLL 500 IF IHD<7 THEN 530 510 ON IHD-6 GOSUB 560,760,810,910,1130,1220,1340,1420,1500 520 REM 530 IF IPS=0 THEN RETURN 540 ON IPS GOSUB 1620,1840,2080,2180,2290,2470 550 RETURN 560 IF IPS=0 OR IPS>4 THEN PRINT "Killing time is the only thing you can do here" :: RETURN 570 IVWB=7 580 GOSUB 2610 590 IF IBZ=0 THEN PRINT "You can't attack without sword" :: RETURN 600 PRINT "So you want to kill the ";P$(IPS) 610 PRINT "You attack it with your sword"; 620 IF RND<.5 THEN PRINT " but you missed him" :: GOTO 650 630 PRINT " and you give your victim a terrible blow" 640 PR(IPS,3)=PR(IPS,3)-1 650 IF RND>.2 THEN 700 660 PRINT "You can hit again but be quick" 670 INPUT "Do you want to?(y or n)":Y$ 680 IF Y$<>"y" THEN 700 690 PRINT "You raise your sword again"; :: GOTO 620 700 IF PR(IPS,3)>1 THEN RETURN 710 IF PR(IPS,3)=1 THEN PRINT "Your victim is badly wounded" :: RETURN 720 PRINT "You killed your victim" 730 PR(IPS,1)=0 :: IVW=8+IPS 740 VP(IVW)=IKM :: IPS=0 750 RETURN 760 CALL CLEAR 765 PRINT "Possible commands:" 770 FOR I=1 TO 15 780 PRINT H$(I) 790 NEXT I 800 RETURN 810 IF IVW<>0 THEN 840 820 PRINT "There is nothing to take here" 830 RETURN 840 IF BLL=0 AND IKM<25 THEN PRINT "You cannot take things that you do not see" :: RETURN 850 PRINT "I take the ";V$(IVW);" for you" 860 B(IBMAX)=IVW 870 IBMAX=IBMAX+1 880 VP(IVW)=0 890 IVW=0 900 RETURN 910 INPUT "What would you like to drop? ":D$ 920 LNG=LEN(D$) 930 IVWB=0 940 FOR I=1 TO 12 950 IF D$=SEG$(V$(I),1,LNG)THEN IVWB=I :: I=12 960 NEXT I 970 IF IVWB<>0 THEN 1000 980 PRINT "I do not understand you" 990 RETURN 1000 GOSUB 2610 1010 IF IBZ<>0 THEN 1040 1020 PRINT "Impossible to drop" 1030 RETURN 1040 PRINT "I dropped the ";V$(B(IBZ));" for you" 1050 IVW=B(IBZ) 1060 VP(B(IBZ))=IKM 1070 B(IBZ)=B(IBMAX-1) 1080 IBMAX=IBMAX-1 1090 IF IKM<>25 THEN RETURN 1100 INPUT "Do you want to drop more?(y or n)":Y$ 1110 IF Y$="y" THEN 910 1120 RETURN 1130 IF IBMAX<>1 THEN 1160 1140 PRINT "You own nothing" 1150 GOTO 1200 1160 PRINT "You have the following things:" 1170 FOR I=1 TO IBMAX-1 1180 PRINT V$(B(I)) 1190 NEXT I 1200 PRINT "You can still have ";5-CWD;"wounds before you die" 1210 RETURN 1220 IVWB=6 1230 GOSUB 2610 1240 IF IBZ<>0 THEN 1270 1250 PRINT "impossible without bandage" 1260 RETURN 1270 PRINT "I use all the bandages to bandage you" 1280 CALL SOUND(100,1000,0) 1290 PRINT "So, that will hold for a while" 1300 CWD=0 1310 B(IBZ)=B(IBMAX-1) 1320 IBMAX=IBMAX-1 1330 RETURN 1340 IVWB=1 1350 GOSUB 2610 1360 IF IBZ<>0 THEN 1390 1370 PRINT "Immpossible without a lantern" 1380 RETURN 1390 PRINT "The lantern is on now" 1400 BLL=1 1410 RETURN 1420 IVWB=1 1430 GOSUB 2610 1440 IF IBZ<>0 THEN 1470 1450 PRINT "You do not even have a lantern" 1460 RETURN 1470 PRINT "The lantern is off now" 1480 BLL=0 1490 RETURN 1500 IVWB=4 1510 GOSUB 2610 1520 IF IBZ<>0 THEN 1550 1530 PRINT "Nothing to read" 1540 RETURN 1550 IF BLL=1 OR IKM>24 THEN 1580 1560 PRINT "It is too dark to read here" 1570 RETURN 1580 T$="Uifsf!jt!b!sfdjqf!gps!!!!!!!dppljft!jo!uijt!cppl" :: GOSUB 3520 1590 T$="Ju!tbzt;!ublf!b!efbe!!!!!!!!ifmmipvoe!boe!tpnf!xifbu/!!!Espq!uijt!po!b!cbscfdvf!boe!xbju!b!njovuf" :: GOSUB 3520 1600 PRINT "That is all" 1610 RETURN 1620 IF IVW=3 THEN PR(1,2)=3 :: VP(IVW)=0 :: IVW=0 1630 ON PR(1,2)GOTO 1640,1690,1720,1790,1820 1640 PRINT "I.T.(the intra-terrestial) is here" 1650 PRINT "It looks like he wants to talk" 1660 PRINT "He talks but you cannot understand him" 1670 PR(1,2)=2 1680 RETURN 1690 T$="J/U/!nblft!hftuvsft!uibu!if!offet!tpnfuijoh!up!esjol" :: GOSUB 3520 1700 T$="If!mpplt!sbuifs!eftqfsbuf" :: GOSUB 3520 1710 RETURN 1720 T$="J/U/!offefe!uif!esjol!wfsz!!nvdi/" :: GOSUB 3520 1730 T$="If!tbzt!QMFBTF!hp!epxo!joup!uif!dbwft!boe!gjoe!uif!!!!!!ovmmjuz!cpnc" :: GOSUB 3520 1740 T$="Ju!nbz!cz!op!xbz!fyqmpef/!B!npotufs!qspufdut/" :: GOSUB 3520 1750 T$="Pomz!ZPV!dbo!tbwf!uif!fbsui/" :: GOSUB 3520 1760 PRINT "Suddenly I.T. collapses and falls down" 1770 PR(1,2)=4 1780 RETURN 1790 PRINT "I.T. is in a coma." 1800 PR(1,2)=5 1810 RETURN 1820 PRINT "I.T. is here":"he is in a coma" 1830 RETURN 1840 IF IVW=8 THEN PR(2,2)=5 :: VP(IVW)=0 :: IVW=0 1850 ON PR(2,2)GOTO 1860,1900,1930,1960,2000,2060 1860 PRINT "There is an enormous monsterhere." 1870 PRINT "The monster yells:are you a cookie" 1880 PR(2,2)=2 1890 RETURN 1900 PRINT "The monster yells louder andlouder:ARE YOU A COOKIE" 1910 PR(2,2)=3 1920 RETURN 1930 PRINT "The monster keeps yelling and becomes rather agressive" 1940 PR(2,2)=4 1950 RETURN 1960 PRINT "The monster gives you a terrible blow. Your head is spinning" 1970 CWD=CWD+1 1980 PR(2,2)=INT(RND*3)+2 1990 RETURN 2000 PRINT "The monster starts to eat atonce" 2010 PRINT "It falls asleep" 2020 CALL SOUND(100,110,0) 2030 K(16,6)=1 2040 PR(2,2)=6 2050 RETURN 2060 PRINT "The monster sleeps" 2070 RETURN 2080 PRINT "There is a snake in here" 2090 IF RND<.4 THEN RETURN 2100 IF IBMAX=1 OR RND<.5 THEN 2140 2110 IBMAX=IBMAX-1 2120 VP(B(IBMAX))=13+INT(RND*12) 2130 PRINT "The snake takes somthing" 2140 PRINT "It sneaks away" 2150 PR(3,1)=PR(3,1)+3 2160 IF PR(3,1)>24 THEN PR(3,1)=PR(3,1)-8 2170 RETURN 2180 ON PR(4,2)GOTO 2190,2220,2260 2190 PRINT "There is a giant hellhound in here.It looks like he wants you for dinner" 2200 PR(4,2)=2 2210 RETURN 2220 PRINT "The hellhound attacks you and bites you violently" 2230 CWD=CWD+1 2240 PR(4,2)=3 2250 RETURN 2260 PRINT "The hellhound may attack youagain" 2270 PR(4,2)=2+INT(RND*2) 2280 RETURN 2290 PRINT "The nullity bomb is here" 2300 PRINT "There are three wires: a green one(g),a red one(r) and a yellow one(y)" 2310 PRINT "You must disconnect two of them" 2320 INPUT "Which will be the first one:":X$ 2330 INPUT "And which will be the secondone:":Y$ 2340 CBO=0 :: C$="ryg" 2350 FOR I=1 TO 3 2360 IF X$=SEG$(C$,I,1)THEN CBO=CBO+1 2370 IF Y$=SEG$(C$,I,1)THEN CBO=CBO+1 2380 NEXT I 2390 IF CBO<2 THEN PRINT "Watch out, wrong input" :: GOTO 2300 2400 IF(X$&Y$)="yr" OR(X$&Y$)="ry" THEN 2440 2410 CALL CLEAR 2420 PRINT "By disconnecting the wrong wires, you set the bomb off and the earth was destroyed" 2430 END 2440 CALL CLEAR 2450 PRINT "Congradulations, you succeeded where others failed" 2460 END 2470 IF IVW=0 THEN 2520 2480 PR(6,2)=2 2490 IF VP(2)=IKM AND VP(12)=IKM THEN IVW=8 :: VP(IVW)=IKM :: VP(2)=0 :: VP(12)=0 :: GOTO 2520 2500 VP(IVW)=0 2510 IVW=0 2520 ON PR(6,2)GOTO 2530,2550,2580 2530 PRINT "There is an enormous barbecue here with a large fire under it" 2540 RETURN 2550 PRINT "An awful smell fills your nose" 2560 PR(6,2)=3 2570 RETURN 2580 PRINT "Everything is quit now. Even the smell fades" 2590 PR(6,2)=1 2600 RETURN 2610 REM 2620 IBZ=0 2630 FOR I=1 TO IBMAX-1 2640 IF B(I)=IVWB THEN IBZ=I :: I=IBMAX-1 2650 NEXT I 2660 RETURN 2670 REM 2680 CRO=CRO+1 2690 IF IKM=D(CRO)THEN CRI=CRI+1 2700 IF CRO<8 THEN RETURN 2710 IF CRI=8 THEN 2770 2720 PRINT "Strange forces did something to you. It is dark" 2730 PRINT "For a moment you are unconcious" 2740 CRO=1 :: CRI=1 2750 IKM=1 2760 RETURN 2770 PRINT "You hear a strange sound like something being pushed away" 2780 PRINT "Now it has stopped" 2790 K(2,1)=3 2800 RETURN 2810 REM 2820 REM 2830 FOR I=1 TO 36 2840 K(I,1)=I+1 :: K(I,2)=I-1 2850 K(I,3)=I+4 :: K(I,4)=I-4 2860 NEXT I 2870 FOR I=0 TO 24 STEP 12 2880 FOR J=1 TO 9 STEP 4 2890 K(I+J+3,1)=0 :: K(I+J,2)=0 2900 NEXT J 2910 FOR J=1 TO 4 2920 K(I+J+8,3)=0 :: K(I+J,4)=0 2930 NEXT J 2940 NEXT I 2950 K(1,5)=16 :: K(7,5)=15 2960 K(32,6)=13 :: K(13,5)=32 2970 K(35,6)=18 :: K(18,5)=35 2980 FOR I=1 TO 15 2990 READ IKM :: READ IHD 3000 K(IKM,IHD)=0 3010 NEXT I 3020 REM 3030 IKM=36 3040 IBZ=1 :: IBMAX=1 3050 CKM=0 3060 CLL=0 3070 BLL=0 3080 CWD=0 3090 CRO=0 :: CRI=0 3100 REM 3110 FOR I=1 TO 15 3120 READ H$(I) 3130 NEXT I 3140 IN=-1 3150 FOR I=1 TO 12 3160 READ T$ 3170 GOSUB 3520 3180 V$(I)=TN$ 3190 NEXT I 3200 FOR I=1 TO 6 3210 READ T$ 3220 GOSUB 3520 3230 P$(I)=TN$ 3240 NEXT I 3250 FOR I=1 TO 36 3260 READ T$ 3270 GOSUB 3520 3280 R$(I)=TN$ 3290 NEXT I 3300 FOR I=1 TO 12 3310 READ VP(I) 3320 NEXT I 3330 FOR I=1 TO 6 3340 READ PR(I,1) :: PR(I,2)=1 3350 READ PR(I,3) 3360 NEXT I 3370 FOR I=1 TO 8 3380 READ D(I) 3390 NEXT I 3400 IN=0 3410 RETURN 3420 DATA 21,1,22,2,22,1,23,2,18,1,19,2,16,3,20,4,11,1,12,2,7,1,8,2,7,4,3,3,2,1 3430 DATA east,west,north,south,up,down,kill,help,take,drop,invent,bandage,lanternon,lanternoff,read 3440 DATA mboufso,xifbuqjmf,xbufstbdl,dpplcppl,mfbgmfu,cboebhft,txpse,dppljf,JU(t!cpez,hjboucpez,toblfcpez,efbe!ipvoe 3450 DATA J/U/,npotufs,toblf,ifmmipvoe,cbscfdvf,cpnc 3460 DATA sftfudbwf,udbwf,tfdsfudpssjeps,dpouspmsppn,pdbwf,jdbwf,tqbdfdbwf,cmbdlsppn,qdbwf,fdbwf,odbwf,fnquzoftt 3470 DATA tnbmmdbwf,spdlzdbwf,tnfmmzdbwf,esbhpodbwf,toblfdbwf,zfmmpxdbwf,tusfbncbol,tujolzqmbdf,sfedbwf,gjobmdbwf 3480 DATA dpmpsdbwf,jdfdbwf,pqfoqmbdf,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet,xppet 3490 DATA 34,30,28,21,14,15,13,0,0,0,0,0 3500 DATA 34,2,16,15,17,4,29,2,8,1,25,1 3510 DATA 1,5,9,10,11,7,6,2 3520 REM 3530 TN$="" 3540 FOR I1=1 TO LEN(T$) 3550 C$=SEG$(T$,I1,1) 3560 C$=CHR$(ASC(C$)-1) 3570 TN$=TN$&C$ 3580 NEXT I1 3590 IF IN=0 THEN PRINT TN$ 3600 RETURN 3461.ZIP 3400/ Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 3, 2020 Author Share Posted September 3, 2020 Rain game! - PROGRAMME für den TI 99/4a und TI 99/4 Help... Dos not work! 10 CALL CLEAR :: CALL SCREEN(11) 20 FAR(1)=2 :: FAR(2)=11 :: FAR(3)=16 :: FAR(4)=11 :: FAR(5)=11 :: DIM ABG(11) 30 REM SPRITES, INITIALIZE SIGN**************** 40 S1$="0103070D03070F0F1B070F1F070F3F7F0080C0E0C0E0F0C0E0F0E8F0F8FCF8FE" 50 CALL CHAR(88,S1$):: CALL COLOR(8,13,16) 60 S3$="010709030D110719230D71030D3147010080C0B0C0B080E09CC0B08CC2B08E80" 70 CALL CHAR(40,S3$):: CALL COLOR(2,2,1):: CALL COLOR(2,2,16) 80 S2$="010101010101010180808080808080800000000000000000" 90 CALL CHAR(128,S2$):: CALL COLOR(13,2,16) 100 S4$="FFFFFFFFFFFFFFFF" :: CALL CHAR(96,S4$):: CALL COLOR(9,4,1) 110 S5$="606060706864626161626468706060600606060E16264686864626160E060606" :: CALL CHAR(44,S5$) 120 S6$="002012080513077F07130508122000008082A488D0E4F0FFF0E4D088A4828000" :: CALL CHAR(92,S6$) 130 S7$="FFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" :: CALL CHAR(100,S7$) 140 S8$="0003073F7F7FFFFFFFFF7F1F0301000000C0F0F0F8FEFEFEFCF8FEFEDCC00000" :: CALL CHAR(104,S8$) 150 S9$="0000000000000000000004050607000004081020403008102040800000800000" :: CALL CHAR(108,S9$) 160 S10$="0141541410044555511404A4A0A8090904444141012928080044454511141400" :: CALL CHAR(112,S10$) 170 S11$="00FFFFFFFFFF04043F60FBFBFB7B3F0000FFFFFFFFFF2020E0BCBFBFBFBCE000" :: CALL CHAR(116,S11$) 180 S12$="00000000061F7FFF081C3C7EFEFFFFFF00000207CFDFFFFF00000008DCFFFFFF" :: CALL CHAR(120,S12$):: CALL COLOR(12,16,8) 190 S13$="0000000001038BFF080C1E1E9EBFBFFF0000090F1F3FFFFF00000000848CCEFF" :: CALL CHAR(124,S13$) 200 S14$="00000000000000FFFF007FF0FBFBF07F00000000000000FFFF00FE0F1F1F0FFE" :: CALL CHAR(132,S14$) 210 S15$="01042000684402010102446800244000C0460084808CAEC6C0A6908194044010" :: CALL CHAR(36,S15$) 220 S16$="000000000000000000010F3F3F7F7FFF00000000000000003FFFFFFFFFFFFFFF" :: CALL CHAR(136,S16$) 230 S17$="FF7F7F3F3F0F01000000000000000000FFFFFFFFFFFFFF3F0000000000000000" :: CALL CHAR(140,S17$) 240 REM INTRODUCTION*********** 250 DISPLAY AT(2,10):"RAIN GAME" :: DISPLAY AT(3,10):"=========" :: DISPLAY AT(1,10): "=========" 260 DISPLAY AT(5,6):"VON R HEIGENMOSER" 270 DISPLAY AT(8,2):"tv" :: DISPLAY AT(9,2):"uw =INTERRUPTER" 280 DISPLAY AT(11,2):"hj" :: DISPLAY AT(12,2):"ik" 290 DISPLAY AT(14,2):"WHITE = LET THROUGH" 300 DISPLAY AT(16,2):"YELLOW = INTERCEPT" :: DISPLAY AT(18,2):"DARK = CAUTION!!" 310 DISPLAY AT(24,2):"PRESS BUTTON!" 320 CALL KEY(0,K,STA):: IF STA=0 THEN 320 330 REM LANDSCAPE, PUT SPRAY*********** 340 CALL CLEAR :: CALL SCREEN(8):: FOR I=1 TO 4 350 DISPLAY AT(19,8*I-7):"xyz{";CHR$(124);CHR$(125);CHR$(126);CHR$(127):: NEXT I 360 CALL HCHAR(20,1,130,128) 370 CALL HCHAR(24,1,96,32) 380 FOR I=1 TO 11 390 DISPLAY AT(21,2*I)SIZE(2):"XZ" :: DISPLAY AT(22,2*I)SIZE(2):"Y[" 400 DISPLAY AT(23,2*I)SIZE(2):CHR$(128);CHR$(129) 410 NEXT I 420 DISPLAY AT(20,26)SIZE(2):",." :: DISPLAY AT(21,26)SIZE(2):"-/" :: DISPLAY AT(22,26)SIZE(2):",." :: DISPLAY AT(23,26)SIZE(2):"-/" 430 CALL MAGNIFY(3) :: SP=6 :: FA=3 :: SCO1=0 :: SCO2=11 :: BONUS=200 :: SCO3=0 :: BO1=50 440 FOR I=1 TO 11 :: ABG(I)=O :: NEXT I 450 CALL SPRITE(#9,92,12,20,1,0,1) 480 CALL SPRITE(#1,100,5,137,217,0,0) 470 CALL SPRITE(#2,116,7,50,1,0,0) 480 CALL SPRITE(#7,136,5,129,205,0,0) 490 CALL SPRITE(#8,140,5,145,205,0,0) 500 DISPLAY AT(1,2):"tvtvtv POINTS:" :: DISPLAY AT(2,2):"uwuwuw FILLING:" 510 REM MAIN PROGRAM********* 520 FOR DUR=1 TO 4 530 CALL DELSPRITE(#3) 540 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 550 DISPLAY AT(1,20):SCO3 :: DISPLAY AT(2,20):SCO1 560 IF SCO1=5 THEN 950 570 RO3=INT(RND*120+10) 580 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP):: CALL POSITION(#2,POSY,POSX):: IF POSY>160 OR POSY<10 THEN 1080 580 STO=INT(RND*160)+25 600 NEG=-2+INT(RND*5) :: IF NEG=O THEN NEG=3 610 REM CLOUD************ 620 CALL SPRITE(#3,104,16,RO3,1,0,NEG*8) 630 CALL COINC(#3,RO3,STO,5,CO3) :: IF CO3=-1 THEN 670 640 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 650 GOTO 630 660 REM POSITION REACHED********** 670 CALL MOTION(#3,0,0):: FA=INT(RND*5)+1 :: CALL COLOR(#3,FAR(FA)) :: ON FA GOTO 690,790,870,790,790 680 REM BLACK********** 690 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 700 IF FLA>1 THEN FLA=0 :: GOTO 530 710 IF INT(RND*3)<>1 THEN 690 :: FLA=FLA+1 720 SSP=INT(RND*-100)+50 730 CALL SOUND(100,-6,0) 740 CALL SPRITE(#4,108,16,RO3,STO,90,SSP) 750 CALL COINC(#2,#4,20,CO24) :: IF CO24=-1 ·THEN 1080 760 CALL POSITION(#4,POSY,POSX):: IF POSY>150 THEN CALL DELSPRITE(#4):: GOTO 700 770 GOTO 750 780 REM GUL************* 790 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 800 CALL SOUND(200,1400,0,RO3*15,0,STO*10,0,-4,0) 810 CALL SPRITE(#5,112,14,RO3,STO,20,0) 820 CALL COINC(#2,#5,7,CO25):: IF CO25=-1 THEN CALL DELSPRITE(#5):: SCO1=SCO1+1 :: GOTO 1230 830 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 840 CALL POSITION(#5,POSY,POSX):: IF POSY>160 THEN 1160 850 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPDS*SP,XPOS*SP):: GOTO 820 860 REM HVIT************ 870 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 880 CALL SOUND(300,-1,0) 890 CALL SPRITE(#5,112,5,RO3,STO,20,0) 900 CALL COINC(#2,#5,10,CO25):: IF CO25=-1 THEN CALL DELSPRITE(#5):: GOTO 1150 910 CALL POSITION(#5,POSY,POSX) :: IF POSY>150 THEN CALL DELSPRITE(#5) :: GOTO 530 920 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 930 GOTO 900 940 REM OPEN CONTAINER*********** 950 CALL MOTION(#7,-1,0) :: CALL MOTION(#8,1,0) 960 CALL COINC(#7,121,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#7,121,205):: CALL LOCATE(#8,153,205):·: GOTO 990 970 CALL SOUND(-50,1400,0) 980 GOTO 960 990 SP=1 1000 REM DOCKING*********** 1010 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 1020 CALL COINC(ALL,COAL):: IF COAL=-1 THEN 1040 1030 GOTO 1010 1040 CALL MOTION(#2,0,0):: SP=6 :: CALL POSITION(#2,POSY,POSX):: IF POSY<>137 THEN CLO=1 :: GOTO 1080 1050 SCO3=SCO3+BO1 :: SCO1=0 :: IF SCO3>=BONUS THEN GOSUB 1370 1060 CALL LOCATE(#2,137,180):: GOSUB 1310 :: GOSUB 1250 :: GOTO 540 1070 REM SHOCKED********** 1080 SCO1=0 :: CALL DELSPRITE(#4):: CALL MOTION(#2,0,0):: CALL PATTERN(#2,36) 1090 FOR I=O TO 30 :: CALL SOUND(50,-6,I):: NEXT I 1100 DISPLAY AT(1,2*DUR)SIZE(2):" " :: DISPLAV AT(2,2*DUR)SIZE(2):" " 1110 CALL DELSPRITE(#2):: IF CLO=1 THEN CLO=O:: GOSUB 1250 1120 CALL SPRITE(#2,116,7,70,10,0,0) 1130 NEXT DUR 1140 GOTO 1590 1150 REM DIED TREE************ 1160 CALL DELSPRITE(#5):: VERN=-INT(-(STO-8)/8):: IF VERN/2-INT(VERN/2)<>0 THEN VERN=VERN-1 1170 DISPLAY AT(21,VERN)SIZE(2):"(*" :: DISPLAY AT(22,VERN)SIZE(2):")+" 1180 IF ABG(VERN/2)=0 THEN SCO2=SCO2-1 1190 ABG(VERN/2)=1 1200 CALL SOUND(500,110,0) 1210 IF SCO2=0 THEN 1590 ELSE 530 1220 REM SOUND FOR CAUGHT************ 1230 CALL SOUND(200,440,0) :: CALL SOUND(200,880,O) :: CALL SOUND(200,1760,0) :: GOTO 530 1240 REM CLOSE CONTAINER************ 1250 CALL MOTION(#7,1,0):: CALL MOTION(#8,-1,0) 1260 CALL COINC(#7,130,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#8,145,205):: GOTO 1290 1270 CALL SOUND(-50,1600,0) 1280 GOTO 1260 1290 RETURN 1300 REM RENEW TREE********* 1310 CALL SOUND(200,440,0) :: CALL SOUND(200,88O,0) :: CALL SOUND(200,1760,0) 1320 FOR I=1 TO 11 1330 IF ABG(I)=1 THEN DISPLAY AT(21,2*I)SIZE(2):"XZ" :: DISPLAY AT(22,2*I)SIZE(2):"Y[" :: ABG(I)=O :: SCO2=SCO2+1 :: GOTO 1350 1340 NEXT I :: SCO3=SCO3+BO1 1350 RETURN 1360 REM BONUS*********** 1370 DISPLAY AT(15,20):"BONUS" :: CALL SPRITE(#6,132,2,169,1,0,5) 1380 CALL COINC(#6,169,217,3,CO6):: IF CO6=-1 THEN CALL MOTION(#6,0,0):: GOTO 1410 1390 CALL SOUND(50,110,10) 1400 GOTO 1380 1410 CALL MOTION(#1,1,0) 1420 CALL COINC(#1,#6,8,CO16):: IF CO16=-1 THEN CALL MOTION(#1,0,0):: GOTO 1450 1430 CALL SOUND(50,-3,0) 1440 GOTO 1420 1450 CALL MOTION(#6,0,5):: CALL MOTION(#1,0,5) 1460 FOR I=1 TO 200 :: NEXT I 1470 CALL COINC(#6,169,217,3,CO6):: IF CO6=-1 THEN CALL MOTION(#6,0,0):: CALL MOTION(#1,0,0):: GOTO 1500 1480 CALL SOUND(50,140,10) 1490 GOTO 1470 1500 CALL MOTION(#1,-1,0) 1510 CALL COINC(#1,137,217,3,CO1):: IF CO1=-1 THEN 1540 1520 CALL SOUND(20,1000,0) 1530 GOTO 1510 1540 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,137,217) 1550 DISPLAY AT(15,20):" " 1560 BONUS=BONUS+4*BO1 :: BO1=BO1+20 :: CALL DELSPRITE(#6):: IF DUR<2 THEN SCO3=SCO3+100 :: RETURN 1570 DUR=DUR-1 :: DISPLAY AT(1,2*DUR)SIZE(2):"tv" :: DISPLAY AT(2,2*DUR)SIZE(2):"uw" :: RETURN 1580 REM END********** 1590 CALL CLEAR :: CALL SCREEN(15):: DISPLAY AT(12,4):"ONCE AGAIN? J OR N" 1600 HIGH=MAX(HIGH,SCO3):: DISPLAY AT(15,5):"HIGHSCORE:";HIGH 1610 CALL KEY(0,K,STA):: IF STA=0 THEN 1610 1620 IF K=106 THEN 340 1630 END Quote Link to comment Share on other sites More sharing options...
+mizapf Posted September 3, 2020 Share Posted September 3, 2020 Found the original German version (I remembered it well, played it several times back in those days) 10 CALL CLEAR :: CALL SCREEN(11) 20 FAR(1)=2 :: FAR(2)=11 :: FAR(3)=16 :: FAR(4)=11 :: FAR(5)=11 :: DIM ABG(11) 30 ! ** SPRITES,ZEICHEN *** ** INITIALISIEREN *** 40 S1$="0103070103070F0F1B070F1F070F3FFF0080C0E0C0E0F0C0E0F8E8F0F8FCF8FE" 50 CALL CHAR(88,S1$) :: CALL COLOR(8,13,16) 60 S3$="010701030D010719231D6103053943010080C0A0C0B080E09CC0B08CC2B08E80" 70 CALL CHAR(40,S3$) :: CALL COLOR(2,2,1) :: CALL COLOR(2,2,16) 80 S2$="010101010101010180808080808080800000000000000000" 90 CALL CHAR(128,S2$) :: CALL COLOR(13,2,16) 100 S4$="FFFFFFFFFFFFFFFF" :: CALL CHAR(96,S4$) :: CALL COLOR(9,4,1) 110 S5$="606060706864626161626468706060600606060E16264686864626160E060606" :: CALL CHAR(44,S5$) 120 S6$="004020100907070FFF070709102040008082848890E0E0F0FFE0E09088848280" :: CALL CHAR(92,S6$) 130 S7$="FFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" :: CALL CHAR(100,S7$) 140 S8$="0003073F7F7FFFFFFFFF7F1F0301000000C0F0F0F8FEFEFEFCF8FEFEDCC00000" :: CALL CHAR(104,S8$) 150 S9$="00000000000001000000040506070000040810204080F8102040800000800000" :: CALL CHAR(108,S9$) 160 S10$="0141541410044555511404A4A088090904444441012928080044454511141400" :: CALL CHAR(112,S10$) 170 S11$="00FFFFFFFFFF04041F7FF1FBFB7F3F0000FFFFFFFFFF2020A0FC7F7F7FFC8000" :: CALL CHAR(116,S11$) 180 S12$="00000000061F7FFF081C3C7EFEFFFFFF00000207CFDFFFFF00000008DCFFFFFF" :: CALL CHAR(120,S12$) :: CALL COLOR(12,16,8) 190 S13$="0000000001038BFF080C1E1E9EBFBFFF0000080C1F3FFFFF00000000848CCEFF" :: CALL CHAR(124,S13$) 200 S14$="00000000000000FFFF007FF0F8F8F07F00000000000000FFFF00FE0F1F1F0FFE" :: CALL CHAR(132,S14$) 210 S15$="01042000684402010102446800244000C0460084808CAEC6C0A6908194044010" :: CALL CHAR(36,S15$) 220 S16$="000000000000000000010F3F3F7F7FFF00000000000000003FFFFFFFFFFFFFFF" :: CALL CHAR(136,S16$) 230 S17$="FF7F7F3F3F0F01000000000000000000FFFFFFFFFFFFFF3F0000000000000000" :: CALL CHAR(140,S17$) 240 !**** EINLEITUNG **** 250 DISPLAY AT(2,10):"RAIN GAME" :: DISPLAY AT(3,10):"=========" :: DISPLAY AT(1,10):"=========" 260 DISPLAY AT(5,6):"VON R HEIGENMOSER" 270 DISPLAY AT(8,2):"tv" :: DISPLAY AT(9,2):"uw =ABFAENGER" 280 DISPLAY AT(11,2):"hj" :: DISPLAY AT(12,2):"ik" 290 DISPLAY AT(14,2):"WEISS =DURCHLASSEN" 300 DISPLAY AT(16,2):"GELB =ABFANGEN" :: DISPLAY AT(18,2):"DUNKEL =VORSICHT!!" 310 DISPLAY AT(24,2):"TASTE DRUECKEN!" 320 CALL KEY(0,K,STA) :: IF STA=0 THEN 320 330 !*** LANDSCHAFT, *** *** SPRITES SETZEN*** 340 CALL CLEAR :: CALL SCREEN(8) :: FOR I=1 TO 4 350 DISPLAY AT(19,8*I-7):"xyz{";CHR$(124);CHR$(125);CHR$(126);CHR$(127) :: NEXT I 360 CALL HCHAR(20,1,130,128) 370 CALL HCHAR(24,1,96,32) 380 FOR I=1 TO 11 390 DISPLAY AT(21,2*I) SIZE(2):"XZ" :: DISPLAY AT(22,2*I) SIZE(2):"Y[" 400 DISPLAY AT(23,2*I) SIZE(2):CHR$(128);CHR$(129) 410 NEXT I 420 DISPLAY AT(20,26) SIZE(2):",." :: DISPLAY AT(21,26) SIZE(2):"-/" :: DISPLAY AT(22,26) SIZE(2):",." :: DISPLAY AT(23,26) SIZE(2):"-/" 430 CALL MAGNIFY(3) :: SP=6 :: FA=3 :: SCO1,SCO2,SCO3=0 :: BONUS=200 :: BO1=50 440 FOR I=1 TO 11 :: ABG(I)=0 :: NEXT I 450 CALL SPRITE(#9,92,12,20,1,0,1) 460 CALL SPRITE(#1,100,5,137,217,0,0) 470 CALL SPRITE(#2,116,7,50,1,0,0) 480 CALL SPRITE(#7,136,5,129,205,0,0) 490 CALL SPRITE(#8,140,5,145,205,0,0) 500 DISPLAY AT(1,2):"tvtvtv PUNKTE:" :: DISPLAY AT(2,2):"uwuwuw FUELLUNG:" 510 !**** HAUPTPROGRAMM **** 520 FOR DUR=1 TO 4 530 CALL DELSPRITE(#3) 540 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 550 DISPLAY AT(1,20):SCO3 :: DISPLAY AT(2,20):SCO1 560 IF SCO1=5 THEN 950 570 RO3=INT(RND*120+10) 580 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 590 STO=INT(RND*160)+25 600 NEG=-2+INT(RND*5) :: IF NEG=0 THEN NEG=3 610 !****** WOLKE ****** 620 CALL SPRITE(#3,104,16,RO3,1,0,NEG*8) 630 CALL COINC(#3,RO3,STO,5,CO3) :: IF CO3=-1 THEN 670 640 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 650 GOTO 630 660 !***** STANDPUNKT ***** ***** ERREICHT ***** 670 CALL MOTION(#3,0,0) :: FA=INT(RND*5)+1 :: CALL COLOR(#3,FAR(FA)) :: ON FA GOTO 690,790,870,790,790 680 !**** SCHWARZ **** 690 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 700 IF FLA>1 THEN FLA=0 :: GOTO 530 710 IF INT(RND*3)<>1 THEN 890 :: FLA=FLA+1 720 SSP=INT(RND*-100)+50 730 CALL SOUND(100,-6,0) 740 CALL SPRITE(#4,108,16,RO3,STO,90,SSP) 750 CALL COINC(#2,#4,20,CO24) :: IF CO24=-1 THEN 1080 760 CALL POSITION(#4,POSY,POSX) :: IF POSY>150 THEN CALL DELSPRITE(#4) :: GOTO 700 770 GOTO 750 780 !****** GELB ****** 790 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 800 CALL SOUND(200,1400,0,RO3*15,0,STO*10,0,-4,0) 810 CALL SPRITE(#5,112,14,RO3,STO,20,0) 820 CALL COINC(#2,#5,7,CO25) :: IF CO25=-1 THEN CALL DELSPRITE(#5) :: SCO1=SCO1+1 :: GOTO 1230 830 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 840 CALL POSITION(#5,POSY,POSX) :: IF POSY>160 THEN 1160 850 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: GOTO 820 860 !******* WEISS ******* 870 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 880 CALL SOUND(300,-1,0) 890 CALL SPRITE(#5,112,5,RO3,STO,20,0) 900 CALL COINC(#2,#5,10,CO25) :: IF CO25=-1 THEN CALL DELSPRITE(#5) :: GOTO 1150 910 CALL POSITION(#5,POSY,POSX) :: IF POSY>150 THEN CALL DELSPRITE(#5) :: GOTO 530 920 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 930 GOTO 900 940 !***** BEHAELTER ***** ***** OEFFNEN ***** 950 CALL MOTION(#7,-1,0) :: CALL MOTION(#8,1,0) 960 CALL COINC(#7,121,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#7,121,205) :: CALL LOCATE(#8,153,205) :: GOTO 990 970 CALL SOUND(-50,1400,0) 980 GOTO 960 990 SP=1 1000 !***** ANDOCKEN ***** 1010 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 1020 CALL COINC(ALL,COAL) :: IF COAL=-1 THEN 1040 1030 GOTO 1010 1040 CALL MOTION(#2,0,0) :: SP=6 :: CALL POSITION(#2,POSY,POSX) :: IF POSY<>137 THEN CLO=1 :: GOTO 1080 1050 SCO3=SCO3+BO1 :: SCO1=0 :: IF SCO3>=BONUS THEN GOSUB 1370 1060 CALL LOCATE(#2,137,180) :: GOSUB 1310 :: GOSUB 1250 :: GOTO 540 1070 !**** ZERSCHELLT **** 1080 SCO1=0 :: CALL DELSPRITE(#4) :: CALL MOTION(#2,0,0) :: CALL PATTERN(#2,36) 1090 FOR I=0 TO 30 :: CALL SOUND(50,-6,I) :: NEXT I 1100 DISPLAY AT(1,2*DUR) SIZE(2):" " :: DISPLAY AT(2,2*DUR) SIZE(2):" " 1110 CALL DELSPRITE(#2) :: IF CLO=1 THEN CLO=0 :: GOSUB 1250 1120 CALL SPRITE(#2,116,7,70,10,0,0) 1130 NEXT DUR 1140 GOTO 1590 1150 !**BAUM ABGESTORBEN** 1160 CALL DELSPRITE(#5) :: VERN=-INT(-(STO-8)/8) :: IF VERN/2-INT(VERN/2)<>0 THEN VERN=VERN-1 1170 DISPLAY AT(21,VERN) SIZE(2):"(*" :: DISPLAY AT(22,VERN) SIZE(2):")+" 1180 IF ABG(VERN/2)=0 THEN SCO2=SCO2-1 1190 ABG(VERN/2)=1 1200 CALL SOUND(500,110,0) 1210 IF SCO2=0 THEN 1590 ELSE 530 1220 !**** SOUND FUER **** **** AUFGEFANGEN *** 1230 CALL SOUND(200,440,0) :: CALL SOUND(200,880,0) :: CALL SOUND(200,1760,0) :: GOTO 530 1240 !**** BEHAELTER **** **** SCHLIESSEN **** 1250 CALL MOTION(#7,1,0) :: CALL MOTION(#8,-1,0) 1260 CALL COINC(#7,130,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#8,145,205) :: GOTO 1290 1270 CALL SOUND(-50,1600,0) 1280 GOTO 1260 1290 RETURN 1300 !*** BAUM ERNEUERN *** 1310 CALL SOUND(200,440,0) :: CALL SOUND(200,880,0) :: CALL SOUND(200,1760,0) 1320 FOR I=1 TO 11 1330 IF ABG(I)=1 THEN DISPLAY AT(21,2*I) SIZE(2):"XZ" :: DISPLAY AT(22,2*I) SIZE(2):"Y[" :: ABG(I)=0 :: SCO2=SCO2+1 :: GOTO 1350 1340 NEXT I :: SCO3=SCO3+BO1 1350 RETURN 1360 !****** BONUS ****** 1370 DISPLAY AT(15,20):"BONUS" :: CALL SPRITE(#6,132,2,169,1,0,5) 1380 CALL COINC(#6,169,217,3,CO6) :: IF CO6=-1 THEN CALL MOTION(#6,0,0) :: GOTO 1410 1390 CALL SOUND(50,110,10) 1400 GOTO 1380 1410 CALL MOTION(#1,1,0) 1420 CALL COINC(#1,#6,8,CO16) :: IF CO16=-1 THEN CALL MOTION(#1,0,0) :: GOTO 1450 1430 CALL SOUND(50,-3,0) 1440 GOTO 1420 1450 CALL MOTION(#6,0,5) :: CALL MOTION(#1,0,5) 1460 FOR I=1 TO 200 :: NEXT I 1470 CALL COINC(#6,169,217,3,CO6) :: IF CO6=-1 THEN CALL MOTION(#6,0,0) :: CALL MOTION(#1,0,0) :: GOTO 1500 1480 CALL SOUND(50,140,10) 1490 GOTO 1470 1500 CALL MOTION(#1,-1,0) 1510 CALL COINC(#1,137,217,3,CO1) :: IF CO1=-1 THEN 1540 1520 CALL SOUND(50,1000,0) 1530 GOTO 1510 1540 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,137,217) 1550 DISPLAY AT(15,20):" " 1560 BONUS=BONUS+4*BO1 :: BO1=BO1+20 :: CALL DELSPRITE(#6) :: IF DUR<2 THEN SCO3=SCO3+100 :: RETURN 1570 DUR=DUR-1 :: DISPLAY AT(1,2*DUR) SIZE(2):"tv" :: DISPLAY AT(2,2*DUR) SIZE(2):"uw" :: RETURN 1580 !****** ENDE ****** 1590 CALL CLEAR :: CALL SCREEN(15) :: DISPLAY AT(12,4):"NOCHMAL? J ODER N" 1600 HIGH=MAX(HIGH,SCO3) :: DISPLAY AT(15,5):"HIGHSCORE:";HIGH 1610 CALL KEY(0,K,STA) :: IF STA=0 THEN 1610 1620 IF K=106 THEN 340 1630 END Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 3, 2020 Author Share Posted September 3, 2020 (edited) How do you play it? I found 3 bugs in my revamped and translated ver. My last ver. is better then yours. Your dos not end, all trees die, but the game dos not end. Mine ends, but I still cant move the air ship! One difference is this... In your you have: 430 CALL MAGNIFY(3) :: SP=6 :: FA=3 :: SCO1,SCO2,SCO3=0 :: BONUS=200 :: BO1=50 In the book it is saying: 430 CALL MAGNIFY(3) :: SP=6 :: FA=3 :: SCO1=0 :: SCO2=11 :: BONUS=200 :: SCO3=0 :: BO1=50 10 CALL CLEAR :: CALL SCREEN(11) 20 FAR(1)=2 :: FAR(2)=11 :: FAR(3)=16 :: FAR(4)=11 :: FAR(5)=11 :: DIM ABG(11) 30 REM SPRITES, INITIALIZE SIGN**************** 40 S1$="0103070D03070F0F1B070F1F070F3F7F0080C0E0C0E0F0C0E0F0E8F0F8FCF8FE" 50 CALL CHAR(88,S1$):: CALL COLOR(8,13,16) 60 S3$="010709030D110719230D71030D3147010080C0B0C0B080E09CC0B08CC2B08E80" 70 CALL CHAR(40,S3$):: CALL COLOR(2,2,1):: CALL COLOR(2,2,16) 80 S2$="010101010101010180808080808080800000000000000000" 90 CALL CHAR(128,S2$):: CALL COLOR(13,2,16) 100 S4$="FFFFFFFFFFFFFFFF" :: CALL CHAR(96,S4$):: CALL COLOR(9,4,1) 110 S5$="606060706864626161626468706060600606060E16264686864626160E060606" :: CALL CHAR(44,S5$) 120 S6$="002012080513077F07130508122000008082A488D0E4F0FFF0E4D088A4828000" :: CALL CHAR(92,S6$) 130 S7$="FFFFFFFF1F1F1F1F1F1F1F1F1F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" :: CALL CHAR(100,S7$) 140 S8$="0003073F7F7FFFFFFFFF7F1F0301000000C0F0F0F8FEFEFEFCF8FEFEDCC00000" :: CALL CHAR(104,S8$) 150 S9$="0000000000000000000004050607000004081020403008102040800000800000" :: CALL CHAR(108,S9$) 160 S10$="0141541410044555511404A4A0A8090904444141012928080044454511141400" :: CALL CHAR(112,S10$) 170 S11$="00FFFFFFFFFF04043F60FBFBFB7B3F0000FFFFFFFFFF2020E0BCBFBFBFBCE000" :: CALL CHAR(116,S11$) 180 S12$="00000000061F7FFF081C3C7EFEFFFFFF00000207CFDFFFFF00000008DCFFFFFF" :: CALL CHAR(120,S12$):: CALL COLOR(12,16,8) 190 S13$="0000000001038BFF080C1E1E9EBFBFFF0000090F1F3FFFFF00000000848CCEFF" :: CALL CHAR(124,S13$) 200 S14$="00000000000000FFFF007FF0FBFBF07F00000000000000FFFF00FE0F1F1F0FFE" :: CALL CHAR(132,S14$) 210 S15$="01042000684402010102446800244000C0460084808CAEC6C0A6908194044010" :: CALL CHAR(36,S15$) 220 S16$="000000000000000000010F3F3F7F7FFF00000000000000003FFFFFFFFFFFFFFF" :: CALL CHAR(136,S16$) 230 S17$="FF7F7F3F3F0F01000000000000000000FFFFFFFFFFFFFF3F0000000000000000" :: CALL CHAR(140,S17$) 240 REM INTRODUCTION*********** 250 DISPLAY AT(2,10):"RAIN GAME" :: DISPLAY AT(3,10):"=========" :: DISPLAY AT(1,10): "=========" 260 DISPLAY AT(5,6):"VON R HEIGENMOSER" 270 DISPLAY AT(8,2):"tv" :: DISPLAY AT(9,2):"uw =INTERRUPTER" 280 DISPLAY AT(11,2):"hj" :: DISPLAY AT(12,2):"ik" 290 DISPLAY AT(14,2):"WHITE = LET THROUGH" 300 DISPLAY AT(16,2):"YELLOW = INTERCEPT" :: DISPLAY AT(18,2):"DARK = CAUTION!!" 310 DISPLAY AT(24,2):"PRESS BUTTON!" 320 CALL KEY(0,K,STA):: IF STA=0 THEN 320 330 REM LANDSCAPE, PUT SPRAY*********** 340 CALL CLEAR :: CALL SCREEN(8):: FOR I=1 TO 4 350 DISPLAY AT(19,8*I-7):"xyz{";CHR$(124);CHR$(125);CHR$(126);CHR$(127):: NEXT I 360 CALL HCHAR(20,1,130,128) 370 CALL HCHAR(24,1,96,32) 380 FOR I=1 TO 11 390 DISPLAY AT(21,2*I)SIZE(2):"XZ" :: DISPLAY AT(22,2*I)SIZE(2):"Y[" 400 DISPLAY AT(23,2*I)SIZE(2):CHR$(128);CHR$(129) 410 NEXT I 420 DISPLAY AT(20,26)SIZE(2):",." :: DISPLAY AT(21,26)SIZE(2):"-/" :: DISPLAY AT(22,26)SIZE(2):",." :: DISPLAY AT(23,26)SIZE(2):"-/" 430 CALL MAGNIFY(3) :: SP=6 :: FA=3 :: SCO1=0 :: SCO2=11 :: BONUS=200 :: SCO3=0 :: BO1=50 440 FOR I=1 TO 11 :: ABG(I)=0 :: NEXT I 450 CALL SPRITE(#9,92,12,20,1,0,1) 480 CALL SPRITE(#1,100,5,137,217,0,0) 470 CALL SPRITE(#2,116,7,50,1,0,0) 480 CALL SPRITE(#7,136,5,129,205,0,0) 490 CALL SPRITE(#8,140,5,145,205,0,0) 500 DISPLAY AT(1,2):"tvtvtv POINTS:" :: DISPLAY AT(2,2):"uwuwuw FILLING:" 510 REM MAIN PROGRAM********* 520 FOR DUR=1 TO 4 530 CALL DELSPRITE(#3) 540 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 550 DISPLAY AT(1,20):SCO3 :: DISPLAY AT(2,20):SCO1 560 IF SCO1=5 THEN 950 570 RO3=INT(RND*120+10) 580 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP):: CALL POSITION(#2,POSY,POSX):: IF POSY>160 OR POSY<10 THEN 1080 580 STO=INT(RND*160)+25 600 NEG=-2+INT(RND*5) :: IF NEG=O THEN NEG=3 610 REM CLOUD************ 620 CALL SPRITE(#3,104,16,RO3,1,0,NEG*8) 630 CALL COINC(#3,RO3,STO,5,CO3) :: IF CO3=-1 THEN 670 640 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 650 GOTO 630 660 REM POSITION REACHED********** 670 CALL MOTION(#3,0,0):: FA=INT(RND*5)+1 :: CALL COLOR(#3,FAR(FA)) :: ON FA GOTO 690,790,870,790,790 680 REM BLACK********** 690 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 700 IF FLA>1 THEN FLA=0 :: GOTO 530 710 IF INT(RND*3)<>1 THEN 690 :: FLA=FLA+1 720 SSP=INT(RND*-100)+50 730 CALL SOUND(100,-6,0) 740 CALL SPRITE(#4,108,16,RO3,STO,90,SSP) 750 CALL COINC(#2,#4,20,CO24) :: IF CO24=-1 ·THEN 1080 760 CALL POSITION(#4,POSY,POSX):: IF POSY>150 THEN CALL DELSPRITE(#4):: GOTO 700 770 GOTO 750 780 REM GUL************* 790 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 800 CALL SOUND(200,1400,0,RO3*15,0,STO*10,0,-4,0) 810 CALL SPRITE(#5,112,14,RO3,STO,20,0) 820 CALL COINC(#2,#5,7,CO25):: IF CO25=-1 THEN CALL DELSPRITE(#5):: SCO1=SCO1+1 :: GOTO 1230 830 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 840 CALL POSITION(#5,POSY,POSX):: IF POSY>160 THEN 1160 850 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPDS*SP,XPOS*SP):: GOTO 820 860 REM HVIT************ 870 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 880 CALL SOUND(300,-1,0) 890 CALL SPRITE(#5,112,5,RO3,STO,20,0) 900 CALL COINC(#2,#5,10,CO25):: IF CO25=-1 THEN CALL DELSPRITE(#5):: GOTO 1150 910 CALL POSITION(#5,POSY,POSX) :: IF POSY>150 THEN CALL DELSPRITE(#5) :: GOTO 530 920 CALL JOYST(2,XPOS,YPOS) :: CALL MOTION(#2,-YPOS*SP,XPOS*SP) :: CALL POSITION(#2,POSY,POSX) :: IF POSY>160 OR POSY<10 THEN 1080 930 GOTO 900 940 REM OPEN CONTAINER*********** 950 CALL MOTION(#7,-1,0) :: CALL MOTION(#8,1,0) 960 CALL COINC(#7,121,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#7,121,205):: CALL LOCATE(#8,153,205):·: GOTO 990 970 CALL SOUND(-50,1400,0) 980 GOTO 960 990 SP=1 1000 REM DOCKING*********** 1010 CALL JOYST(2,XPOS,YPOS):: CALL MOTION(#2,-YPOS*SP,XPOS*SP) 1020 CALL COINC(ALL,COAL):: IF COAL=-1 THEN 1040 1030 GOTO 1010 1040 CALL MOTION(#2,0,0):: SP=6 :: CALL POSITION(#2,POSY,POSX):: IF POSY<>137 THEN CLO=1 :: GOTO 1080 1050 SCO3=SCO3+BO1 :: SCO1=0 :: IF SCO3>=BONUS THEN GOSUB 1370 1060 CALL LOCATE(#2,137,180):: GOSUB 1310 :: GOSUB 1250 :: GOTO 540 1070 REM SHOCKED********** 1080 SCO1=0 :: CALL DELSPRITE(#4):: CALL MOTION(#2,0,0):: CALL PATTERN(#2,36) 1090 FOR I=0 TO 30 :: CALL SOUND(50,-6,I):: NEXT I 1100 DISPLAY AT(1,2*DUR)SIZE(2):" " :: DISPLAV AT(2,2*DUR)SIZE(2):" " 1110 CALL DELSPRITE(#2):: IF CLO=1 THEN CLO=O:: GOSUB 1250 1120 CALL SPRITE(#2,116,7,70,10,0,0) 1130 NEXT DUR 1140 GOTO 1590 1150 REM DIED TREE************ 1160 CALL DELSPRITE(#5):: VERN=-INT(-(STO-8)/8):: IF VERN/2-INT(VERN/2)<>0 THEN VERN=VERN-1 1170 DISPLAY AT(21,VERN)SIZE(2):"(*" :: DISPLAY AT(22,VERN)SIZE(2):")+" 1180 IF ABG(VERN/2)=0 THEN SCO2=SCO2-1 1190 ABG(VERN/2)=1 1200 CALL SOUND(500,110,0) 1210 IF SCO2=0 THEN 1590 ELSE 530 1220 REM SOUND FOR CAUGHT************ 1230 CALL SOUND(200,440,0) :: CALL SOUND(200,880,O) :: CALL SOUND(200,1760,0) :: GOTO 530 1240 REM CLOSE CONTAINER************ 1250 CALL MOTION(#7,1,0):: CALL MOTION(#8,-1,0) 1260 CALL COINC(#7,130,205,1,CO7) :: IF CO7=-1 THEN CALL MOTION(#7,0,0) :: CALL MOTION(#8,0,0) :: CALL LOCATE(#8,145,205):: GOTO 1290 1270 CALL SOUND(-50,1600,0) 1280 GOTO 1260 1290 RETURN 1300 REM RENEW TREE********* 1310 CALL SOUND(200,440,0) :: CALL SOUND(200,88O,0) :: CALL SOUND(200,1760,0) 1320 FOR I=1 TO 11 1330 IF ABG(I)=1 THEN DISPLAY AT(21,2*I)SIZE(2):"XZ" :: DISPLAY AT(22,2*I)SIZE(2):"Y[" :: ABG(I)=0 :: SCO2=SCO2+1 :: GOTO 1350 1340 NEXT I :: SCO3=SCO3+BO1 1350 RETURN 1360 REM BONUS*********** 1370 DISPLAY AT(15,20):"BONUS" :: CALL SPRITE(#6,132,2,169,1,0,5) 1380 CALL COINC(#6,169,217,3,CO6):: IF CO6=-1 THEN CALL MOTION(#6,0,0):: GOTO 1410 1390 CALL SOUND(50,110,10) 1400 GOTO 1380 1410 CALL MOTION(#1,1,0) 1420 CALL COINC(#1,#6,8,CO16):: IF CO16=-1 THEN CALL MOTION(#1,0,0):: GOTO 1450 1430 CALL SOUND(50,-3,0) 1440 GOTO 1420 1450 CALL MOTION(#6,0,5):: CALL MOTION(#1,0,5) 1460 FOR I=1 TO 200 :: NEXT I 1470 CALL COINC(#6,169,217,3,CO6):: IF CO6=-1 THEN CALL MOTION(#6,0,0):: CALL MOTION(#1,0,0):: GOTO 1500 1480 CALL SOUND(50,140,10) 1490 GOTO 1470 1500 CALL MOTION(#1,-1,0) 1510 CALL COINC(#1,137,217,3,CO1):: IF CO1=-1 THEN 1540 1520 CALL SOUND(20,1000,0) 1530 GOTO 1510 1540 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,137,217) 1550 DISPLAY AT(15,20):" " 1560 BONUS=BONUS+4*BO1 :: BO1=BO1+20 :: CALL DELSPRITE(#6):: IF DUR<2 THEN SCO3=SCO3+100 :: RETURN 1570 DUR=DUR-1 :: DISPLAY AT(1,2*DUR)SIZE(2):"tv" :: DISPLAY AT(2,2*DUR)SIZE(2):"uw" :: RETURN 1580 REM END********** 1590 CALL CLEAR :: CALL SCREEN(15):: DISPLAY AT(12,4):"ONCE AGAIN? J OR N" 1600 HIGH=MAX(HIGH,SCO3):: DISPLAY AT(15,5):"HIGHSCORE:";HIGH 1610 CALL KEY(0,K,STA):: IF STA=0 THEN 1610 1620 IF K=106 THEN 340 1630 END Edited September 3, 2020 by oddemann New ver. Quote Link to comment Share on other sites More sharing options...
+mizapf Posted September 3, 2020 Share Posted September 3, 2020 (edited) Using joystick 2, you steer the catcher below the cloud, but you must avoid to catch the normal rain (blue). Also, a black cloud can hit you with a thunderbolt. When you have collected five acid rain showers (yellow cloud), you have to steer the catcher to the docking station, and touch it exactly at row 137 (see line 1040). Edited September 3, 2020 by mizapf Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 3, 2020 Author Share Posted September 3, 2020 (edited) 1 hour ago, mizapf said: Using joystick 2, you steer the catcher below the cloud, but you must avoid to catch the normal rain (blue). Also, a black cloud can hit you with a thunderbolt. When you have collected five acid rain showers (yellow cloud), you have to steer the catcher to the docking station, and touch it exactly at row 137 (see line 1040). Thx... Mizapf! Found a new bug... Maybe last... CORRECT in line - 1100 DISPLAY AT(1,2*DUR)SIZE(2):" " :: DISPLAY AT(2,2*DUR)SIZE(2):" " One more - 1310 CALL SOUND(200,440,0) :: CALL SOUND(200,800,0) :: CALL SOUND(200,1760,0) NEW fix... 600 NEG=-2+INT(RND*5) :: IF NEG=0 THEN NEG=3 One more 1110 CALL DELSPRITE(#2):: IF CLO=1 THEN CLO=0:: GOSUB 1250 One more 1230 CALL SOUND(200,440,0) :: CALL SOUND(200,880,0) :: CALL SOUND(200,1760,0) :: GOTO 530 Edited September 3, 2020 by oddemann Adding fix! Quote Link to comment Share on other sites More sharing options...
+mizapf Posted September 3, 2020 Share Posted September 3, 2020 This little Extended Basic game is - in my view - an interesting sample of historic, political statement: The topic is "Waldsterben" ("dying of the forest") by acid rain, a hot topic in the German political discussions of the mid-80s and a motivator for the Green Party. In the recent years, the topic has returned; but this time, the forests are not dying of acid rain, but of water deficiency. (We Germans have some special affection to our forests ... ; nearly one third of the land area is covered by forests.) 1 Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 4, 2020 Author Share Posted September 4, 2020 (edited) Same book as above... Game works (but the explanation is some what wanting), the Drummer is not all working, I will look into it (if not someone fix it before I get to it. More focused on trying to understand the game). Played the game, but not sure about the rules. Have won, but... luck I guess :p Nice layout and a cool game! PS! Google Translate from German! 7.4 Awari (Ext. BASIC) Awari is an ancient African game that is also called Kalaha is known. There are only a few sand pits and a handful of stones to play with necessary. But we have a computer. Here are the rules of the game for those who do not yet know Awari. The playing field: 6 5 4 3 2 1 3 3 3 3 3 3 Computer O O Player 3 3 3 3 3 3 1 2 3 4 5 6 The bottom 6 pits are yours, the top 6 are your opponent's (in this case the computer). In the right pit will be yours Points, in the left the opponent's are counted. In each of the pits, with the exception of the counting pits, there are 3 stones. A player starts by taking all stones from one of his pits and Distribute them counterclockwise to the following pits (in every 1 Stone). If his last stone hits his counting pit, then he is still allowed once. If the last stone hits an empty pit, then he may this and all of them Place stones opposite in his counting pit (the computer does it automatically). Under certain circumstances, of course, he also lays his stones into the pits of his opponent. The game is over when the pits on one side are empty. Then will the stones in the counting pits are counted and the player with the highest Number won. Play it once. Awari is demanding and fun. I wish you a full pit. If the program is too long for you, leave lines 40 - 200 and lines 220, 230 away. In these lines a drummer is defined running across the screen. Here is the Code... 10 CALL CLEAR 20 CALL SCREEN(4):: DISPLAY AT(8,8):"T I A W A R I" 30 DISPLAY AT(12,7):"By R Heisenmoser" 40 S1$="000000000000000000000000000000001C3E7A7F7A3C1E0C0C1E3F3F3F3F3F3F" 50 S2$="000000000001020C1C3870E0F030080400006060800000000000000000000000" 60 S3$="0000000000000000000101030F0F03013F3F3F3F7F7F77E3E3C1C180800080C0" 70 S4$="020101DEDEDE0080C0C0C0ECFC783020008080E0E0E000000000000000000000" 80 S5$="000000000000000000000000000000003F3F3F3F3F3F3B3B3371716161E1F1F1" 90 S6$="0000000000000000010F38FBFF0000000000000000000060E00000C0C0000000" 100 S7$="000000DEDEDE0080808080808080C0E0000000E0E0E000000000000000000000" 110 CALL CHAR(36,S1$) :: CALL CHAR(40,S2$) :: CALL CHAR(44,S3$) :: CALL CHAR(48,S4$) :: CALL CHAR(52,S5$) 120 CALL CHAR(56,S6$):: CALL CHAR(60,S7$) 130 DISPLAY AT(20,7):"PRESS BUTTON !" 140 CALL SPRITE(#1,36,5,140,1,0,5):: CALL SPRITE(#2,40,5,140,18,0,5) 150 CALL SPRITE(#3,44,5,156,3,0,S):: CALL SPRITE(#4,48,5,156,19,0,5) 160 CALL MAGNIFY(3) 170 CALL PATTERN(#2,56):: CALL PATTERN(#3,52):: CALL PATTERN(#4,60) 180 CALL SOUND(100,-7,10) 190 CALL PATTERN(#2,40):: CALL PATTERN(#3,44):: CALL PATTERN(#4,48) 200 FOR DELAY=1 TO 40 :: NEXT DELAY 210 CALL KEY(S,KE,STA):: IF STA=0 THEN 170 220 CALL DELSPRITE(#1):: CALL DELSPRITE(#2)::CALL DELSPRITE(#3):: CALL DELSPRITE(#4) 230 CALL CHARSET 240 DIM S$(13) 250 CALL COLOR(9,7,16):: CALL COLOR(10,7,16)::CALL COLOR(11,7,16) 260 CALL SCREEN(16) 270 S$(1)="kgggggggggggggggggggggggggl" :: S$(2)="ggggocchcchcchcchcchcc`gggg" 280 S$(3)="ggggf j j j j j dgggg" :: S$(4)="ggggaeeieeieeieeieeieebgggg" 290 S$(5)="gggggg6gg5gg4gg3gg2gg1ggggg" :: S$(6)="occc`gggggggggggggggggoccc`" 300 S$(7)="f dggggTIggAWARIggggf d" :: S$(8)="aeeebgggggggggggggggggaeeeb" 310 S$(13)="mgggggggggggggggggggggggggn" 320 S$(9)="gggggg1gg2gg3gg4gg5gg6ggggg" 330 S$(10)=S$(2) :: S$(11)=S$(3) :: S$(12)=S$(4) 340 CALL CLEAR 350 CALL CHAR(107,"071F3F7F7FFFFFFF") :: CALL CHAR(108,"E0F8FCFEFEFFFFFF") :: CALL CHAR(109,"FFFFFF7F7F3F1F07") 360 CALL CHAR(110,"FFFFFFFEFEFCF8E0") :: CALL CHAR(111,"FFFFFEFCF8F8F8F8") :: CALL CHAR(96,"FFFF7F3F1F1F1F1F") 370 CALL CHAR(97,"F8F8F8F8FCFEFFFF") :: CALL CHAR(98,"1F1F1F1F3F7FFFFF") :: CALL CHAR(99,"FFFF") 375 CALL CHAR(100,"1F1F1F1F1F1F1F1F") 380 CALL CHAR(101,"000000000000FFFF") :: CALL CHAR(102,"F8F8F8F8F8F8F8F8") :: CALL CHAR(103,"FFFFFFFFFFFFFFFF") 390 CALL CHAR(104,"FFFF7E3C18181818") :: CALL CHAR(105,"181818183C7EFFFF") :: CALL CHAR(106,"1818181818181818") 400 FOR I=1 TO 13 :: DISPLAY AT(5+I,1):S$(I)::NEXT I 410 DISPLAY AT(1,6):"COMPUTER" :: DISPLAY AT(1,20):"YOU" 420 DATA 0 430 DIM B(13),G(13),F(50) :: READ N :: COM=0 ::DU=0 440 E=0 :: DISPLAY AT(3,8):COM :: DISPLAY AT(3,19):DU 450 FOR I=0 TO 12 :: B(I)=3 :: NEXT I 460 C=0 :: F(N)=0 :: B(13)=0 :: B(6)=0 470 GOSUB 750 480 IF Z1=1 THEN Z1=0 :: GOTO 530 490 DISPLAY AT(21,1):"YOUR TRAIN" :: GOSUB 620 500 IF E=0 THEN 570 510 IF M=H THEN GOSUB 610 520 IF E=0 THEN 570 530 DISPLAY AT(23,1):"MY TRAIN IS" :: SS=15 :: GOSUB 920 540 IF E=0 THEN 570 550 IF M=H THEN DISPLAY AT(23,16):"," :: SS=17:: GOSUB 920 560 IF E>0 THEN 470 570 DISPLAY AT(21,1)SIZE(80)BEEP:"GAME IS OVER" 580 D=B(6)-B(13) :: IF D<0 THEN DISPLAY AT(23,1):"I WIN WITH";-D;"POINTS" :: COM=COM-D :: GOTO 1110 590 N=N+1 :: IF D=0 THEN DISPLAY AT(23,1):"DRAW" :: GOTO 1110 600 DISPLAY AT(23,1):"YOU WIN WITH";D;"POINTS" :: DU=DU+D :: GOTO 1110 610 DISPLAY AT(21,1):"ONCE AGAIN" 620 ACCEPT AT(21,15)VALIDATE(DIGIT)BEEP SIZE(10):M::IF M<7 THEN IF M>0 THEN M=M-1::CALL HCHAR(24,1,32,20)::GOTO 640 630 DISPLAY AT(24,1):"FORBIDDEN TRAIN" :: GOTO 610 640 IF B(M)=0 THEN 630 650 H=6 :: GOSUB 670 660 GOTO 750 670 K=M :: GOSUB 860 680 E=0 :: IF K>6 THEN K=K-7 690 C=C+1 :: IF C<9 THEN F(N)=F(N)*6+K 700 FOR I=0 TO 5 :: IF B(I)<>0 THEN 730 710 NEXT I 720 RETURN 730 FOR I=7 TO 12 :: IF B(I)<>0 THEN E=1 :: RETURN 740 NEXT I :: RETURN 750 REM 760 CALL COLOR(3,13,16,4,13,16) 770 Z=8 :: DIS=3 :: FOR I=12 TO 7 STEP -1 :: GOSUB 840 780 NEXT I 790 DISPLAY AT(12,24)SIZE(3):B(6) 800 DISPLAY AT(12,2)SIZE(3):B(13) 810 Z=16 :: DIS=3 :: FOR I=0 TO 5 :: GOSUB 840 820 NEXT I 830 RETURN 840 REM 850 DISPLAY AT(Z,3+DIS)SIZE(2):B(I):: DIS=DIS+3 :: RETURN 860 P=B(M):: B(M)=0 870 FOR P=P TO 1 STEP -1 :: M=M+1 :: IF M>13 THEN M=M-14 880 B(M)=B(M)+1 :: NEXT P 890 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 910 900 RETURN 910 B(H)=B(H)+B(12-M)+1 :: B(M)=0 :: B(12-M)=0 :: RETURN 920 D=-99 :: H=13 930 FOR I=0 TO 13 :: G(I)=B(I):: NEXT I 940 FOR J=7 TO 12 :: IF B(J)=0 THEN 1080 950 GG=0 :: M=J :: GOSUB 860 960 FOR I=0 TO 5 :: IF B(I)=0 THEN 1010 970 L=B(I)+I :: R=0 980 IF L>13 THEN L=L-14 :: R=1 :: GOTO 980 990 IF B(L)=0 THEN IF L<>16 THEN IF L<>13 THEN R=B(12-L)+R 1000 IF R>Q THEN Q=R 1010 NEXT I 1020 Q=B(13)-B(6)-Q :: IF C>8 THEN 1060 1030 K=J :: IF K>6 THEN K=K-7 1040 FOR I=0 TO N-1 :: IF F(N)*6+K=INT(F(I)/6^(7-C)+.1) THEN Q=Q-2 1050 NEXT I 1060 FOR I=0 TO 13 :: B(I)=G(I):: NEXT I 1070 IF Q>=D THEN A=J :: D=Q 1080 NEXT J 1090 M=A :: DISPLAY AT(23,SS)SIZE(10)BEEP:CHR$(42+M):: GOTO 670 1100 FOR I=0 TO N-1 :: PRINT B(I):: NEXT I 1110 IF ZAEHLER=0 THEN ZAEHLER=1 ELSE ZAEHLER=0 1120 Z1=ZAEHLER 1130 CALL KEY(5,RET,STATUS):: IF STATUS<>0 THEN CALL HCHAR(21,1,32,120):: GOTO 440 1140 DISPLAY AT(24,1):"PRESS BUTTON !" :: GOTO 1130 Edited September 4, 2020 by oddemann Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 4, 2020 Author Share Posted September 4, 2020 Same book again... Think it is clean ("no bugs") Improvements... Make it slower and then faster and faster as leveling up. Some screen distortion, I think. And not so accurate (hitting and being hit) 7.3 Space Krieg (Ext. BASIC) This game is like so many games in space. You are in command of a spaceship (of course only with the joystick). An enemy spaceship that changes position from time to time will make your life difficult by shooting at you. Your goal should be to avoid getting hit and to hit the opponent often. That earns points. Collisions with the meteorite (monster) also caused by the Space buzzes and the opponent's spaceship is to be avoided, as this inevitably leads to the loss of your own ship. From 200 points the opponent's shape changes. If the meteorite hits 300 points or more, it becomes a monster. For a certain number of points you will receive a brand new spaceship as a .Bonus. 10 A=30 :: B=-20 20 CALL CLEAR 30 REM CHARACTER DEFINITION************* 40 S3$="01042000684402010102446800244000C0460084808CAEC6C0A6908194044010" 50 S4$="000000070F0F0F1F3F3F7F1F1D111000000040F0F0FCFCFEFEFFFFFCFCF07000" 60 S5$="0303070E0C0CFEFEFEFE0C0C0E070303F8F8F8787C7C3F1F1F3F7C7C78F8F8F8" 70 S6$="0000000000007FFFFF7F0000000000000000183870F0F6FEFEF6F07038180000" 80 S7$="07070F19313F3F7CF8C8C4E270301800E0E0F0988CFCFC3E1F1323470E0C1800" 90 S2$="0000FF00000000000000000000FF00000000E000000000000000000000E00000" 100 S1$="0007070F1F1FD1FBFBDB1F1F0F0707000000FC0080E07E7F7F7EE08000FC0000" 110 S8$="000000FF00000FFFFF0F0000FF0000001C3C7CFC7CFDEFCFCFEFFD7CFC7C3C1C" 120 S9$="000000000020518B9E2F43448B0C00000000000000048AD169F4C22211300000" 130 CALL CHAR(60,S3$) :: CALL CHAR(104,S8$) :: CALL CHAR(100,S4$) :: CALL CHAR(108,S5$) :: CALL CHAR(112,S6$) :: CALL CHAR(116,S7$) 140 CALL CHAR(120,S9$) 150 CALL CHAR(96,S2$) 160 CALL CHAR(92,S1$) 170 CALL SPRITE(#4,100,2,170,25,10,-25) 190 CALL COLOR(Z,11,1) 190 CALL MAGNIFY(3) 200 REM INTRODUCTION********** 210 CALL CLEAR :: CALL SCREEN(10) 220 DISPLAY AT(1,6):"*****************" :: DISPLAY AT(2,6):"*TI SPACE SATTLE*" :: DISPLAY AT(3,6):"*****************" 230 DISPLAY AT(4,7):"BY R.HEIGENMOSER" 240 DISPLAY AT(6,2):"SCORE:" 250 DISPLAY AT(8,2):"hj" :: DISPLAY AT(9,2):"ik 100 POINTS" 260 DISPLAY AT(11,2):"ln" :: DISPLAY AT(12,2):"mo 150 POINTS" 270 DISPLAY AT(14,2):"df" :: DISPLAY AT(15,2):"es 10 POINTS" 280 DISPLAY AT(17,2):"tv" :: DISPLAY AT(18,2):"uw 50 POINTS" 290 DISPLAY AT(20,2):"xz" :: DISPLAY AT(21,2):"y{ 100 POINTS" 300 DISPLAY AT(24,2):"PRESS BUTTON" :: CALL KEY(0,KEY,STA):: IF STA=0 THEN 300 310 CALL CHAR(92,S1$) 320 REM CREATE ENVIRONMENT************ 330 CALL SCREEN(6) :: CALL CLEAR :: DISPLAY AT(1,7):"SCORE:" :: DISPLAY AT(1,14):SCORE 340 FOR I=1 TO 30 :: DISPLAY AT(RND*24+1,RND*28+1)SIZE(1):"." :: NEXT I 350 HIGH=500 :: PA=104 :: PA1=96 :: CO1=11 :: CO2=15 :: SC1=100 :: SC2=10 360 CALL PATTERN(#4,100):: CALL COLOR(#4,2) 370 REM MAIN PROGRAM******** 380 DISPLAY AT(23,1):"\^\^\^\^" :: DISPLAY AT(24,1):"]_]_]_]_" :: FOR K=0 TO 3 390 DISPLAY AT(23,2*K+1)SIZE(2):" " :: DISPLAY AT(24,2*K+1)SIZE(2):" " 400 ZAE=0 :: A=-30+INT(RND*60):: B=-20+INT(RND*40):: CALL SPRITE(#1,92,16,70,30,0,0) 410 CALL SPRITE(#8,PA,CO1,1,230) 420 CALL JOYST(1,XPOS,YPOS) 430 CALL MOTION(#1,-YPOS*15,XPOS*10) 440 REM MOVEMENT ENEMY******** 450 CALL MOTION(#8,A,B) 460 REM SHOT INQUIRY********* 470 CALL KEY(1,TAS,STATUS):: IF TAS=18 THEN 480 ELSE 540 480 REM SHOT******** 490 CALL SOUND(150,-7,0) 500 CALL POSITION(#1,X,Y):: CALL SPRITE(#2,96,2,X,Y,0,127) 510 CALL POSITION(#2,X1,X2) 520 IF X2<200 THEN 530 ELSE CALL DELSPRITE(#2) :: GOTO 540 530 CALL COINC(#2,#8,25,CO):: CALL COINC(#2,#4,20,C24):: IF CO=0 AND C24=0 THEN 510 ELSE 770 540 CALL JOYST(1,XPOS,YPOS):: CALL MOTION(#1,-YPOS*15,XPOS*10) 550 REM MOVEMENT METEORITE******* 560 CALL MOTION(#4,-30+INT(RND*60),-20+INT(RND*40)) 570 REM COLLISION SCHIFF-GEGNER?************* 580 CALL COINC(#1,#8,20,C18):: IF C18=-1 THEN 730 590 REM COLL.SCHIFF-METE.?********* 600 CALL COINC(#1,#4,20,C14):: IF C14=-1 THEN 730 610 A=0 :: B=0 620 REM MOVING ENEMIES******** 630 IF ZAE=2 THEN A=-50+INT(RND*100) :: B=-40+INT(RND*80) :: ZAE=0 :: GOTO 420 640 CALL JOYST(1,XPOS,YPOS):: CALL MOTION(#1,-YPOS*15,XPOS*10) 650 IF INT(RND*2)=1 THEN 670 ELSE 420 660 REM SHOT ENEMY****** 670 CALL POSITION(#8,X8,Y8):: CALL SPRITE(#9,PA1,CO2,X8,Y8,0,-127) 680 CALL SOUND(150,-5,0) 690 CALL POSITION(#9,X9,Y9):: IF Y9>55 THEN 700 ELSE CALL DELSPRITE(#9):: ZAE=ZAE+1 :: GOTO 420 700 CALL COINC(#1,#9,25,CO):: IF CO=-1 THEN 730 710 CALL JOYST(1,XPOS,YPOS):: CALL MOTION(#1,-YPOS*15,XPOS*10):: GOTO 690 720 REM SHIP MEET************* 730 CALL DELSPRITE(#9):: CALL PATTERN(#1,60) :: IF C18=0 THEN 740 ELSE CALL PATTERN(#8,60) 740 CALL MOTION(#1,0,0):: CALL MOTION(#8,0,0) :: FOR I=0 TO 30 :: CALL SOUND(50,-6,I):: NEXT I 750 NEXT K :: GOTO 900 760 REM ENEMY MEET******* 770 CALL DELSPRITE(#2):: IF C24=-1 THEN 830 ELSE CALL PATTERN(#8,60) 780 CALL MOTION(#1,0,0):: CALL MOTION(#8,0,0) :: FOR I=0 TO 30 :: CALL SOUND(100,-7,I):: NEXT I :: SCORE=SCORE+SC1 790 IF SCORE>=HIGH THEN GOSUB 970 800 DISPLAY AT(1,14):SCORE :: IF SCORE<200 THEN PA=104 ELSE PA=108 :: PA1=112 :: CO1=10 :: CO2=7 :: SC1=150 810 GOTO 400 820 REM METEORITE MEET********* 830 CALL PATTERN(#4,60):: FOR I=0 TO 30 :: CALL SOUND(50,-3,I) :: NEXT I :: SCORE =SCORE+SC2 :: CALL PATTERN(#4,100) :: DISPLAY AT(1,14):SCORE 840 IF SCORE>=HIGH THEN GOSUB 970 850 IF SCORE>600 AND SC2=50 THEN CALL PATTERN(#4,120):: SC2=100 :: CALL COLOR(#4,120):: GOTO 420 860 IF SCORE>300 THEN CALL PATTERN(#4,116):: SC2=50 :: CALL COLOR(#4,8) 870 GOTO 420 880 GOTO 420 890 REM END******* 900 CALL CLEAR :: CALL SCREEN(11) 910 DISPLAY AT(10,8):"NOCHMAL J ODER N" 920 HSC=MAX(HSC,SCORE):: DISPLAY AT(15,6):"HIGHSCORE:";HSC :: SCORE=0 930 CALL KEY(0,KEY,STA):: IF STA=0 THEN 930 940 IF KEY=106 THEN 330 ELSE END 950 END 960 REM BONUS********* 970 DISPLAY AT(23,2*K+1)SIZE(2):"\^" DISPLAY AT(24,2*K+1)SIZE(2):"]_" :: K=K-1 :: HIGH=HIGH+2000 :: RETURN Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 15, 2020 Author Share Posted September 15, 2020 (edited) Holt's on line 600... How Graph Works Line(s) 100 DIMension arrays. 110-120 Clear the screen and display message. 130-140 Set up character patterns. BL$ is used to blank out the characters used by the program. A$, B$, C$, and D$ are used to insert the X and Y axes in the display area. 150 Load four-digit bit strings into BITS$. 160-170 Blank out the ASCII characters used in the display area. 180-230 Insert the X and Y axis lines in the display area. 240 Display the X and Y axis values. 250-320 Load the A array with the ASCII character codes in the display area. This is used later to determine which ASCII character code to change. 330 Erase STAND BY message. 340-380 Display the 64 characters on the screen 8 characters at a time. This builds the 8 x 8 display area. 390-400 Initiate the routine to plot the points for the positive values of X. 410-420 Initiate the routine to plot the points for the negative values of X. 430-450 End of program. 460 This is the equation which controls where the points are plotted on the graph. Figure 2-9 shows possible alternatives. 470-490 Determine the actual location of the point in the 64 x 64 pbcel matrix. The program plots both positive and negative values, but negatives in the actual matrix aren't possible, hence the +32. 500-520 Determine the location of the pixel in the 8 x 8 character matrix. This must be done since the pixel cannot be accessed directly. 530 Get the hex pattern of the character that contains the pixel. The A array contains the ASCII codes of the characters used. The pattern is placed in W$. 540-560 Determine which byte in the pattern contains the pixel. 570-620 Convert the one-byte hex pattern which contains the pixel into an eight-digit bit pattern (for example, 00100110). 630-660 CI contains the column position of the pixel within the 8x8 character grid. If the bit in this position is not on, it is turned on. If it is on, it stays as is. 670-690 Convert the bit pattern, with the updated pixel, back into a hex pattern. 700-730 Combine the new one-byte hex pattern with the other seven bytes in the pattern. 740 Change the pattern of the ASCII character code which effectively plots the point on the screen. 750 Return from plot subroutine. 760-770 Hex pattern binary equivalents. Program 2-7. Graph 100 DIM A(8,8),BITS$(15) 110 CALL CLEAR 120 DISPLAY AT(4,6):"PLEASE STAND BY" 130 BL$="0000000000000000" :: HEX$="01234567O9ABCDEF" 140 A$="0101010101010101" :: B$="8080808080808080" :: C$="00000000000000FF" :: D$= "FF0000000000000000" 150 FOR L=0 TO 15 :: READ BITS$(L) :: NEXT L 160 FOR L=33 TO 44 :: CALL CHAR(L,BL$) :: NEXT L 170 FOR L=91 TO 143 :: CALL CHAR(L,BL$) :: NEXT L 180 CALL CHAR(36,A$,44,A$,98,A$,122,A$,130,A$,138,A$) 190 CALL CHAR(37,B$,91,B$,99,B$,123,B$,131,B$,139,B$) 200 CALL CHAR(103,C$,104,C$,105,C$,108,C$,109,C$,110,C$) 210 CALL CHAR(111,D$,112,D$,113,D$,116,D$,117,D$,118,D$) 220 CALL CHAR(106,"01010101010101FF") :: CALL CHAR(107,"80808080808080FF") 230 CALL CHAR(114,"FF01010101010101") :: CALL CHAR(115,"FF80808080808080") 240 DISPLAY AT(6,13):"32" :: DISPLAY AT(11,19 ):"32" :: DISPLAY AT(11,7):"-32"; :: DISPLAY AT(17,12):"-32" 250 X=33 260 FOR L=1 TO 8 270 FOR L2=1 TO 8 280 IF X=45 THEN X=91 290 A(L,L2)=X 300 X=X+1 310 NEXT L2 320 NEXT L 330 DISPLAY AT(4,1):" " 340 FOR L=1 TO 8 350 L$="" 360 FOR X=1 TO 8 :: L$=L$&CHR$(A(L,X)) :: NEXT X 370 DISPLAY AT(7+L,10):L$; 380 NEXT L 390 FOR X=0 TO 32 STEP .3 400 GOSUB 460 :: NEXT X 410 FOR X=0 TO -32 STEP -.3 420 GOSUB 460 :: NEXT X 430 DISPLAY AT(22,8):"PRESS ANY KEY" 440 CALL KEY(3,K,S):: IF S=0 THEN 440 450 CALL CLEAR :: STOP 460 Y=X 470 XX=INT(X+32) :: YY=INT(Y+32) 480 IF XX>64 OR XX<=0 THEN 750 490 IF YY>64 OR YY<=0 THEN 750 500 R=64-YY+1 510 CC=INT((XX-1)/8)+1 520 RR=INT((R-1)/8)+1 530 CALL CHARPAT(A(RR,CC),W$) 540 C1=XX-((CC-1)*8) 550 R1=INT((64-YY)-((RR-1)*8)+1) 560 BYTE$=SEG$(W$,R1*2-1,2) 570 EXPAND$="" 580 FOR L3=1 TO 2 590 H0LD$=SEG$(BYTE$,L3,1) 600 IF HOLD$>"9" THEN POINT=ASC(HOLD$)-55 ELSE POINT=VAL(HOLD$) 610 EXPAND$=EXPAND$&BITS$(POINT) 620 NEXT L3 630 NEWPAT$="" 640 FOR L2=1 TO 8 650 IF C1<>L2 THEN NEWPAT$=NEWPAT$&SEG$(EXPAND$,L2,1) ELSE NEWPAT$=NEWPAT$&"1" 660 NEXT L2 670 HIGH$=SEG$(HEX$,8*VAL(SEG$(NEWPAT$,1,1))+4*VAL(SEG$(NEWPAT$,2,1))+2*VAL(SEG$(NEWPAT$,3,1))+VAL(SEG$(NEWPAT$,4,1))+1,1) 680 LOW$=SEG$(HEX$,8*VAL(SEG$(NEWPAT$,5,1))+4*VAL(SEG$(NEWPAT$,6,1))+2*VAL(SEG$(NEWPAT$,7,1))+VAL(SEG$(NEWPAT$,8,1))+1,1) 690 BYTE$=HIGH$&LOW$ 700 NEWCHAR$="" 710 FOR L2=1 TO 16 720 IF L2<>R1*2-1 THEN NEWCHAR$=NEWCHAR$&SEG$(V7$,L2,1) ELSE NEWCHAR$=NEWCAR$&BYTE$ :: L2=L2+1 730 NEXT L2 740 CALL CHAR(A(RR,CC),NEWCHAR$) 750 RETURN 760 DATA "0000","0001","0010","0011","0100","0101","0110","0111","1000" 770 DATA "1001","1010","1011","1100","1101","1110","1111" Edited September 15, 2020 by oddemann Error mesg. Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 29, 2020 Author Share Posted September 29, 2020 Program 7-4. Banzai Bunny It will not show score... Why? Program 7-4. Banzai Bunny 100 CALL CLEAR :: RANDOMIZE 110 CALL CHAR(40,"FFFFFFFFFFFFFFFF") 120 CALL CHAR(96,"000000030709030303030301000000000000000040C0808080C0C0C000000000") 130 CALL CHAR(100,"000000000000070F0F0E000000000000000000002010D8F8E030000000000000") 140 CALL CHAR(104,"0000000004081B1F070C000000000000000000000000E0F0F070000000000000") 150 CALL CHAR(108,"000000030709030303030301000000000000404040808080808080C040400000") 160 CALL CHAR(112,"000000000000070F0F38000000000000000000002010D8F8E01C000000000000") 170 CALL CHAR(116,"0000000004081B1F073C000000000000000000000000E0F0F01C000000000000") 180 CALL CHAR(120,"00000000000102043F7FFFFF381000000000000000F04844FEFFFFFF1C080000") 190 CALL CHAR(124,"00000000000F12227FFFFFFF381000000000000000804020FCFEFFFF1C080000") 200 CALL CHAR(128,"0000070F3F3F7FFFFF7F3F3F0F0700000000E0F0FCFCFEFFFFFEFCFCF0E00000") 210 CALL CHAR (132,"FFFFFFFFFFFFFFFF"):: CALL CHAR(136,"000000000000000F") 220 CALL CHAR(140,"80C06070303008060303030607181800010203071C30708080C0607030100100") 230 CALL COLOR(2,5,1,13,4,1,14,2,1) 240 DISPLAY AT(4,1): "NUMBER OF PLAYERS? _" 250 ACCEPT AT(4,20)VALIDATE(NUMERIC)SIZE(-1)BEEP:NP 260 CALL CLEAR 270 CALL HCHAR(23,1,132,32):: CALL HCHAR(24,1,132,32) 280 CALL HCHAR(10,1,132,32):: CALL HCHAR(9,1,132,32) 290 CALL HCHAR(1,1,132,32):: CALL HCHAR(2,1,132,32) 300 FOR L=12 TO 21 STEP 2 310 CALL HCHAR(L,1,136,32) 320 NEXT L 330 FOR L=3 TO 8 340 CALL HCHAR(L,1,40,32) 350 NEXT L 360 CALL MAGNIFY(3) 370 CALL SPRITE(#2,124,2,160,70,0,9,#3,124,9,160,150,0,9,#4,124,14,160,230,0,9) 380 CALL SPRITE(#5,124,15,144,10,0,12,#6,124,5,144,100,0,12,#24,124,13,144,190,0,12) 390 CALL SPRITE(#7,124,2,128,70,0,10,#8,124,9,128,150,0,10,#9,124,11,128,230,0,10) 400 CALL SPRITE(#10,120,9,112,70,0,-10,#11,120,14,112,150,0,-10,#12,120,16,112,230,0,-10) 410 CALL SPRITE(#13,120,11,96,10,0,-12,#14,120,5,96,100,0,-12,#25,120,14,96,190,0,-12) 420 CALL SPRITE(#15,120,2,80,70,0,-9,#16,120,10,60,150,0,-9,#17,120,15,80,230,0,-9):: GOTO 460 430 CALL SPRITE(#19,128,2,48,10,0,4) 440 CALL SPRITE(#21,128,2,32,10,0,-3) 450 CALL SPRITE(#22,128,2,16,10,0,5):: RETURN 460 FOR PL=1 TO NP 470 BUNNY=5 :: FOR D=1 TO 5 :: CALL SOUND(300,500,0):: CALL SOUND(300,300,0):: NEXT D 480 DISPLAY AT(24,1):USING "###### #":"PLAYER",PL; :: DISPLAY AT(24,20):USING "####### #":"BUNNIES",BUNNY 490 DISPLAY AT(1,10):"SCORE: "; 500 GOSUB 530 510 NEXT PL 520 GOTO 890 530 GOSUB 430 :: CALL SPRITE(#18, 96,16,176,125):: R=176 :: C=125 540 CALL KEY(3,K,S) 550 IF R<64 THEN 610 560 CALL COINC(ALL,CO) :: IF CO<>0 THEN 780 570 IF K=69 THEN GOSUB 640 :: IF R<64 THEN 700 ELSE 540 580 IF K=83 THEN GOSUB 660 :: GOTO 540 590 IF K=68 THEN GOSUB 680 :: GOTO 540 600 GOTO 540 610 CALL COINC(ALL,CO):: IF CO=0 THEN 780 ELSE 570 620 CALL SOUND(70,500,5,-6,0):: CALL SOUND(30,300,5,-4,0):: RETURN 630 RETURN 640 CALL PATTERN(#18,108) :: R=R-16 :: SW=1 :: IF R<1 THEN R=1 650 CALL LOCATE(#18,R,C) :: CALL PATTERN(#18,96) :: GOSUB 620 :: RETURN 660 CALL PATTERN(#18,116) :: C=C-16 :: SW=1 :: IF C<1 THEN C=1 670 CALL LOCATE(#18,R,C) :: CALL PATTERN(#18,104) :: GOSUB 620 :: RETURN 680 CALL PATTERN(#18,112) :: C=C+16 :: SW=1 :: IF C>240 THEN C=240 690 CALL LOCATE(#18,R,C) :: CALL PATTERN(#18,100) :: GOSUB 620 :: RETURN 700 CALL KEY(3,K,S) 710 IF S<>0 THEN IF K=69 THEN GOSUB 640 ELSE IF K=83 THEN GOSUB 660 ELSE IF K=68 THEN GOSUB 680 720 CALL POSITION(#18,R,C) :: IF R=1 THEN CALL MOTION(#18,0,0) :: GOTO 850 730 IF C<7 OR C>236 THEN 780 740 IF R<=48 AND R>32 THEN CALL MOTION(#18,0,4) ELSE IF R<=32 AND R>16 THEN CALL MOTION(#18,0, -3) ELSE CALL MOTION(#18,0,5) 750 IF SW=1 THEN CALL COINC(ALL,CO) :: IF CO=0 THEN 780 ELSE SW=0 770 GOTO 700 780 CALL SOUND(300,3500,0,5000,5) :: CALL SOUND(-200,200,5,-6,0) 790 CALL PATTERN(#18,140) :: CALL COLOR(#18,11) 800 FOR D=1 TO 25 :: NEXT D 810 CALL DELSPRITE(#18) 820 BUNNY=BUNNY-1 :: IF BUNNY<1 THEN 630 830 DISPLAY AT(24,27):USING "##":BUNNY 840 GOTO 530 850 CALL SOUND(1500,400,5,1000,0) :: FOR D=1 TO 500 :: NEXT D 860 SC(PL)=SC(PL)+15 870 DISPLAY AT(1,17):USING "###":SC(PL); 880 GOTO 530 890 CALL DELSPRITE(ALL) :: CALL CLEAR 900 DISPLAY AT(2,7):"** SCORE **" 910 FOR L=1 TO NP 920 DISPLAY AT(4+L*2,4):USING "###### # # ##": "PLAYER",L,SC(L) 930 NEXT L 940 GOTO 940 Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 29, 2020 Author Share Posted September 29, 2020 On 9/15/2020 at 8:21 PM, oddemann said: Holt's on line 600... How Graph Works Line(s) 100 DIMension arrays. 110-120 Clear the screen and display message. 130-140 Set up character patterns. BL$ is used to blank out the characters used by the program. A$, B$, C$, and D$ are used to insert the X and Y axes in the display area. 150 Load four-digit bit strings into BITS$. 160-170 Blank out the ASCII characters used in the display area. 180-230 Insert the X and Y axis lines in the display area. 240 Display the X and Y axis values. 250-320 Load the A array with the ASCII character codes in the display area. This is used later to determine which ASCII character code to change. 330 Erase STAND BY message. 340-380 Display the 64 characters on the screen 8 characters at a time. This builds the 8 x 8 display area. 390-400 Initiate the routine to plot the points for the positive values of X. 410-420 Initiate the routine to plot the points for the negative values of X. 430-450 End of program. 460 This is the equation which controls where the points are plotted on the graph. Figure 2-9 shows possible alternatives. 470-490 Determine the actual location of the point in the 64 x 64 pbcel matrix. The program plots both positive and negative values, but negatives in the actual matrix aren't possible, hence the +32. 500-520 Determine the location of the pixel in the 8 x 8 character matrix. This must be done since the pixel cannot be accessed directly. 530 Get the hex pattern of the character that contains the pixel. The A array contains the ASCII codes of the characters used. The pattern is placed in W$. 540-560 Determine which byte in the pattern contains the pixel. 570-620 Convert the one-byte hex pattern which contains the pixel into an eight-digit bit pattern (for example, 00100110). 630-660 CI contains the column position of the pixel within the 8x8 character grid. If the bit in this position is not on, it is turned on. If it is on, it stays as is. 670-690 Convert the bit pattern, with the updated pixel, back into a hex pattern. 700-730 Combine the new one-byte hex pattern with the other seven bytes in the pattern. 740 Change the pattern of the ASCII character code which effectively plots the point on the screen. 750 Return from plot subroutine. 760-770 Hex pattern binary equivalents. Program 2-7. Graph FIX - 590 HOLD$=SEG$(BYTE$,L3,1) (There was a 0 in H0LD$) But new bug... Bad value 740... Quote Link to comment Share on other sites More sharing options...
oddemann Posted September 30, 2020 Author Share Posted September 30, 2020 This works great... BUT, I want to make the fish move more. I have other things I want to do where i want a sprite to "move" not a static ONE sprite. I want to make the ONE Sprite shift from 1 to 2 or even 3 or 4 different pictures. So I found this Aquarium program and it is nice. I want to make the individual fishes move as if they are moving there tale. BUT... How do I do this. I tried different things, and I am not even close. Can you help? I want ONE sprite to move back and forth from A$ and B$. Working on a animation, have two now, but if I can make more life into the fish I will try to add more animation. 140 ! REQUIRES EXTENDED BASIC. 150 CALL SCREEN(2) 160 CALL CLEAR 170 FOR I=1 TO 14 :: CALL COLOR(I,15,1):: NEXT I 180 PRINT "TI AQUARIUM": : : : 190 PRINT "This program allows you to" 200 PRINT "use your TI-99 to enjoy the" 210 PRINT "relaxing sight of fish" 220 PRINT "swimming by, without the" 230 PRINT "expense and bother of a" 240 PRINT "real aquarium." 250 PRINT : :"To end the program, press" 260 PRINT "any key while the fish are" 270 PRINT "being displayed." 280FOR D=1 TO 1500 :: NEXT D 290 CALL CLEAR 300 RANDOMIZE 310 A$="0000000081C3E7FFFFE7C3810000000000000000F0F8FCFEFEFCF8F000000000" 320 CALL CHAR(120,A$) 330 CALL MAGNIFY(3) 340 DATA 9,6,4,7,8,10,11,12,14,0 350 CALL SCREEN(2) 360 ! 370 ! Put fish on the screen., with sprite numbers and 380 ! colors based on the DATA statement 390 ! 400 READ Q 410 IF Q=0 THEN 540 420 CALL SPRITE(#Q,120,1,90+30*(RND-0.5),1,4*RND-3,5*RND+1) 430 CALL COLOR(#Q,Q) 440 GOSUB 610 450 GOSUB 610 460 GOSUB 610 470 FOR D=l TO 300 :: NEXT D 480 GOTO 400 490 ! 500 ! Now that all the fish are on the screen, make 510 ! random changes in their motion and check for 520 ! a key being pressed. 530 ! 540 GOSUB 610 550 CALL KEY(5,CODE,STATUS) 560 IF STATUS<>0 THEN CALL CLEAR :: STOP 570 GOTO 540 580 ! 590 ! Subroutine: Change the motion of a 600 ! randomly chosen sprite 605 ! 610 CALL MOTION(#INT(11*RND)+3,4*RND-2,5*RND+2) 620 RETURN Alternativ Better fish 310 A$="0000000083C76F7F7F6FC78300000000000000F0F8FCF6FFFFFEFCF8F0000000" Tale flopp 315 B$="0000000043476F7F7F6F474300000000000000F0F8FCF6FFFFFEFCF8F0000000" Quote Link to comment Share on other sites More sharing options...
+TheBF Posted September 30, 2020 Share Posted September 30, 2020 Try this for some ideas. I removed CALL KEY because it slows down the loop. BREAK is the only way out. Spoiler 100 ! REQUIRES EXTENDED BASIC. 110 CALL SCREEN(2) 120 CALL CLEAR 130 FOR I=1 TO 14 :: CALL COLOR(I,15,1):: NEXT I 140 PRINT "TI AQUARIUM": : : : 150 PRINT "This program allows you to" 160 PRINT "use your TI-99 to enjoy the" 170 PRINT "relaxing sight of fish" 180 PRINT "swimming by, without the" 190 PRINT "expense and bother of a" 200 PRINT "real aquarium." 210 PRINT : :"To end the program, press" 220 PRINT "any key while the fish are" 230 PRINT "being displayed." 240 FOR D=1 TO 500 :: NEXT D 250 CALL CLEAR 260 RANDOMIZE 270 A$="0000000043476F7F7F6F474300000000004020F0F8DCB6BFBFDEFCF820400000" 280 B$="0000010003272F3F3F2F270300010000000000F0F8DCB6BFBFDEFCF8F0000000" 290 CALL CHAR(120,A$) 300 CALL CHAR(124,B$) 310 CALL MAGNIFY(3) 320 CALL SCREEN(2) 330 ! 340 ! Put 10 fish on the screen, 350 ! colors are sequential 360 ! 370 FOR Q=1 TO 10 380 CALL SPRITE(#Q,120,1,90+30*(RND-0.5),1,4*RND-3,5*RND+1) 390 CALL COLOR(#Q,Q+2) 400 NEXT Q 410 ! 420 ! Now that all the fish are on the screen 430 ! make random changes in their motion 440 ! 450 FISH=INT(10*RND)+1 460 CALL MOTION(#FISH,4*RND-2,8*RND-4) 470 FOR X=1 TO 20 480 CALL PATTERN(#FISH,124)! wiggle 490 CALL SOUND(RND*100+20,-6,30)! DELAY 500 CALL PATTERN(#FISH,120) 510 NEXT X 520 GOTO 450 530 END 1 Quote Link to comment Share on other sites More sharing options...
WhataKowinkydink Posted September 30, 2020 Share Posted September 30, 2020 (edited) 26 minutes ago, TheBF said: Try this for some ideas. I removed CALL KEY because it slows down the loop. BREAK is the only way out. Nice. Only took 20 minutes to check out in Classic99 on virtualbox - could have typed into MAME quicker ? Shame Classic99 doesn't have a Linux port..... Well, on the upshot, PasteXB now functions under WINE (and I'll be honest, that is one highly useful function ?) Edited September 30, 2020 by WhataKowinkydink Quote Link to comment Share on other sites More sharing options...
WhataKowinkydink Posted September 30, 2020 Share Posted September 30, 2020 Anyway, I'll get off the soapbox. I really like this aquarium. Great find @oddemann - nice work, too @TheBF . I might just have to save it for late use on the real iron Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.