DECLARE SUB checkklok () DECLARE SUB chekklok () '''Wormpjes met gedoogafstand, voedings- en verbruikspunten '''******************************************************** DECLARE SUB saven () DECLARE SUB titel () DECLARE SUB rapper () DECLARE SUB trager () DECLARE SUB trager2 () DECLARE SUB checkafst2 () DECLARE SUB checkafst () DECLARE SUB scantoets () DECLARE SUB verdik2 () DECLARE SUB verdun2 () DECLARE SUB verleng2 () DECLARE SUB verkort2 () DECLARE SUB gekoppeld2 () DECLARE SUB verdik () DECLARE SUB verdun () DECLARE SUB verleng () DECLARE SUB verkort () DECLARE SUB parms () DECLARE SUB initworm () DECLARE SUB krimpunt () DECLARE SUB wispunt () DECLARE SUB vulpunt () DECLARE SUB gekoppeld () DECLARE SUB intro () DECLARE SUB dikker () DECLARE SUB dunner () DECLARE SUB dikker2 () DECLARE SUB dunner2 () DECLARE SUB langer () DECLARE SUB langer2 () DECLARE SUB korter () DECLARE SUB korter2 () DECLARE SUB rapper2 () DECLARE SUB versnel () DECLARE SUB vertraag () DECLARE SUB versnel2 () DECLARE SUB vertraag2 () DECLARE SUB koppel () DECLARE SUB koppel2 () DECLARE SUB schuifop () DECLARE SUB schuifop2 () DECLARE SUB checkpunt () DECLARE SUB duidaan () DECLARE SUB herteken () DECLARE SUB herteken2 () DECLARE SUB wissen () DECLARE SUB wissen2 () DECLARE SUB wachten () COMMON SHARED x%(), y%(), xx%(), yy%() COMMON SHARED x0%, y0%, xx0%, yy0% COMMON SHARED leng%, leng2%, r%, r2%, wrm%, whd%, wrm2%, whd2% COMMON SHARED max%, rmax%, ds%, ds2%, dsm%, alf, alf2, dalf, dalf2, rf, rrf, str COMMON SHARED r0%, rp%, xf%, yf%, vlag%, eett, cpu, totwacht, twacht, wacht%, pla%, pai%, cir%, pi COMMON SHARED rndf1, rndf, rndk, t, tijd, ttijd, pla$, punt$, vul%, a$ COMMON SHARED dik%, dik2%, dun%, dun2%, lon%, lon2%, kor%, kor2%, par%, par2% COMMON SHARED rap%, rap2%, tra%, tra2%, pri%, sel% COMMON SHARED xn%, yn%, xxn%, yyn% COMMON SHARED nlon%, nkor%, ndik%, ndun%, nrap%, ntra%, nko1%, nko2% '******************************* max% = 25 REDIM x%(max%), y%(max%), xx%(max%), yy%(max%) '''wormringcentra RANDOMIZE TIMER: ttijd = TIMER SCREEN 12 CALL intro CALL parms CALL checkklok CALL initworm Beweeg: '''nieuwe positie worm1... CIRCLE (x%(0), y%(0)), r%, 0: PSET (x%(0), y%(0)), 0 '''worm1 naar punt... IF dik% = 1 THEN CALL schuifop: CALL dikker: GOTO Teken '''...verdikken IF dun% = 1 THEN CALL schuifop: CALL dunner: GOTO Teken '''...verdunnen IF lon% = 1 THEN CALL schuifop: CALL langer: GOTO Teken '''...verlengen IF kor% = 1 THEN CALL schuifop: CALL korter: GOTO Teken '''...verkorten IF rap% = 1 THEN CALL schuifop: CALL rapper: GOTO Teken '''...versnellen IF tra% = 1 THEN CALL schuifop: CALL trager: GOTO Teken '''...vertragen IF par% = 1 THEN CALL schuifop: CALL koppel: GOTO Teken '''...worm2 '''worm1 bij punt... IF pri% = 0 THEN pri$ = "WORMs " ELSE pri$ = " " IF dik% = 2 THEN '''... verdikken aangekomen IF TIMER - tijd < eett THEN '''wachttijd... vul% = 14: CALL krimpunt GOTO Beweeg2 ''' ...verder met worm2 END IF vul% = 8: CALL wispunt CALL verdik dik% = 0: tijd = 0: vlag% = 0: tijd = 0 LOCATE 1, 1: PRINT pri$ END IF IF dun% = 2 THEN '''... verdunnen IF TIMER - tijd < eett THEN '''wachttijd: verder met worm2 vul% = 1: CALL vulpunt GOTO Beweeg2 END IF vul% = 9: CALL wispunt CALL verdun dun% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF lon% = 2 THEN '''... verlengen ''lon2% = 0 IF TIMER - tijd < eett THEN '''wachttijd: verder met worm2 vul% = 12: CALL krimpunt GOTO Beweeg2 END IF vul% = 8: CALL wispunt CALL verleng lon% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF kor% = 2 THEN '''... verkorten IF TIMER - tijd < eett THEN '''wachttijd: verder met worm2 vul% = 2: CALL vulpunt GOTO Beweeg2 END IF vul% = 10: CALL wispunt CALL verkort kor% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF rap% = 2 THEN '''... versnellen aangekomen IF TIMER - tijd < eett THEN '''wachttijd... vul% = 7: CALL krimpunt GOTO Beweeg2 ''' ...verder met worm2 END IF vul% = 8: CALL wispunt CALL versnel rap% = 0: tijd = 0: vlag% = 0: tijd = 0 LOCATE 1, 1: PRINT pri$ END IF IF tra% = 2 THEN '''... vertragen IF TIMER - tijd < eett THEN '''wachttijd: verder met worm2 vul% = 8: CALL vulpunt GOTO Beweeg2 END IF vul% = 10: CALL wispunt CALL vertraag tra% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF par% = 2 THEN '''worm1 bij worm2 aangekomen CALL gekoppeld par% = 0: vlag% = 0 END IF CALL schuifop '''ringen opschuiven... alf = alf - dalf + RND * 2 * dalf '''... en 1 nieuwe ring xn% = x%(leng%) + ds% * COS(alf) yn% = y%(leng%) + ds% * SIN(alf) CheckPlaats: '''plaats nieuwe ring worm1 checken IF par% <> 0 GOTO Checkrand '''koppelroutine = doorgaan CALL checkafst '''check gedoogafstand Checkrand: IF xn% > 639 - r% THEN xn% = 639 - r% '''binnen scherm blijven... IF xn% < r% THEN xn% = r% IF yn% > 479 - r% THEN yn% = 479 - r% IF yn% < 16 + r% THEN yn% = 16 + r% x%(leng%) = xn%: y%(leng%) = yn% Teken: '''nieuwe ring worm1 CIRCLE (x%(leng% - 1), y%(leng% - 1)), r%, wrm% CIRCLE (x%(leng%), y%(leng%)), r%, whd% PSET (x%(leng%), y%(leng%)), 13 Beweeg2: '''nieuwe positie worm2 CIRCLE (xx%(0), yy%(0)), r2%, 0: PSET (xx%(0), yy%(0)), 0 '''worm2 naar punt.... IF dik2% = 1 THEN CALL schuifop2: CALL dikker2: GOTO Teken2 '''...verdikken IF dun2% = 1 THEN CALL schuifop2: CALL dunner2: GOTO Teken2 '''...verdunnen IF lon2% = 1 THEN CALL schuifop2: CALL langer2: GOTO Teken2 '''...verlengen IF kor2% = 1 THEN CALL schuifop2: CALL korter2: GOTO Teken2 '''...verkorten IF rap2% = 1 THEN CALL schuifop2: CALL rapper2: GOTO Teken2 '''...versnellen IF tra2% = 1 THEN CALL schuifop2: CALL trager2: GOTO Teken2 '''...vertragen IF par2% = 1 THEN CALL schuifop2: CALL koppel2: GOTO Teken2 '''...worm1 '''worm2 aangekomen bij punt... IF pri% = 0 THEN pri$ = "WORMs " ELSE pri$ = " " IF dik2% = 2 THEN '''... verdikken IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 14: CALL krimpunt GOTO scantoets END IF vul% = 8: CALL wispunt CALL verdik2 dik2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF dun2% = 2 THEN '''... verdunnen IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 1: CALL vulpunt GOTO scantoets END IF vul% = 9: CALL wispunt CALL verdun2 dun2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF lon2% = 2 THEN '''... verlengen ''lon% = 0 IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 12: CALL krimpunt GOTO scantoets END IF vul% = 8: CALL wispunt CALL verleng2 lon2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF kor2% = 2 THEN '''... verkorten IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 2: CALL vulpunt GOTO scantoets END IF vul% = 10: CALL wispunt CALL verkort2 kor2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF rap2% = 2 THEN '''... versnellen IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 7: CALL krimpunt GOTO scantoets END IF vul% = 8: CALL wispunt CALL versnel2 rap2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF tra2% = 2 THEN '''... vertragen IF TIMER - tijd < eett THEN '''wachttijd: verder met worm1 vul% = 2: CALL vulpunt GOTO scantoets END IF vul% = 10: CALL wispunt CALL vertraag2 tra2% = 0: tijd = 0: vlag% = 0 LOCATE 1, 1: PRINT pri$ END IF IF par2% = 2 THEN '''worm2 bij worm1 aangekomen CALL gekoppeld2 par2% = 0: vlag% = 0 END IF CALL schuifop2 '''ringen opschuiven... alf2 = alf2 - dalf2 + RND * 2 * dalf2 '''... en 1 nieuwe ring xxn% = xx%(leng2%) + ds2% * COS(alf2) yyn% = yy%(leng2%) + ds2% * SIN(alf2) CheckPlaats2: '''plaats nieuwe ring worm2 checken IF par2% <> 0 GOTO Checkrand2 '''koppelroutine = doorgaan CALL checkafst2 '''check gedoogafstand Checkrand2: IF xxn% > 639 - r2% THEN xxn% = 639 - r2% '''binnen scherm blijven... IF xxn% < r2% THEN xxn% = r2% IF yyn% > 479 - r2% THEN yyn% = 479 - r2% IF yyn% < 16 + r2% THEN yyn% = 16 + r2% xx%(leng2%) = xxn%: yy%(leng2%) = yyn% Teken2: '''nieuwe ring worm2 CIRCLE (xx%(leng2% - 1), yy%(leng2% - 1)), r2%, wrm2% CIRCLE (xx%(leng2%), yy%(leng2%)), r2%, whd2% PSET (xx%(leng2%), yy%(leng2%)), 12 scantoets: '''actieve toetsen scannen... a$ = INKEY$ IF vlag% = 2 GOTO verder '''verdeelpunt actief = doorgaan CALL scantoets verder: IF wacht% = 1 THEN CALL wachten '''wachtroutine wrm% = 3: wrm2% = 2 '''reset kleuren GOTO Beweeg '''nieuwe cyclus END SUB checkafst delx = -xn% + xx%(leng2%) dely = -yn% + yy%(leng2%) r = SQR(delx ^ 2 + dely ^ 2) IF r < r0% AND r > rp% THEN '''te 'dicht' bij worm2 IF pla% = 1 THEN PLAY "l24o6c" wrm% = 11 dx = dely * ds% / r dy = -delx * ds% / r xn% = x%(leng%) + dx - 1 + 2 * RND: yn% = y%(leng%) + dy - 1 + 2 * RND END IF IF r <= rp% THEN xn% = x%(leng%) - 1 + 2 * RND: yn% = y%(leng%) - 1 + 2 * RND END SUB SUB checkafst2 delxx = x%(leng%) - xxn% delyy = y%(leng%) - yyn% r = SQR(delxx ^ 2 + delyy ^ 2) IF r < r0% AND r > rp% THEN '''te 'dicht' bij worm1 IF pla% = 1 THEN PLAY "l24o5b-" wrm2% = 10 dxx = delyy * ds2% / r dyy = -delxx * ds2% / r xxn% = xx%(leng2%) + dxx - 1 + 2 * RND: yyn% = yy%(leng2%) + dyy - 1 + 2 * RND END IF IF r <= rp% THEN xxn% = xx%(leng2%) - 1 + 2 * RND: yyn% = yy%(leng2%) - 1 + 2 * RND END SUB SUB checkklok ' check computerklok en pas aan met wachtlus zo nodig totwacht = 10000: twacht = 50 t = TIMER: tel = 0 WHILE TIMER - t < 1: tel = tel + 1: WEND cpu = INT(tel / 500) '''500 = 386SX-25 IF cpu < 1 THEN cpu = 1 IF cpu >= 2 THEN wacht% = 1 'wachtroutine doen doorlopen... END SUB SUB checkpunt IF vlag% = 1 THEN CALL wispunt vlag% = 1 xf% = RND * 640: yf% = RND * 480 '''nieuw punt IF pla% = 1 THEN PLAY "l24o4a-" LOCATE 1, 1: COLOR 15: PRINT "WORMs ??? " CIRCLE (xf%, yf%), rp%, 15 END SUB SUB dikker delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN dik2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 11: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% dik% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB dikker2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN dik% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 10: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% dik2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB duidaan IF pri% = 1 THEN LOCATE 1, 35: PRINT " " EXIT SUB END IF t = TIMER - ttijd LOCATE 1, 1: PRINT punt$ LOCATE 1, 30: PRINT USING "#### min. "; INT(t / 60); COLOR 7: PRINT "Len Dik Rek:" LOCATE 1, 57: COLOR 11: PRINT USING "## ## ##"; leng%; r%; ds% LOCATE 1, 68: COLOR 10: PRINT USING "## ## ##"; leng2%; r2%; ds2% COLOR 7 END SUB SUB dunner delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN dun2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 7: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% dun% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB dunner2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN dun% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 7: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% dun2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB gekoppeld IF leng2% <= leng% THEN WHILE leng2% < leng% CALL wissen: CALL wissen2 FOR i% = 0 TO leng2% xx%(leng2% - i% + 1) = xx%(leng2% - i%) yy%(leng2% - i% + 1) = yy%(leng2% - i%) NEXT i% xx%(0) = x%(leng%): yy%(0) = y%(leng%) leng2% = leng2% + 1: leng% = leng% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE leng2% > leng% CALL wissen: CALL wissen2 x%(leng% + 1) = xx%(0): y%(leng% + 1) = yy%(0) FOR i% = 0 TO leng2% - 1 xx%(i%) = xx%(i% + 1): yy%(i%) = yy%(i% + 1) NEXT i% leng2% = leng2% - 1: leng% = leng% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF IF r2% <= r% THEN WHILE r2% < r% CALL wissen: CALL wissen2 r2% = r2% + 1: r% = r% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE r2% > r% CALL wissen: CALL wissen2 r2% = r2% - 1: r% = r% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF IF ds2% <= ds% THEN WHILE ds2% < ds% CALL wissen: CALL wissen2 ds2% = ds2% + 1: ds% = ds% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE ds2% > ds% CALL wissen: CALL wissen2 ds2% = ds2% - 1: ds% = ds% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF END SUB SUB gekoppeld2 IF leng% <= leng2% THEN WHILE leng% < leng2% CALL wissen: CALL wissen2 FOR i% = 0 TO leng% x%(leng% - i% + 1) = x%(leng% - i%) y%(leng% - i% + 1) = y%(leng% - i%) NEXT i% x%(0) = xx%(leng2%): y%(0) = yy%(leng2%) leng% = leng% + 1: leng2% = leng2% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE leng% > leng2% CALL wissen: CALL wissen2 xx%(leng2% + 1) = x%(0): yy%(leng2% + 1) = y%(0) FOR i% = 0 TO leng% - 1 x%(i%) = x%(i% + 1): y%(i%) = y%(i% + 1) NEXT i% leng% = leng% - 1: leng2% = leng2% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF IF r% <= r2% THEN WHILE r% < r2% CALL wissen: CALL wissen2 r% = r% + 1: r2% = r2% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE r% > r2% CALL wissen: CALL wissen2 r% = r% - 1: r2% = r2% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF IF ds% <= ds2% THEN WHILE ds% < ds2% CALL wissen: CALL wissen2 ds% = ds% + 1: ds2% = ds2% - 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND ELSE WHILE ds% > ds2% CALL wissen: CALL wissen2 ds% = ds% - 1: ds2% = ds2% + 1 CALL herteken: CALL herteken2 CALL duidaan: PLAY "l24o3efg" WEND END IF END SUB SUB herteken FOR i% = 1 TO leng% - 1 '''niet i=0 !!! CIRCLE (x%(i%), y%(i%)), r%, wrm% PSET (x%(i%), y%(i%)), whd% NEXT i% CIRCLE (x%(leng%), y%(leng%)), r%, whd% PSET (x%(leng%), y%(leng%)), whd% END SUB SUB herteken2 FOR i% = 1 TO leng2% - 1 '''niet i=0 !!! CIRCLE (xx%(i%), yy%(i%)), r2%, wrm2% PSET (xx%(i%), yy%(i%)), whd2% NEXT i% CIRCLE (xx%(leng2%), yy%(leng2%)), r2%, whd2% PSET (xx%(leng2%), yy%(leng2%)), whd2% END SUB SUB initworm FOR i% = 1 TO leng% '''initialisatie worm1 alf = alf - dalf + RND * 2 * dalf x%(i%) = x%(i% - 1) + ds% * COS(alf): y%(i%) = y%(i% - 1) + ds% * SIN(alf) NEXT i% FOR i% = 1 TO leng2% '''initialisatie worm2 alf2 = alf2 - dalf2 + RND * 2 * dalf2 xx%(i%) = xx%(i% - 1) + ds2% * COS(alf2): yy%(i%) = yy%(i% - 1) + ds2% * SIN(alf2) NEXT i% END SUB SUB intro CLS : a$ = "" PLAY "l21o4c+ga-cd" scherm1: COLOR 11: LOCATE 9, 1 PRINT " Welkom in WormWereld." PRINT : COLOR 7 PRINT " Twee Schermwormpjes, uw scherm is hun wereld, dartelen over uw" PRINT " monitor, op zoek naar vreten. Dat vinden ze bij eetpunten die" PRINT " op willekeurige ogenblikken her en der verschijnen. Wie eerst" PRINT " komt, eerst maalt. Het goede eten doet ze verlengen, verdikken," PRINT " of rekken; het slechte verkorten, verdunnen of krimpen." PRINT " Een enkele keer bekruipt er een de paringsdrift: hij gaat dan" PRINT " achter de ander aan in zijn strijdkleuren. Bij de paring worden" PRINT " genen uitgewisseld, en eigenschappen van lengte, dikte en rek " PRINT " eerlijk verdeeld, onder het zingen van het paringslied." PRINT " Op andere ogenblikken echter laten ze elkaar niet te dicht naderen," PRINT " zo ja, gaan ze gillen en praalkleuren zetten." PRINT " Zodra een eigenschap maximaal of nul wordt (of u ertoe beslist)," PRINT " houdt hun wereld op... Er wordt dan een statistiekje van de" PRINT " belangrijkste parameters weggeschreven in een file Worms.TXT" PRINT " en WormWereld kan opnieuw beginnen..." CALL titel CLS a$ = "" scherm2: COLOR 7: LOCATE 10, 1 PRINT " -> Selecteer worm1/worm2/eetpunt....... F5 / F6 / F7" PRINT " -> Verlengen/Verdikken/Rekken.......... F1 / F2 / F3" PRINT " -> Verkorten/Verdunnen/Krimpen......... F9 / F10/ F11" PRINT " -> Koppelen aan andere worm............ '0'" PRINT PRINT " -> eetpunten vergroten/verkleinen...... Pijltoetsen R/L" PRINT " -> eettijd langer/korter............... Pijltoetsen Op/Neer" PRINT " -> geluid Aan/Uit...................... '.'" PRINT " -> versnellen, vertragen............... '-', '+' " PRINT " -> CLS, en info On/Off................. SPATIE" PRINT " -> Omtrent WORMs....................... ESCAPE" PRINT " -> STOP................................ ENTER" CALL titel CLS : PRINT "WORMs " a$ = "" PLAY "l21o4c+ga-cd" END SUB SUB koppel delx = -x%(leng%) + xx%(0) dely = -y%(leng%) + yy%(0) rw = SQR(delx ^ 2 + dely ^ 2) IF rw > ds2% THEN xn% = ds2% * (delx / rw): yn% = ds2% * (dely / rw) x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% wrm% = whd% ELSE PLAY pla$ LOCATE 1, 1: COLOR wrm%: PRINT punt$ par% = 2: vlag% = 2: str = rp% 'tijd = TIMER END IF END SUB SUB koppel2 delxx = -xx%(leng2%) + x%(0) delyy = -yy%(leng2%) + y%(0) rrw = SQR(delxx ^ 2 + delyy ^ 2) IF rrw > ds% THEN xxn% = ds% * (delxx / rrw): yyn% = ds% * (delyy / rrw) xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% wrm2% = whd2% ELSE PLAY pla$ LOCATE 1, 1: COLOR wrm2%: PRINT punt$ par2% = 2: vlag2% = 2 'tijd = TIMER END IF END SUB SUB korter delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN kor2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 7: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% kor% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB korter2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN kor% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 7: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% kor2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB krimpunt str0 = rp% * (1 - (TIMER - tijd) / eett) CIRCLE (xf%, yf%), rp%, 15 WHILE str >= str0 AND str >= 1 CIRCLE (xf%, yf%), str, 0 '''pai% '''vul% str = str - 1 WEND END SUB SUB langer delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN lon2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 11: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% lon% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB langer2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN lon% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 10: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% lon2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB parms 'leng% = 17: leng2% = 8 '''2 wormpjes leng <= max% 'r% = 7: r2% = 13: rmax% = 20 '''wormringstralen 'ds% = 8: ds2% = 6: dsm% = 15 '''ringafstanden <= dsm% leng% = 20 - RND * 15: leng2% = 5 + RND * 15 '''2 wormpjes leng <= max% r% = 5 + RND * 10: r2% = 15 - RND * 10: rmax% = 20 '''wormringstralen ds% = 5 + RND * 5: ds2% = 10 - RND * 5: dsm% = 15 '''ringafstanden <= dsm% alf = 0: dalf = 1: alf2 = 0: dalf2 = 1 '''beweeglijkheidshoek r0% = 100 '''gedoogafstand vlag% = 0: rp% = 20 '''actief punt ; puntstraal vlar% = 0 '''verdun/verdik = +/-1 rndf1 = .95 '''1-puntactiveringsfrequentie rndf = .95 '''puntkeusdrempel rndk = .97 '''koppeldrempel eett = 2 '''duur puntbezoek wrm% = 3: whd% = 13: wrm2% = 2: whd2% = 12 '''kleuren twacht = 1: wacht% = 0 '''wachtroutine 'pla% = 1 '''geluidvlag pi = ATN(1) * 4 x0% = 440: y0% = 240 '''startpunt wormen x%(0) = x0%: y%(0) = y0% xx0% = 200: yy0% = 240 xx%(0) = xx0%: yy%(0) = yy0% END SUB SUB rapper delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN rap2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 11: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% rap% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB rapper2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN rap% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 10: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% rap2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB saven SLEEP 5 voed = nlon% + nkor% + ndik% + ndun% + nrap% + ntra% OPEN "WORMS.txt" FOR APPEND AS #1 t = INT(t / 60) PRINT #1, DATE$ + ","; TIME$ + ","; PRINT #1, USING "### ###### "; t; voed; '''aantal minuten en voedingen PRINT #1, USING "## ## ## "; leng%; r%; ds%; PRINT #1, USING "## ## ## "; leng2%; r2%; ds2%; PRINT #1, USING "## ## "; nko1%; nko2% CLOSE 1 SLEEP 5 IF a$ = CHR$(13) THEN END ELSE RUN END SUB SUB scantoets SELECT CASE a$ CASE CHR$(0) + "?" '''SELect worm 1 = F5 sel% = 1 punt$ = "WORMs 1... ": COLOR wrm% CALL duidaan CASE CHR$(0) + "@" '''SELect worm 2 = F6 sel% = 2 punt$ = "WORMs 2... ": COLOR wrm2% CALL duidaan CASE CHR$(0) + "A" '''SELect voedingspunt= F7 sel% = 3 punt$ = "WORMs eetpunt... " CALL duidaan CASE CHR$(0) + ";" '''verlengen = F1 IF sel% = 1 THEN '''worm 1 IF leng% < max% THEN CALL wissen leng% = leng% + 1 punt$ = "WORMs verlengen ": COLOR wrm% CALL duidaan x%(leng%) = x%(leng% - 1): y%(leng%) = y%(leng% - 1) CALL herteken END IF ELSEIF sel% = 2 THEN '''worm 2 IF leng2% < max% THEN CALL wissen2 leng2% = leng2% + 1 punt$ = "WORMs verlengen ": COLOR wrm2% CALL duidaan xx%(leng2%) = xx%(leng2% - 1): yy%(leng2%) = yy%(leng2% - 1) CALL herteken2 END IF ELSE '''voedingspunt punt$ = "WORMs verlengen " pla$ = "l21cp21g": cir% = 15: pai% = 12 CALL checkpunt dik% = 0: dik2% = 0: dun% = 0: dun2% = 0: kor% = 0: kor2% = 0 par% = 0: par2% = 0 'IF rf < rrf THEN lon% = 1: lon2% = 0 ELSE lon2% = 1: lon% = 0 lon% = 1: lon2% = 1 tijd = TIMER END IF CASE CHR$(0) + "<" '''verdikken = F2 IF sel% = 1 THEN '''worm 1 IF r% < rmax% THEN CALL wissen r% = r% + 1: vlar% = -1 punt$ = "WORMs verdikken ": COLOR wrm% CALL duidaan CALL herteken END IF ELSEIF sel% = 2 THEN '''worm 2 IF r2% < rmax% THEN CALL wissen2 r2% = r2% + 1: vlar2% = -1 punt$ = "WORMs verdikken ": COLOR wrm2% CALL duidaan CALL herteken2 END IF ELSE '''voedingspunt punt$ = "WORMs verdikken " pla$ = "l21fp21>c": cir% = 15: pai% = 14 CALL checkpunt lon% = 0: lon2% = 0: dun% = 0: dun2% = 0: kor% = 0: kor2% = 0 par% = 0: par2% = 0 'IF rf < rrf THEN dik% = 1: dik2% = 0 ELSE dik2% = 1: dik% = 0 dik% = 1: dik2% = 1 tijd = TIMER END IF CASE CHR$(0) + "=" '''rekken = F3 IF sel% = 1 THEN '''worm 1 IF ds% < dsm% THEN ds% = ds% + 1 LOCATE 1, 1: COLOR wrm% punt$ = "WORMs rekken ": CALL duidaan ELSEIF sel% = 2 THEN '''worm 2 IF ds2% < dsm% THEN ds2% = ds2% + 1 LOCATE 1, 1: COLOR wrm2% punt$ = "WORMs rekken ": CALL duidaan ELSE '''voedingspunt ********* punt$ = "WORMs rekken " pla$ = "l21g+p21a": cir% = 15: pai% = 3 CALL checkpunt dik% = 0: dik2% = 0: dun% = 0: dun2% = 0: kor% = 0: kor2% = 0 par% = 0: par2% = 0 'IF rf < rrf THEN lon% = 1: lon2% = 0 ELSE lon2% = 1: lon% = 0 rap% = 1: rap2% = 1 tijd = TIMER END IF CASE CHR$(0) + "C" '''verkorten = F9 IF sel% = 1 THEN '''worm 1 IF leng% > 1 THEN CALL wissen leng% = leng% - 1 punt$ = "WORMs verkorten ": COLOR wrm% CALL duidaan CALL herteken END IF ELSEIF sel% = 2 THEN '''worm 2 IF leng2% > 1 THEN CALL wissen2 leng2% = leng2% - 1 punt$ = "WORMs verkorten ": COLOR wrm2% CALL duidaan CALL herteken2 END IF ELSE '''verdeelpunt punt$ = "WORMs verkorten " pla$ = "l21cp21 1 THEN CALL wissen r% = r% - 1: vlar% = 1 punt$ = "WORMs verdunnen ": COLOR wrm% CALL duidaan CALL herteken END IF ELSEIF sel% = 2 THEN '''worm 2 IF r2% > 1 THEN CALL wissen2 r2% = r2% - 1: vlar2% = 1 punt$ = "WORMs verdunnen ": COLOR wrm2% CALL duidaan CALL herteken2 END IF ELSE '''voedingspunt punt$ = "WORMs verdunnen " pla$ = "l21fp21c": cir% = 15: pai% = 9 CALL checkpunt dik% = 0: dik2% = 0: lon% = 0: lon2% = 0: kor% = 0: kor2% = 0 par% = 0: par2% = 0 'IF rf < rrf THEN dun% = 1: dun2% = 0 ELSE dun2% = 1: dun% = 0 dun% = 1: dun2% = 1 tijd = TIMER END IF CASE CHR$(0) + "…" '''krimpen = F11 IF sel% = 1 THEN '''worm 1 IF ds% > 1 THEN ds% = ds% - 1 LOCATE 1, 1: COLOR wrm% punt$ = "WORMs krimpen ": CALL duidaan ELSEIF sel% = 2 THEN '''worm 2 IF ds2% > 1 THEN ds2% = ds2% - 1 LOCATE 1, 1: COLOR wrm2% punt$ = "WORMs krimpen ": CALL duidaan ELSE '''voedingspunt ********* punt$ = "WORMs krimpen " pla$ = "l21ep21d+": cir% = 15: pai% = 5 CALL checkpunt dik% = 0: dik2% = 0: dun% = 0: dun2% = 0: kor% = 0: kor2% = 0 par% = 0: par2% = 0 'IF rf < rrf THEN lon% = 1: lon2% = 0 ELSE lon2% = 1: lon% = 0 tra% = 1: tra2% = 1 tijd = TIMER END IF CASE "0" '''koppelen IF sel% = 1 THEN '''worm 1 aan worm 2 IF vlag% = 1 THEN CALL wispunt PLAY "l21o4c+ga-cd" punt$ = "WORMs koppelen ": COLOR whd% pla$ = "l24o3cdefg" CALL duidaan wrm2% = 10: par% = 1: vlag% = 1 dik% = 0: dik2% = 0: lon% = 0: lon2% = 0: kor% = 0: kor2% = 0: par2% = 0 ELSEIF sel% = 2 THEN '''worm 2 aan worm 1 IF vlag% = 1 THEN CALL wispunt PLAY "l21o4c+ga-cd" punt$ = "WORMs koppelen ": COLOR whd2% pla$ = "l24o3cdefg" CALL duidaan wrm% = 11: par2% = 1: vlag% = 1 dik% = 0: dik2% = 0: lon% = 0: lon2% = 0: kor% = 0: kor2% = 0: par% = 0 END IF CASE "" '''geen actie... Dan RND selectie: IF RND < rndf1 OR vlag% <> 0 THEN EXIT SUB '''Doorgaan geval% = INT(RND * 8) '''8 keuzes SELECT CASE geval% '''geneste SELECT CASE 0 '''IF RND > rndf THEN '''Verlengen punt$ = "WORMs verlengen " pla$ = "l21cp21g": cir% = 15: pai% = 12 CALL checkpunt lon% = 1: lon2% = 1: nlon% = nlon% + 1 EXIT SUB '''END IF CASE 1 '''IF RND > rndf THEN '''Verkorten punt$ = "WORMs verkorten " pla$ = "l21cp21 rndf THEN '''Verdikken punt$ = "WORMs verdikken " pla$ = "l21fp21>c": cir% = 15: pai% = 14 CALL checkpunt dik% = 1: dik2% = 1: ndik% = ndik% + 1 EXIT SUB '''END IF CASE 3 '''IF RND > rndf THEN '''Verdunnen punt$ = "WORMs verdunnen " pla$ = "l21fp21c": cir% = 15: pai% = 9 CALL checkpunt dun% = 1: dun2% = 1: ndun% = ndun% + 1 EXIT SUB '''END IF CASE 4 '''IF RND > rndf THEN '''Versnellen punt$ = "WORMs rekken " pla$ = "l21g+p21a": cir% = 15: pai% = 3 CALL checkpunt rap% = 1: rap2% = 1: nrap% = nrap% + 1 EXIT SUB '''END IF CASE 5 '''IF RND > rndf THEN '''Vertragen punt$ = "WORMs krimpen " pla$ = "l21ep21d+": cir% = 15: pai% = 5 CALL checkpunt tra% = 1: tra2% = 1: ntra% = ntra% + 1 EXIT SUB '''END IF CASE 6 '''IF RND > rndk AND RND < 1 - rndk THEN '''koppel worm1 aan worm2 IF RND > rndk THEN PLAY "l21o4c+ga-cd" punt$ = "WORMs koppelen ": COLOR whd% pla$ = "l24o3cdefg" CALL duidaan wrm2% = 10 par% = 1: vlag% = 1: nko1% = nko1% + 1 END IF CASE 7 '''IF RND > rndk AND RND < 1 - rndk THEN '''koppel worm2 aan worm1 IF RND < 1 - rndk THEN PLAY "l21o4c+ga-cd" punt$ = "WORMs koppelen ": COLOR whd2% pla$ = "l24o3cdefg" CALL duidaan wrm% = 11 par2% = 1: vlag% = 1: nko2% = nko2% + 1 END IF END SELECT '''sluit geneste SELECT CASE CHR$(13): '''STOP = ENTER PLAY "l21o4c+ga-cd" pri% = 0: punt$ = "WORMs ": CALL duidaan CALL saven CASE " " '''CLS en info ON/OFF IF pri% = 0 THEN pri% = 1 ELSE pri% = 0 CLS CALL duidaan CASE "+" '''wachtroutine IF twacht < totwacht THEN twacht = twacht * 2 wacht% = 1 LOCATE 1, 1: PRINT USING "WORMs trager #######"; twacht CASE "-" '''wachtroutine IF twacht > 1 THEN twacht = twacht * .5 wacht% = 1 IF twacht <= 1 THEN twacht = 1: wacht% = 0 LOCATE 1, 1: PRINT USING "WORMs sneller #######"; twacht CASE "." '''sound ON/OFF IF pla% = 0 THEN pla% = 1 LOCATE 1, 1: PRINT "WORMs geluid aan " ELSE pla% = 0 LOCATE 1, 1: PRINT "WORMs geluid af " END IF CASE CHR$(0) + "M" '''eetpunt vergroten = -> IF rp% < 40 THEN rp% = rp% + 1 LOCATE 1, 1: PRINT USING "WORMs eetpunten R## "; rp% CASE CHR$(0) + "K" '''eetpunt verkleinen = <- IF rp% > 10 THEN rp% = rp% - 1 LOCATE 1, 1: PRINT USING "WORMs eetpunten R## "; rp% CASE CHR$(0) + "H" '''eettijd verlengen = UP IF eett < 10 THEN eett = eett + 1 LOCATE 1, 1: PRINT USING "WORMs eettijd ##s "; eett CASE CHR$(0) + "P" '''eettijd verkorten = DOWN IF eett > 1 THEN eett = eett - 1 LOCATE 1, 1: PRINT USING "WORMs eettijd ##s "; eett CASE CHR$(27) CALL intro END SELECT END SUB SUB schuifop FOR i% = 0 TO leng% - 1 x%(i%) = x%(i% + 1): y%(i%) = y%(i% + 1) NEXT i% END SUB SUB schuifop2 FOR i% = 0 TO leng2% - 1 xx%(i%) = xx%(i% + 1): yy%(i%) = yy%(i% + 1) NEXT i% END SUB SUB titel COLOR 13: LOCATE 2, 1 PRINT " WORMSwormsWORMSwormsWORMSwormsWORMSworms" PRINT COLOR 11: PRINT " שששששששששש" COLOR 10: PRINT " רררררררררר" COLOR 11: PRINT " oooooooooo" COLOR 10: PRINT " 0000000000" COLOR 14: LOCATE 28, 50: PRINT "Credits: guido wuyts 1995" col = 11 '''wacht op toets tw = TIMER WHILE a$ = "" AND TIMER - tw < 20 COLOR col: LOCATE 28, 5: PRINT USING "-> Druk een toets...... ## s"; 20 - TIMER + tw tijd = TIMER WHILE TIMER - tijd < .5: WEND '''knipperlus a$ = INKEY$ IF col = 11 THEN col = 5 ELSE col = 11 WEND IF a$ <> "" THEN pla% = 1: pri% = 0: CALL duidaan ELSE pla% = 0: pri% = 1 END IF END SUB SUB trager delx = -x%(leng%) + xf% dely = -y%(leng%) + yf% rf = SQR(delx ^ 2 + dely ^ 2) IF rf < r0% THEN tra2% = 0: pla$ = "o3" + pla$ IF rf > rp% + r% + ds% THEN xn% = ds% * (xf% - x%(leng%)) / rf yn% = ds% * (yf% - y%(leng%)) / rf x%(leng%) = x%(leng%) + xn%: y%(leng%) = y%(leng%) + yn% ELSE wrm% = 7: CALL herteken IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% tra% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB trager2 delxx = xf% - xx%(leng2%) delyy = yf% - yy%(leng2%) rrf = SQR(delxx ^ 2 + delyy ^ 2) IF rrf < r0% THEN tra% = 0: pla$ = "o2" + pla$ IF rrf > rp% + r2% + ds2% THEN xxn% = ds2% * (xf% - xx%(leng2%)) / rrf yyn% = ds2% * (yf% - yy%(leng2%)) / rrf xx%(leng2%) = xx%(leng2%) + xxn%: yy%(leng2%) = yy%(leng2%) + yyn% ELSE wrm2% = 7: CALL herteken2 IF pla% = 1 THEN PLAY pla$ LOCATE 1, 1: COLOR pai%: PRINT punt$ CIRCLE (xf%, yf%), rp%, cir% PAINT (xf%, yf%), pai%, cir% tra2% = 2: vlag% = 2: str = rp% tijd = TIMER END IF END SUB SUB verdik IF r% < rmax% THEN '''verdik... CALL wissen r% = r% + 1 CALL duidaan CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 verzadigd: dikte "; rmax% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verdik2 IF r2% < rmax% THEN '''verdik... CALL wissen2 r2% = r2% + 1 CALL duidaan CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 verzadigd: dikte "; rmax% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verdun IF r% > 1 THEN '''verdun... CALL wissen r% = r% - 1 CALL duidaan CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 uitgeput: dikte 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verdun2 IF r2% > 1 THEN '''verdun... CALL wissen2 r2% = r2% - 1 CALL duidaan CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 uitgeput: dikte 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verkort IF leng% > 1 THEN '''verkort... CALL wissen leng% = leng% - 1 CALL duidaan CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 uitgeput: lengte 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verkort2 IF leng2% > 1 THEN '''verkort... CALL wissen2 leng2% = leng2% - 1 CALL duidaan CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 uitgeput: lengte 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verleng IF leng% < max% THEN '''verleng... leng% = leng% + 1 CALL duidaan x%(leng%) = x%(leng% - 1): y%(leng%) = y%(leng% - 1) CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 verzadigd: lengte "; max% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB verleng2 IF leng2% < max% THEN '''verleng... leng2% = leng2% + 1 CALL duidaan xx%(leng2%) = xx%(leng2% - 1): yy%(leng2%) = yy%(leng2% - 1) CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 verzadigd: lengte "; max% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB versnel IF ds% < dsm% THEN '''versnel... CALL wissen ds% = ds% + 1 CALL duidaan CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 verzadigd: rek "; dsm% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB versnel2 IF ds2% < dsm% THEN '''versnel... ds2% = ds2% + 1 CALL duidaan CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 verzadigd: rek "; dsm% PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB vertraag IF ds% > 1 THEN '''vertraag... CALL wissen ds% = ds% - 1 CALL duidaan CALL herteken ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm%: PRINT "worm 1 uitgeput: rek 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB vertraag2 IF ds2% > 1 THEN '''vertraag... CALL wissen2 ds2% = ds2% - 1 CALL duidaan CALL herteken2 ELSE pri% = 0: CALL duidaan LOCATE 1, 1: COLOR wrm2%: PRINT "worm 2 uitgeput: rek 0" PLAY "l21o4c+ga-cd" CALL saven END IF END SUB SUB vulpunt str0 = rp% * (1 - (TIMER - tijd) / eett) WHILE str > str0 CIRCLE (xf%, yf%), rp% - str, 0 '''pai%'''vul% str = str - 1 WEND END SUB SUB wachten FOR dum1 = 1 TO cpu FOR dum = 1 TO twacht: NEXT dum NEXT dum1 END SUB SUB wispunt rw = rp% * 1.15 CIRCLE (xf%, yf%), rp%, 0 CIRCLE (xf%, yf%), rw, 8'''vul% PAINT (xf%, yf%), 0, 8 ''''vul% CIRCLE (xf%, yf%), rw, 0 END SUB SUB wissen FOR i% = 0 TO leng% CIRCLE (x%(i%), y%(i%)), r%, 0 PSET (x%(i%), y%(i%)), 0 NEXT i% END SUB SUB wissen2 FOR i% = 0 TO leng2% CIRCLE (xx%(i%), yy%(i%)), r2%, 0 PSET (xx%(i%), yy%(i%)), 0 NEXT i% END SUB