'=========================================================================== ' Subject: BOMBER BOY Date: 08-22-99 (16:42) ' Author: Ruud Wijtvliet Code: QB, QBasic, PDS ' Origin: wijtvliet.c@wxs.nl Packet: GAMES.ABC '=========================================================================== 'finished 06-08-1999 ' '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ' B O M B E R B O Y '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ' Hier is dan mijn eerste spelletje geschreven in Q(uick)Basic. Het is een ' bomberman spelletje, waarbij je items kunt verzamelen en moet proberen ' je tegenstander te doden. ' ' De toetsen zijn als volgt: ' Speler 1 (links) ³ Speler 2 (rechts) ' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ' = bommen leggen ³ = Bommen leggen ' sturen met w,a,d,x ³ sturen met 8,4,6,2 ' ³ ' ' NB: Zet NUM LOCK en CAPS LOCK beide AF tijdens het spelen van het spel! ' ' PS: Ik weet dat er nog wel wat bugs in het spel zitten, ik probeer ze eruit ' te halen maar ik weet niet of dat gaat lukken ' 'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ' 'Bij een DRAW-opdracht altijd "br6 bd15" erbij zetten (reden: de DRAW opdracht kijkt niet naar de VIEWPORT, maar naar de schermco”rdinaten) 'VIEWPORT (0, 0)-(288, 26) voor infobalk 'VIEWPORT (0, 26)-(288, 179) voor speelveld ' 'Kleuren: ' 0 - 31 = zwart Ä> wit ' 32 - 63 = zwart Ä> levelkleur ' 64 - 66 = kleuren die nodig zijn voor de puinblokken v.e. bep. level. (64 = basis/achterkleur v.d. puinblokken) ' 70 - 79 = kleuren pl 1 ' 80 - 89 = kleuren pl 2 '191 = redelijk fel blauw '192 - 223 = rood Ä> groen '224 - 255 = geel Ä> rood ' 'Vakje (xx%, yy%) = ... Bij vakje is puinblok (2) of item (3), ... ' ÃÄ 0 = looppad ÃÄ .0 = leeg puinblok ' ÃÄ 1 = vast blok ÃÄ .1 = extra bom ' ÃÄ 2 = puinblok ÃÄ .2 = extra straal ' ÃÄ 3 = item ÃÄ .3 = leven erbij (verbanddoos) ' ÃÄ 4 = bom ÃÄ .5 = 10 punten erbij (munt) ' ÃÄ ... ÃÄ .6 = 26 punten erbij (staf) ' ÃÄ 11 = Speler 1 ÃÄ .7 = 42 punten erbij (kroon) ' ÃÄ 11.5 = Speler 1 + bom ... ' ÃÄ 12 = Speler 2 ' ÀÄ 12.5 = Speler 2 + bom ' 'bom(a, b) 'a = speler (1/2), b = nr. v/d bom (1 t/m aantal bommen dat die speler heeft) 'bom.aan '0 = bom is uit, 1 = bom staat aan (is gelegd, staat op scherp) 'bom.x 'ÄÄÂÄÄ (x,y) v/d bom 'bom.y 'ÄÄÙ 'bom.tijd 'Tijd dat de bom werd gelegd (op "1" werd gezet) 'bom.patr 'Patroon v/d bom: 1 of 2 (ivm trillen v/d bom in sub "BomBeweeg") DECLARE FUNCTION Zx% (i%) DECLARE FUNCTION Zy% (i%) DECLARE SUB Begininstellingen () DECLARE SUB level1 () DECLARE SUB level2 () DECLARE SUB level3 () DECLARE SUB level4 () DECLARE SUB level5 () DECLARE SUB Bouwlevel (aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) DECLARE SUB TekenLevel () DECLARE SUB Tekenen (pl%, Speler.Richting()) DECLARE SUB BomLeggen (pl%, Speler.Richting()) DECLARE SUB BomBeweeg (pl%, bom%, patroon%) DECLARE SUB BomExplode (nr%, nrh%) DECLARE SUB Item (xh%(), yh%(), ite%) DECLARE SUB LevenChange (pl%, change%) DECLARE SUB GameOver (pl%) COMMON SHARED x%(), y%(), leven%(), Speler.Punten() COMMON SHARED Speler.Gewonnen(), Speler.Aantbommen(), Speler.Aantstraal() COMMON SHARED vakje(), bom.aan(), bom.x(), bom.y(), bom.Tijd(), puin$ COMMON SHARED s1%(), s2%(), s3%(), s4%(), xbom%(), ybom%(), nr%, nrh%, xh%(), yh%(), raak1%(), raak2%(), raak3%(), raak4%() '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - level% = 1 DIM leven%(2) leven%(1) = 100 leven%(2) = 100 DIM x%(2), y%(2) x%(1) = 1: y%(1) = 1 x%(2) = 17: y%(2) = 9 DIM vakje(17, 9) vakje(x%(1), y%(1)) = 11 vakje(x%(2), y%(2)) = 12 TYPE bom aan AS INTEGER x AS INTEGER y AS INTEGER Tijd AS SINGLE patr AS INTEGER END TYPE 'Bom(speler, nr. v/d bom) DIM bom.aan(2, 20) DIM bom.x(2, 20) DIM bom.y(2, 20) DIM bom.Tijd(2, 20) DIM bom.patr(2, 20) DIM s1%(20) DIM s2%(20) DIM s3%(20) DIM s4%(20) DIM raak1%(20) DIM raak2%(20) DIM raak3%(20) DIM raak4%(20) DIM xbom%(20) DIM ybom%(20) DIM xh%(20) DIM yh%(20) TYPE Speler punten AS INTEGER gewonnen AS INTEGER aantbommen AS INTEGER aantstraal AS INTEGER Richting AS INTEGER END TYPE DIM Speler.Punten(2) DIM Speler.Gewonnen(2) DIM Speler.Aantbommen(2) DIM Speler.Aantstraal(2) DIM Speler.Richting(2) FOR i% = 1 TO 2 Speler.Punten(i%) = 0 Speler.Gewonnen(i%) = 0 Speler.Aantbommen(i%) = 1 Speler.Aantstraal(i%) = 1 Speler.Richting(i%) = 1 NEXT i% CALL Begininstellingen 'CALL level5 CALL TekenLevel FOR pl% = 1 TO 2: CALL Tekenen(pl%, Speler.Richting()): NEXT pl% ON KEY(21) GOSUB Pl1Omhoog: ON KEY(11) GOSUB Pl2Omhoog ON KEY(22) GOSUB Pl1Links: ON KEY(12) GOSUB Pl2Links ON KEY(23) GOSUB Pl1Rechts: ON KEY(13) GOSUB Pl2Rechts ON KEY(24) GOSUB Pl1Omlaag: ON KEY(14) GOSUB Pl2Omlaag ON KEY(25) GOSUB Pl1LegBom: ON KEY(15) GOSUB Pl2LegBom DO 'Bom exploderen als dat nodig is: FOR pl% = 1 TO 2 FOR bom% = 1 TO Speler.Aantbommen(pl%) IF bom.aan(pl%, bom%) = 1 AND TIMER - bom.Tijd(pl%, bom%) > 3 THEN nrh% = 0 nr% = 0 xbom%(1) = bom.x(pl%, bom%) ybom%(1) = bom.y(pl%, bom%) CALL BomExplode(nr%, nrh%) FOR ite% = 1 TO nrh% CALL Item(xh%(), yh%(), ite%) NEXT ite% FOR i% = 1 TO nr% IF xbom%(i%) <= 17 AND xbom%(i%) >= 1 AND ybom%(i%) <= 9 AND ybom%(i%) >= 1 AND vakje(xbom%(i%), ybom%(i%)) = 4.5 THEN vakje(xbom%(i%), ybom%(i%)) = 0 NEXT i% END IF NEXT bom% NEXT pl% 'Bom trillen als dat nodig is: FOR pl% = 1 TO 2 FOR bom% = 1 TO Speler.Aantbommen(pl%) FOR i% = 0 TO 3 IF bom.aan(pl%, bom%) = 1 AND TIMER - bom.Tijd(pl%, bom%) - i% < 1.1 AND TIMER - bom.Tijd(pl%, bom%) - i% > .9 THEN IF bom.patr(pl%, bom%) = 1 THEN bom.patr(pl%, bom%) = 0 ELSE bom.patr(pl%, bom%) = 1 patroon% = bom.patr(pl%, bom%) CALL BomBeweeg(pl%, bom%, patroon%) END IF NEXT i% NEXT bom% NEXT pl% LOOP Pl1Omhoog: pl% = 1 Speler.Richting(pl%) = 1 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl1Links: pl% = 1 Speler.Richting(pl%) = 2 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl1Rechts: pl% = 1 Speler.Richting(pl%) = 3 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl1Omlaag: pl% = 1 Speler.Richting(pl%) = 4 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl1LegBom: pl% = 1 CALL BomLeggen(pl%, Speler.Richting()) RETURN '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pl2Omhoog: pl% = 2 Speler.Richting(pl%) = 1 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl2Links: pl% = 2 Speler.Richting(pl%) = 2 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl2Rechts: pl% = 2 Speler.Richting(pl%) = 3 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl2Omlaag: pl% = 2 Speler.Richting(pl%) = 4 CALL Tekenen(pl%, Speler.Richting()) RETURN Pl2LegBom: pl% = 2 CALL BomLeggen(pl%, Speler.Richting()) RETURN ' ' Zet de begininstellingen voor het programma klaar: ' - kleuren 0-31 en 224-255 instellen ' - uitvoerscherm tekenen ' - toetsen instellen en aanzetten ' ' SUB Begininstellingen SCREEN 13 RANDOMIZE TIMER 'kleuren 0-31 en 224-255 instellen: FOR i% = 0 TO 31 PALETTE i%, i% * 2 + i% * 2 * 256 + i% * 2 * 256 ^ 2 ' 0- 31 = zwart - wit PALETTE i% + 192, i% * 2 * 256 + 63 - i% * 2 '192-223 = rood - groen PALETTE i% + 224, (63 - i% * 2) * 256 + 63 '224-255 = geel - rood NEXT i% PALETTE 223, 50 * 256 PALETTE 191, 50 * 256 ^ 2 'in vloeiend geel -> rood, BOMBERBOY schrijven i$ = "BomberBoy": FOR i% = 1 TO 9: LOCATE 1, 15 + i%: COLOR i% * 3.4 + 224: PRINT MID$(i$, i%): NEXT i% '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'toetsen laten zien: LOCATE 4: COLOR 223: PRINT " Speler 1 " LOCATE 6: COLOR 31: PRINT " w " LOCATE 7: COLOR 31: PRINT " = leg bom  " LOCATE 8: COLOR 31: PRINT " a "; CHR$(26); "d " LOCATE 9: COLOR 31: PRINT "  " LOCATE 10: COLOR 31: PRINT " x " LOCATE 12: COLOR 31: PRINT " Kies een kleur met de spatiebalk," LOCATE 13: COLOR 31: PRINT " en bevestig met escape." r% = 1: g% = 1: B% = 1: pl% = 1 LINE (30, 123)-STEP(6, 4), 26, BF LINE (60, 123)-STEP(7, 4), 26, BF LINE (90, 123)-STEP(7, 4), 26, BF DO K$ = INKEY$ IF K$ = CHR$(32) THEN IF r% = 1 AND g% = 1 AND B% = 1 THEN r% = 1: g% = 0: B% = 0: aan% = 0 IF r% = 0 AND g% = 1 AND B% = 1 THEN r% = 1: g% = 1: B% = 1 IF r% = 1 AND g% = 0 AND B% = 1 THEN r% = 0: g% = 1: B% = 1 IF r% = 1 AND g% = 1 AND B% = 0 THEN r% = 1: g% = 0: B% = 1 IF r% = 0 AND g% = 0 AND B% = 1 THEN r% = 1: g% = 1: B% = 0 IF r% = 0 AND g% = 1 AND B% = 0 THEN r% = 0: g% = 0: B% = 1 IF r% = 1 AND g% = 0 AND B% = 0 AND aan% = 1 THEN r% = 0: g% = 1: B% = 0 IF aan% = 1 THEN aan% = 0 ELSE aan% = 1 END IF FOR i% = 0 TO 9 PALETTE 70 + i%, r% * (63 - i% * 7) + g% * (63 - i% * 7) * 256 + B% * (63 - i% * 7) * 256 ^ 2 NEXT i% IF K$ = CHR$(27) THEN EXIT DO DRAW "bm30,120 c" + STR$(70) + "r6f1l8g1r10d4g2l6h2u3r1d3f1br6e1u3d1bl3 c0l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l1r2f2d1u1h1l4g1br2r2d3r1bl3u2r2e2 c" + STR$(pl% * 10 + 63) + "g1bd2d0bd1bl4u0" DRAW "bm60,120 c" + STR$(70) + "r6f1l8g1r10d4g2l6e1l2h1u3r2g1d2l1u2 c0br5r2bd2l2be1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l2g2d1u1e1r5e1g1l2d4r1bl3l1u1e1u1r1d1l1d1 c" + STR$(pl% * 10 + 63) + "d0br3d0" DRAW "bm90,120br7 c" + STR$(70) + "l6g1r8f1l10d4f2r6h1r2e1u3l2f1d2r1u2 c0bl5l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5r2f2d1u1h1l5h1f1r2d4l1br3r1u1h1u1l1d1r1d1 c" + STR$(pl% * 10 + 63) + "d0bl3d0" DRAW "bm120,120 c" + STR$(78) + "r6f2d4g2l6h2u4e2r5f3d2g3l4h3u2e2r1 c" + STR$(76) + "r4f2d2g2l4h2u2e1r1 c" + STR$(73) + "r4f1d2g1l4h1u2r1 c" + STR$(70) + "r4d1l4d1r4 bd4bl1l2g2d1u1e1r4f1bl2l2d3l1br3u2l1" LOOP '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 'toetsen laten zien: LOCATE 4: COLOR 223: PRINT " Speler 2 " LOCATE 6: COLOR 31: PRINT " 8 " LOCATE 7: COLOR 31: PRINT " = leg bom  " LOCATE 8: COLOR 31: PRINT " 4 "; CHR$(26); "6 " LOCATE 9: COLOR 31: PRINT "  " LOCATE 10: COLOR 31: PRINT " 2 " LOCATE 12: COLOR 31: PRINT " Kies een kleur met de spatiebalk," LOCATE 13: COLOR 31: PRINT " en bevestig met escape." r% = 1: g% = 1: B% = 1: pl% = 2 LINE (30, 123)-STEP(6, 4), 26, BF LINE (60, 123)-STEP(7, 4), 26, BF LINE (90, 123)-STEP(7, 4), 26, BF DO K$ = INKEY$ IF K$ = CHR$(32) THEN IF r% = 1 AND g% = 1 AND B% = 1 THEN r% = 1: g% = 0: B% = 0: aan% = 0 IF r% = 0 AND g% = 1 AND B% = 1 THEN r% = 1: g% = 1: B% = 1 IF r% = 1 AND g% = 0 AND B% = 1 THEN r% = 0: g% = 1: B% = 1 IF r% = 1 AND g% = 1 AND B% = 0 THEN r% = 1: g% = 0: B% = 1 IF r% = 0 AND g% = 0 AND B% = 1 THEN r% = 1: g% = 1: B% = 0 IF r% = 0 AND g% = 1 AND B% = 0 THEN r% = 0: g% = 0: B% = 1 IF r% = 1 AND g% = 0 AND B% = 0 AND aan% = 1 THEN r% = 0: g% = 1: B% = 0 IF aan% = 1 THEN aan% = 0 ELSE aan% = 1 END IF FOR i% = 0 TO 9 PALETTE 80 + i%, r% * (63 - i% * 7) + g% * (63 - i% * 7) * 256 + B% * (63 - i% * 7) * 256 ^ 2 NEXT i% IF K$ = CHR$(27) THEN EXIT DO DRAW "bm30,120 c" + STR$(80) + "r6f1l8g1r10d4g2l6h2u3r1d3f1br6e1u3d1bl3 c0l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l1r2f2d1u1h1l4g1br2r2d3r1bl3u2r2e2 c" + STR$(pl% * 10 + 63) + "g1bd2d0bd1bl4u0" DRAW "bm60,120 c" + STR$(80) + "r6f1l8g1r10d4g2l6e1l2h1u3r2g1d2l1u2 c0br5r2bd2l2be1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l2g2d1u1e1r5e1g1l2d4r1bl3l1u1e1u1r1d1l1d1 c" + STR$(pl% * 10 + 63) + "d0br3d0" DRAW "bm90,120br7 c" + STR$(80) + "l6g1r8f1l10d4f2r6h1r2e1u3l2f1d2r1u2 c0bl5l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5r2f2d1u1h1l5h1f1r2d4l1br3r1u1h1u1l1d1r1d1 c" + STR$(pl% * 10 + 63) + "d0bl3d0" DRAW "bm120,120 c" + STR$(88) + "r6f2d4g2l6h2u4e2r5f3d2g3l4h3u2e2r1 c" + STR$(86) + "r4f2d2g2l4h2u2e1r1 c" + STR$(83) + "r4f1d2g1l4h1u2r1 c" + STR$(80) + "r4d1l4d1r4 bd4bl1l2g2d1u1e1r4f1bl2l2d3l1br3u2l1" LOOP '-------------------------------------------------------------------------------------- Level01$ = " Level 1 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ" Level02$ = " Level 2 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü ÛÛ Ü Ü Ü Ü Ü Ü Ü Ü ÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ" Level03$ = " Level 3 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ Û Û ÛÛ Ûßß ßßß Û Ü ÛÛ ß Ü Ûß ßß Û ÛÛ Û ßßß Ûßß ÛÛÜÜÜÜÜÛÜÜÜÜÜÜÜÛÜÜÜÛ" Level04$ = " Level 4 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ Û Ü ÛÛ ÜÜÛÛÛÜÜ ßßßÛÛ ßßßÛÛÛÜÛÛÛßßß ÛÛßßß ßÛß Ü ÛÛÜÜÜÜÜÜÜÜÜÜÜÛÜÜÜÜÜÛ" Level05$ = " Level 5 ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ ÜÛÜ Ü Û ÜÜ ß Ü ÛÛ Ü Û Ü ÜÜ Ûßßß Ü ÛÛ ÛÜÜÜÛÜÛÜÜÛ ß ÛÜÛÛ Ü ÜÜ ÛÜÜÜÜ ÛÜ ÛÛÜÛÜÜÛÜÜÜÜÜÜÜÜÜÛÜÜÛ" level$ = Level01$: aan% = 0: level% = 1 FOR i% = 2 TO 20: LOCATE i%: PRINT SPACE$(40): NEXT i% LOCATE 4: COLOR 223: PRINT " De levels " LOCATE 16: COLOR 31: PRINT " Kies een level met de spatiebalk," LOCATE 17: COLOR 31: PRINT " en bevestig met escape." DO K$ = INKEY$ IF K$ = CHR$(32) THEN IF level$ = Level04$ THEN level$ = Level05$: aan% = 1: level% = 5 IF level$ = Level03$ THEN level$ = Level04$: level% = 4 IF level$ = Level02$ THEN level$ = Level03$: level% = 3 IF level$ = Level01$ THEN level$ = Level02$: level% = 2 IF level$ = Level05$ AND aan% = 0 THEN level$ = Level01$: level% = 1 IF aan% = 0 THEN aan% = 1 ELSE aan% = 0 END IF FOR yy% = 1 TO 7 i$ = MID$(level$, yy% * 19 - 18, 19) LOCATE yy% + 6, 11: PRINT i$ NEXT yy% IF K$ = CHR$(27) THEN EXIT DO LOOP IF level% = 1 THEN CALL level1 IF level% = 2 THEN CALL level2 IF level% = 3 THEN CALL level3 IF level% = 4 THEN CALL level4 IF level% = 5 THEN CALL level5 '. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FOR i% = 2 TO 20: LOCATE i%: PRINT SPACE$(40): NEXT i% LOCATE 4: COLOR 223: PRINT " De items: " LOCATE 6: COLOR 31: PRINT " extra bom + 5 punten ": PRINT PRINT " langere explosie + 5 punten": PRINT PRINT " 25 leven + 15 punten ": PRINT PRINT " 10 punten ": PRINT PRINT " 26 punten ": PRINT PRINT " 42 punten " xx% = 50: yy% = 36: LINE (xx% + 1, yy% + 1)-STEP(14, 14), 20, BF DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br8 bd7 c0 bd6 bl2 r4 e1 l6 h1 r8 e1 l10 u1 r10 u1 l10 u1 r10 u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1 bd8br2 d2u1l1r2 br2 u1d2" xx% = 50: yy% = 52 FOR i% = 0 TO 14: LINE (xx% + 1, yy% + 1 + i%)-(xx% + 15 - i%, yy% + 15), 224 + i% * 2.2: LINE (xx% + 1 + i%, yy% + 1)-(xx% + 15, yy% + 15 - i%), 224 + i% * 2: NEXT i% DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br8 bd7 c0 bd4 br3 d2 u1 l1 r2 br2 d1 u2" xx% = 50: yy% = 67: LINE (xx% + 4, yy% + 4)-STEP(8, 8), 31, BF DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br11bd9c255 u2l1d2l1u4d6l1u6l1d6u2l1u2l1d2" DRAW "bm60,87 c31l3g3d3 c15f1u4e1d6f1u8r1d7r1u7r1d7r1u8f1d6e1u4f1d1 c0d2g3l3bl1bu3u3g1br3d1f1r1e1u1h1l1" DRAW "bm58,102c224f6u1h5br5g10d1e10u1 c235l1g1l1bl3f2bf2f1bh3g7 c191br1be1e0be2e0be2e0be2e0be2e0bd4h0bh4h0" DRAW "bm57,119c224r2d1r2u1r2f2d3l1g1e1h1u1h2l2g2d1g1l1u3e1br4d5bl3g1c235d1r8u1d1g1c240l6u1h2c230r1f1r6e1r1bg2c223l0bl2l0bl2l0bl2l0bu9br2r2h1d2bf4c255g2u2g1d1bl2u1h1d2h2" SLEEP '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - VIEW (6, 15)-(294, 194), 0, 31 'viewport tekenen LINE (0, 26)-(289, 26), 31 'scheidingslijn speelveld/infobalk tekenen LINE (144, 0)-(144, 26), 31 'scheidingslijn info player1/player2 LINE (-1, -1)-(101, 6), 31, B 'damagebalk player 1 tekenen LINE (144, -1)-(246, 6), 31, B 'damagebalk player 2 tekenen FOR i% = 0 TO 99 LINE (i%, 0)-(i%, 5), i% / 3.3 + 192 LINE (i% + 145, 0)-(i% + 145, 5), i% / 3.3 + 192 NEXT i% LINE (-1, 6)-STEP(10, 10), 31, B '2 vierkantjes tekenen LINE (-1, 16)-STEP(10, 10), 31, B 'onder de damagebalk van player 1 LINE (144, 6)-STEP(10, 10), 31, B '2 vierkantjes tekenen LINE (144, 16)-STEP(10, 10), 31, B 'onder de damagebalk van player 2 PAINT (0, 7), 18, 31: PAINT (146, 7), 18, 31 DRAW "bm9,30 c0 r2 e1 l4 h1 r6 u1 l6 u1 r6 h1 l4 e1 r2 bl1 c224 d1 u1 h1" 'u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" DRAW "bm154,30 c0 r2 e1 l4 h1 r6 u1 l6 u1 r6 h1 l4 e1 r2 bl1 c224 d1 u1 h1" 'u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" FOR i% = 0 TO 8 LINE (0, 17 + i%)-(8 - i%, 25), 224 + i% * 3.8 LINE (0 + i%, 17)-(8, 25 - i%), 224 + i% * 3.8 LINE (145, 17 + i%)-(153 - i%, 25), 224 + i% * 3.8 LINE (145 + i%, 17)-(153, 25 - i%), 224 + i% * 3.8 NEXT i% '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Player 2: 'pijltjes (11 t/m 14) voor bewegen KEY 15, CHR$(0) + CHR$(28) 'key 15 = KEY 16, CHR$(0) + CHR$(54) 'key 16 = 'Player 1: 'Bewegen = KEY 21, CHR$(0) + CHR$(17) 'key 21 = w KEY 22, CHR$(0) + CHR$(30) 'key 22 = a KEY 23, CHR$(0) + CHR$(32) 'key 23 = d KEY 24, CHR$(0) + CHR$(45) 'key 24 = x KEY 25, CHR$(0) + CHR$(15) 'key 25 = FOR i% = 11 TO 16: KEY(i%) ON: NEXT i% FOR i% = 21 TO 25: KEY(i%) ON: NEXT i% '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - END SUB ' ' De bom laten trillen zodat het lijkt of deze letterlijk op springen staat ' ' SUB BomBeweeg (pl%, bom%, patroon%) xx% = bom.x(pl%, bom%): xx% = Zx%(xx%) yy% = bom.y(pl%, bom%): yy% = Zy%(yy%) LINE (xx%, yy%)-STEP(16, 16), 43, BF IF patroon% = 1 THEN DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br7 bd14 c0 br5 bd15 r4 e1 l6 h1 r8 e1 l10 u1 r10 u1 l10 u1 r10 u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" ELSE DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br7 bd14 c0 br5 bd15 r4 e1 l6 h1 r8 e1 l10 h1 r12 u1 l12 u1 r12 u1 l12 u1 r12 h1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2 g1 l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" END IF END SUB ' ' Het tekenen van de exploderende bom, plus: ' - alle variabelen voor die bom weer op 0 zetten ' - andere bommen in het 'explosiepad' van de bom ook laten onploffen ' ' SUB BomExplode (nr%, nrh%) SHARED xh%(), yh%() 'nr% = het nr v/d explosie 'nrh% = het nr v/h item (hoeveel puinblokken er al zijn vernield) nr% = nr% + 1 xbom% = xbom%(nr%) ' ÄÂÄÄ xbom%(nr%) & ybom%(nr%) zijn al voor het ybom% = ybom%(nr%) ' ÄÙ betreden van deze sub vastgesteld. FOR i% = 1 TO 2 FOR j% = 1 TO Speler.Aantbommen(i%) IF bom.x(i%, j%) = xbom% AND bom.y(i%, j%) = ybom% THEN straal% = Speler.Aantstraal(i%) NEXT j% NEXT i% IF xbom% < 1 OR xbom% > 17 OR ybom% < 1 OR ybom% > 9 THEN EXIT SUB vakje(xbom%, ybom%) = 4.5 'bom die met ontploffen bezig is... xx% = Zx%(xbom%) yy% = Zy%(ybom%) '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'De explosie naar de andere kanten bekijken, en kijken wat er geraakt wordt: FOR s1% = 1 TO straal% IF ybom% - s1% < 1 THEN s1% = s1% - 1: GOTO Vol1 IF vakje(xbom%, ybom% - s1%) = 1 THEN raak1% = 1: s1% = s1% - 1: GOTO Vol1 IF vakje(xbom%, ybom% - s1%) >= 2 AND vakje(xbom%, ybom% - s1%) < 3 THEN raak1% = 2: GOTO Vol1 IF vakje(xbom%, ybom% - s1%) >= 3 AND vakje(xbom%, ybom% - s1%) < 4 THEN raak1% = 3: GOTO Vol1 IF vakje(xbom%, ybom% - s1%) = 4 THEN raak1% = 4: s1% = s1% - 1: GOTO Vol1 IF vakje(xbom%, ybom% - s1%) = 11 OR vakje(xbom%, ybom% - s1%) = 12 THEN pl% = vakje(xbom%, ybom% - s1%) - 10: change% = -30: CALL LevenChange(pl%, change%): GOSUB Geraakt: GOTO Vol1 NEXT s1%: raak1% = 0: s1% = straal% Vol1: FOR s2% = 1 TO straal% IF xbom% - s2% < 1 THEN s2% = s2% - 1: GOTO Vol2 IF vakje(xbom% - s2%, ybom%) = 1 THEN raak2% = 1: s2% = s2% - 1: GOTO Vol2 IF vakje(xbom% - s2%, ybom%) >= 2 AND vakje(xbom% - s2%, ybom%) < 3 THEN raak2% = 2: GOTO Vol2 IF vakje(xbom% - s2%, ybom%) >= 3 AND vakje(xbom% - s2%, ybom%) < 4 THEN raak2% = 3: GOTO Vol2 IF vakje(xbom% - s2%, ybom%) = 4 THEN raak2% = 4: s2% = s2% - 1: GOTO Vol2 IF vakje(xbom% - s2%, ybom%) = 11 OR vakje(xbom% - s2%, ybom%) = 12 THEN pl% = vakje(xbom% - s2%, ybom%) - 10: change% = -30: CALL LevenChange(pl%, change%): GOSUB Geraakt: GOTO Vol2 NEXT s2%: raak2% = 0: s2% = straal% Vol2: FOR s3% = 1 TO straal% IF xbom% + s3% > 17 THEN s3% = s3% - 1: GOTO Vol3 IF vakje(xbom% + s3%, ybom%) = 1 THEN raak3% = 1: s3% = s3% - 1: GOTO Vol3 IF vakje(xbom% + s3%, ybom%) >= 2 AND vakje(xbom% + s3%, ybom%) < 3 THEN raak3% = 2: GOTO Vol3 IF vakje(xbom% + s3%, ybom%) >= 3 AND vakje(xbom% + s3%, ybom%) < 4 THEN raak3% = 3: GOTO Vol3 IF vakje(xbom% + s3%, ybom%) = 4 THEN raak3% = 4: s3% = s3% - 1: GOTO Vol3 IF vakje(xbom% + s3%, ybom%) = 11 OR vakje(xbom% + s3%, ybom%) = 12 THEN pl% = vakje(xbom% + s3%, ybom%) - 10: change% = -30: CALL LevenChange(pl%, change%): GOSUB Geraakt: GOTO Vol3 NEXT s3%: raak3% = 0: s3% = straal% Vol3: FOR s4% = 1 TO straal% IF ybom% + s4% > 9 THEN s4% = s4% - 1: GOTO Vol4 IF vakje(xbom%, ybom% + s4%) = 1 THEN raak4% = 1: s4% = s4% - 1: GOTO Vol4 IF vakje(xbom%, ybom% + s4%) >= 2 AND vakje(xbom%, ybom% + s4%) < 3 THEN raak4% = 2: GOTO Vol4 IF vakje(xbom%, ybom% + s4%) >= 3 AND vakje(xbom%, ybom% + s4%) < 4 THEN raak4% = 3: GOTO Vol4 IF vakje(xbom%, ybom% + s4%) = 4 THEN raak4% = 4: s4% = s4% - 1: GOTO Vol4 IF vakje(xbom%, ybom% + s4%) = 11 OR vakje(xbom%, ybom% + s4%) = 12 THEN pl% = vakje(xbom%, ybom% + s4%) - 10: change% = -30: CALL LevenChange(pl%, change%): GOSUB Geraakt: GOTO Vol4 NEXT s4%: raak4% = 0: s4% = straal% Vol4: '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IF s1%(nr%) = 99 THEN s1%(nr%) = 0: raak1% = 0 ELSE s1%(nr%) = s1% sp1% = s1%(nr%) * 17 + 8 IF s2%(nr%) = 99 THEN s2%(nr%) = 0: raak2% = 0 ELSE s2%(nr%) = s2% sp2% = s2%(nr%) * 17 + 8 IF s3%(nr%) = 99 THEN s3%(nr%) = 0: raak3% = 0 ELSE s3%(nr%) = s3% sp3% = s3%(nr%) * 17 + 8 IF s4%(nr%) = 99 THEN s4%(nr%) = 0: raak4% = 0 ELSE s4%(nr%) = s4% sp4% = s4%(nr%) * 17 + 8 'De stralen tekenen: FOR i% = 8 TO 0 STEP -1 LINE (xx% + 8 - i%, yy% + 8 - i%)-(xx% + 8 + i%, yy% + 8 - sp1%), i% * 3.9 + 224, B LINE (xx% + 8 - i%, yy% + 8 - i%)-(xx% + 8 - sp2%, yy% + 8 + i%), i% * 3.9 + 224, B LINE (xx% + 8 + i%, yy% + 8 - i%)-(xx% + 8 + sp3%, yy% + 8 + i%), i% * 3.9 + 224, B LINE (xx% + 8 - i%, yy% + 8 + i%)-(xx% + 8 + i%, yy% + 8 + sp4%), i% * 3.9 + 224, B FOR w = 1 TO 2000: NEXT w NEXT i% SOUND 400, .1 SOUND 100, .1 SOUND 200, .1 SOUND 300, .1 '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Kijken of er nog een andere bom ontploft: IF raak1% = 4 THEN s4%(nr% + 1) = 99 xbom%(nr% + 1) = xbom%(nr%) ybom%(nr% + 1) = ybom%(nr%) - s1%(nr%) - 1 CALL BomExplode(nr%, nrh%) ELSEIF raak1% = 2 THEN nrh% = nrh% + 1 xh%(nrh%) = xbom%: yh%(nrh%) = ybom% - s1% ELSEIF raak1% = 3 THEN vakje(xbom%, ybom% - s1%) = 0 END IF IF raak2% = 4 THEN s3%(nr% + 1) = 99 xbom%(nr% + 1) = xbom%(nr%) - s2%(nr%) - 1 ybom%(nr% + 1) = ybom%(nr%) CALL BomExplode(nr%, nrh%) ELSEIF raak2% = 2 THEN nrh% = nrh% + 1 xh%(nrh%) = xbom% - s2%: yh%(nrh%) = ybom% ELSEIF raak2% = 3 THEN vakje(xbom% - s2%, ybom%) = 0 END IF IF raak3% = 4 THEN s2%(nr% + 1) = 99 xbom%(nr% + 1) = xbom%(nr%) + s3%(nr%) + 1 ybom%(nr% + 1) = ybom%(nr%) CALL BomExplode(nr%, nrh%) ELSEIF raak3% = 2 THEN nrh% = nrh% + 1 xh%(nrh%) = xbom% + s3%: yh%(nrh%) = ybom% ELSEIF raak3% = 3 THEN vakje(xbom% + s3%, ybom%) = 0 END IF IF raak4% = 4 THEN s1%(nr% + 1) = 99 xbom%(nr% + 1) = xbom%(nr%) ybom%(nr% + 1) = ybom%(nr%) + s4%(nr%) + 1 CALL BomExplode(nr%, nrh%) ELSEIF raak4% = 2 THEN nrh% = nrh% + 1 xh%(nrh%) = xbom%: yh%(nrh%) = ybom% + s4% ELSEIF raak4% = 3 THEN vakje(xbom%, ybom% + s4%) = 0 END IF '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Stralen wissen: FOR i% = 1 TO nr% xbom% = xbom%(i%): xx% = Zx%(xbom%) ybom% = ybom%(i%): yy% = Zy%(ybom%) s1% = s1%(i%) * 17 + 8 s2% = s2%(i%) * 17 + 8 s3% = s3%(i%) * 17 + 8 s4% = s4%(i%) * 17 + 8 FOR j% = 8 TO 0 STEP -1 LINE (xx% + 8 - j%, yy% + 8 - j%)-(xx% + 8 - j%, yy% + 8 - s1%), 43 LINE (xx% + 8 + j%, yy% + 8 - j%)-(xx% + 8 + j%, yy% + 8 - s1%), 43 LINE (xx% + 8 - j%, yy% + 8 - j%)-(xx% + 8 - s2%, yy% + 8 - j%), 43 LINE (xx% + 8 - j%, yy% + 8 + j%)-(xx% + 8 - s2%, yy% + 8 + j%), 43 LINE (xx% + 8 + j%, yy% + 8 - j%)-(xx% + 8 + s3%, yy% + 8 - j%), 43 LINE (xx% + 8 + j%, yy% + 8 + j%)-(xx% + 8 + s3%, yy% + 8 + j%), 43 LINE (xx% + 8 - j%, yy% + 8 + j%)-(xx% + 8 - j%, yy% + 8 + s4%), 43 LINE (xx% + 8 + j%, yy% + 8 + j%)-(xx% + 8 + j%, yy% + 8 + s4%), 43 FOR w = 1 TO 1000: NEXT w NEXT j% FOR j% = 1 TO 2 FOR K% = 1 TO Speler.Aantbommen(j%) IF xbom% = bom.x(j%, K%) AND ybom% = bom.y(j%, K%) THEN bom.aan(j%, K%) = 0 bom.x(j%, K%) = 0 bom.y(j%, K%) = 0 bom.Tijd(j%, K%) = 0 END IF NEXT K% NEXT j% NEXT i% EXIT SUB Geraakt: FOR j% = 50 TO 400 STEP 10 SOUND j%, .05 NEXT j% RETURN END SUB ' ' Een bom leggen op de plaats waar de speler staat, en alles instellen. ' - Bom(pl%, 1) is altijd de oudste bom (die er het langste ligt), dan 2, etc. ' ' SUB BomLeggen (pl%, Speler.Richting()) 'pl% = speler die bom heeft gelegd (1 of 2) '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'De bommen op volgorde van leeftijd zetten: 'FOR i% = 1 TO Speler.aantbommen(pl%) ' IF bom.aan(pl%, i%) = 1 THEN tellen% = tellen% + 1 'Bepalen a) hoeveel bommen er aan staan (tellen%), en b) hoeveel bommen er leeg zijn v¢¢r de 1e volle (aantleeg%) ' IF bom.aan(pl%, i%) = 0 AND bom.aan(pl%, i% + 1) = 1 THEN aantleeg% = i% 'NEXT i% 'FOR i% = aantleeg% + 1 TO aantleeg% + tellen% 'Als bv. de 1e 2 bommen leeg zijn en dan 3 vol, de waarden van bom3 naar bom1 zetten, van bom4 naar bom2, enz. ' bom.aan(pl%, i%) = 0: bom.aan(pl%, i% - aantleeg%) = 1 'NEXT i% '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'IF tellen% = Speler.aantbommen(pl%)THEN EXIT SUB 'als alle bommen vol zijn, dan uit de sub gaan. FOR i% = 1 TO Speler.Aantbommen(pl%) IF vakje(x%(pl%), y%(pl%)) = pl% + 10 AND bom.aan(pl%, i%) = 0 THEN 'als de bom 'leeg' is, en er ligt nog geen bom op het vakje waar je nu staat (vakje(x,y) = 11/12, niet 11.5/12.5), dan... bom.aan(pl%, i%) = 1 bom.x(pl%, i%) = x%(pl%) bom.y(pl%, i%) = y%(pl%) bom.Tijd(pl%, i%) = TIMER vakje(x%(pl%), y%(pl%)) = pl% + 10.5 'op vakje (x,y) een speler + bom zetten (11.5/12.5) GOTO TekenBom END IF NEXT i% EXIT SUB TekenBom: 'De co”rdinaten van het huidige hokje (waar je staat) berekenen, en daar een bom tekenen. DRAW "bm" + STR$(Zx%(x%(pl%))) + "," + STR$(Zy%(y%(pl%))) + "br7 bd14 c0 br5 bd 15r4 e1 l6 h1 r8 e1 l10 u1 r10 u1 l10 u1 r10 u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" 'CALL Tekenen(pl%, Speler.Richting()) 'als je het '-je weghaalt aan het begin van deze regel dan krijg je een tekening van het mannetje over de bom. Het probleem is dat je dan een verplaatsing krijgt in de richting waar in je het laatst bent verplaatst. END SUB SUB Bouwlevel (aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) 'De puinblokken toekennen, en er items in stoppen: DO xx% = INT(RND * 17) + 1 'ÄÂÄÄ een willekeurig vakje kiezen yy% = INT(RND * 9) + 1 'ÄÙ IF vakje(xx%, yy%) = 0 THEN 'Als het vakje leeg is, dan... IF bommen% < bom% THEN puin% = puin% + 1 'een puinblok aanmaken en bommen% = bommen% + 1 'er een extra bom in doen als vakje(xx%, yy%) = 2.1 'het maximum nog niet bereikt is ELSEIF stralen% < straal% THEN puin% = puin% + 1 'een puinblok aanmaken en stralen% = stralen% + 1 'er een extra straal in doen als vakje(xx%, yy%) = 2.2 'het maximum nog niet bereikt is ELSEIF levens% < leven% THEN puin% = puin% + 1 'een puinblok aanmaken en levens% = levens% + 1 'er een verbanddoos in doen als vakje(xx%, yy%) = 2.3 'het maximum nog niet bereikt is ELSEIF munten% < munt% THEN puin% = puin% + 1 'een puinblok aanmaken en munten% = munten% + 1 'er een munt in doen als vakje(xx%, yy%) = 2.5 'het maximum nog niet bereikt is ELSEIF staffen% < staf% THEN puin% = puin% + 1 'een puinblok aanmaken en staffen% = staffen% + 1 'er een staf in doen als vakje(xx%, yy%) = 2.6 'het maximum nog niet bereikt is ELSEIF kronen% < kroon% THEN puin% = puin% + 1 'een puinblok aanmaken en kronen% = kronen% + 1 'er een kroon in doen als vakje(xx%, yy%) = 2.7 'het maximum nog niet bereikt is ELSEIF puin% < aantpuin% THEN puin% = puin% + 1 'er een puinblok van maken als vakje(xx%, yy%) = 2 'het maximum nog niet bereikt is ELSE EXIT DO 'en anders uit de loop gaan, want END IF 'van alles in het maximum bereikt END IF LOOP END SUB ' ' Laten zien wie er gewonnen heeft. ' ' SUB GameOver (pl%) FOR i% = 11 TO 16: KEY(i%) STOP: NEXT i% FOR i% = 21 TO 25: KEY(i%) STOP: NEXT i% IF pl% = 1 THEN winner% = 2 IF pl% = 2 THEN winner% = 1 FOR i% = 0 TO 90 LINE (0, i%)-(288, i%), i% / 2.9 + 224 LINE (0, 180 - i%)-(288, 180 - i%), i% / 2.9 + 224 FOR w = 1 TO 3000: NEXT NEXT i% ' ' 'game over: DRAW _ "bm50,75c223 d20r20u10l5d5l10u10r15u5l20br25 d20r5u5r10d5r5u20l20bf5d5r10u5l10br20bu5 d20r5u15r3d15r5u15r3d15r5u20l21br26 d20r20u5l15u3r10u5l10u2r15u5l20br34 d20r20u20l20bf5d10r10u10l10br18bu5 m+9,20r6m+9,-20l6m-6,11m-6,-11l5br27 d20r20u5l15u3r10u5l10u2r15u5l20br25 d20r5u5f5r7h5r7u15l19bf5d5r10u5l10" _ LOCATE 15, 13: COLOR 223: PRINT "PLAYER"; winner%; "WINS!" PAINT (100, 104), 250, 223 'het zwart v/d achtergr. kl. wissen PAINT (93, 99), 252, 223 'Ä¿ PAINT (110, 99), 252, 223 'ÄÅÄÄ enkele zwarte vakjes wissen (in de letters, de dichte stukjes van de "P", "A" & "R") PAINT (134, 99), 252, 223 'ÄÙ SLEEP DIM melt%(3000) t = TIMER DO x% = INT(RND * 284) + 2 y% = INT(RND * 172) + 1 GET (x%, y%)-(x% + INT(RND * 2), y% + INT(RND * 6)), melt% PUT (x%, y% + 1), melt%, PSET IF TIMER - 5 > t THEN END LOOP END SUB ' ' Een item - of niks - neerzetten op de plek waar eerst een puinblok was. ' ' SUB Item (xh%(), yh%(), ite%) xitem% = xh%(ite%): xx% = Zx%(xitem%) 'ÄÄÂÄÄ schermco”rdinaten van het yitem% = yh%(ite%): yy% = Zy%(yitem%) 'ÄÄÙ puinblok berekenen. 'ps: wissen van het puinblok hoeft niet; de stralen die gewist worden zorgen daar al voor. IF vakje(xitem%, yitem%) = 2 THEN vakje(xitem%, yitem%) = 0 IF vakje(xitem%, yitem%) = 0 THEN EXIT SUB IF vakje(xitem%, yitem%) < 3 AND vakje(xitem%, yitem%) >= 2 THEN vakje(xitem%, yitem%) = vakje(xitem%, yitem%) + 1 'van 2.1 3.1 maken, van 2.2 3.2, etc. IF vakje(xitem%, yitem%) = 3.1 THEN 'extra bom LINE (xx%, yy%)-STEP(16, 16), 0, BF LINE (xx% + 1, yy% + 1)-STEP(14, 14), 20, BF DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br13 bd23 c0 bd6 bl2 r4 e1 l6 h1 r8 e1 l10 u1 r10 u1 l10 u1 r10 u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1 bd8br2 d2u1l1r2 br2 u1d2" ELSEIF vakje(xitem%, yitem%) = 3.2 THEN 'extra straal LINE (xx%, yy%)-STEP(16, 16), 0, BF FOR i% = 0 TO 14 LINE (xx% + 1, yy% + 1 + i%)-(xx% + 15 - i%, yy% + 15), 224 + i% * 2.2 LINE (xx% + 1 + i%, yy% + 1)-(xx% + 15, yy% + 15 - i%), 224 + i% * 2 NEXT i% DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br13 bd23 c0 bd4 br3 d2 u1 l1 r2 br2 d1 u2" ELSEIF vakje(xitem%, yitem%) = 3.3 THEN 'leven erbij LINE (xx% + 3, yy% + 3)-STEP(10, 10), 0, BF LINE (xx% + 4, yy% + 4)-STEP(8, 8), 31, BF DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br17 bd24 c255 u2l1d2l1u4d6l1u6l1d6u2l1u2l1d2" ELSEIF vakje(xitem%, yitem%) = 3.5 THEN '10 punten (muntje) DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br15 bd18 c31l3g3d3 c15f1u4e1d6f1u8r1d7r1u7r1d7r1u8f1d6e1u4f1d1 c0d2g3l3bl1bu3u3g1br3d1f1r1e1u1h1l1" ELSEIF vakje(xitem%, yitem%) = 3.6 THEN '26 punten (staf) DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br13 bd18c224f6u1h5br5g10d1e10u1 c235l1g1l1bl3f2bf2f1bh3g7 c191br1be1e0be2e0be2e0be2e0be2e0bd4h0bh4h0" ELSEIF vakje(xitem%, yitem%) = 3.7 THEN '42 punten (kroon) DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br11 bd19c224r2d1r2u1r2f2d3l1g1e1h1u1h2l2g2d1g1l1u3e1br4d5bl3g1c235d1r8u1d1g1c240l6u1h2c230r1f1r6e1r1bg2c223l0bl2l0bl2l0bl2l0bu9br2r2h1d2bf4c255g2u2g1d1bl2u1h1d2h2" END IF END SUB ' ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û GROEN ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û ROTSEN ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û ' ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ SUB level1 r = 0 g = 1 B = 0 FOR i = 0 TO 31 PALETTE 32 + i, INT(r * i * 2) + INT(g * i * 2) * 256 + INT(B * i * 2 * 256 ^ 2) NEXT i PALETTE 64, 2763306 'Vaste blokken toewijzen: FOR xx% = 1 TO 17 FOR yy% = 1 TO 9 IF xx% MOD 2 = 0 AND yy% MOD 2 = 0 THEN vakje(xx%, yy%) = 1 'vast blok ELSE vakje(xx%, yy%) = 0 'leeg (= looppad) END IF NEXT yy% NEXT xx% 'Puinblokken toewijzen: 'Het aantal puinblokken instellen: ' LET OP: aantpuin% = 100 ' ER MOETEN MINSTENS ' ZOVEEL PUINBLOKKEN 'Het maximale aantal ... instellen: ' ALS TOTAAL AANTAL ITEMS bom% = 10 ' ZIJN (anders past straal% = 10 ' het niet) leven% = 3 ' munt% = 15 ' staf% = 5 ' kroon% = 2 ' puin$ = "c16 br3bd1d1f1d2f2r1h3r2u3d1r3d1f1h1u2r2f1d4r2d1u3r1g2l2d1l3u3d3f1r2d1g2d1e1be2e1d1r2d1bd3l1u1l1u1br1bd4d0bl2u2l4d2r2bl5l1u2l3r3u1r1bd2r2u4e1g1l3u2d2l2d1u1l1bu4r2l1u4h1" CALL Bouwlevel(aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) END SUB ' ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ' Û Ü Ü Ü Ü Ü Ü Ü Û GEEL ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û KISTEN ' Û Ü Ü Ü Ü Ü Ü Ü Û ' Û Ü Ü Ü Ü Ü Ü Ü Ü Û ' ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ SUB level2 r% = 1 g% = 1 B% = 0 FOR i% = 0 TO 31 PALETTE 32 + i%, r% * i% * 2 + g% * i% * 2 * 256 + B% * i% * 2 * 256 ^ 2 NEXT i% PALETTE 64, 20 * 256 + 35 PALETTE 65, 14 * 256 + 30 PALETTE 66, 24 * 256 + 40 'Vaste blokken toewijzen: FOR xx% = 1 TO 17 FOR yy% = 1 TO 9 IF yy% MOD 2 = 0 THEN IF yy% MOD 4 = 0 AND xx% MOD 2 = 0 OR yy% MOD 4 = 2 AND xx% MOD 2 = 1 THEN vakje(xx%, yy%) = 1 'vast blok ELSE vakje(xx%, yy%) = 0 'leeg (= looppad) END IF END IF NEXT yy% NEXT xx% 'Puinblokken toewijzen: 'Het aantal puinblokken instellen: ' LET OP: aantpuin% = 60 ' ER MOETEN MINSTENS ' ZOVEEL PUINBLOKKEN 'Het maximale aantal ... instellen: ' ALS TOTAAL AANTAL ITEMS bom% = 8 ' ZIJN (anders past straal% = 8 ' het niet) leven% = 2 ' munt% = 10 ' staf% = 5 ' kroon% = 1 ' puin$ = "c66br2bd1d14br4 c65u14br4 c66d14br4 c65u14bf1 c66l0bl6l2bl6l0bd4 c65r0br6r2br6r0bd4 c66l0bl6l2bl6l0bd4 c65r0br6r2br6r0bl3 c0bu2u0bu8u0bl8u0bd8u0" CALL Bouwlevel(aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) END SUB ' ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ' Û Û Û Û CYAAN ' Û Ûßß ßßß Û Ü Û STAALPLATEN ' Û ß Ü Ûß ßß Û Û ' Û Û ßßß Ûßß Û ' ÛÜÜÜÜÜÛÜÜÜÜÜÜÜÛÜÜÜÛ SUB level3 r% = 0 g% = 1 B% = 1 FOR i% = 0 TO 31 PALETTE 32 + i%, r% * i% * 2 + g% * i% * 2 * 256 + B% * i% * 2 * 256 ^ 2 NEXT i% PALETTE 64, 45 * 256 + 55 * 256 ^ 2 + 30 PALETTE 65, 30 * 256 + 40 * 256 ^ 2 + 20 PALETTE 66, 60 * 256 + 60 * 256 ^ 2 + 40 'Vaste blokken toewijzen: FOR xx% = 1 TO 17 FOR yy% = 1 TO 9 vakje(xx%, yy%) = 0 'leeg (= looppad) NEXT yy% NEXT xx% vakje(4, 1) = 1: vakje(4, 2) = 1: vakje(4, 3) = 1: vakje(3, 3) = 1 vakje(2, 3) = 1: vakje(2, 4) = 1: vakje(2, 5) = 1: vakje(4, 6) = 1 vakje(7, 5) = 1: vakje(6, 5) = 1: vakje(6, 6) = 1: vakje(6, 7) = 1 vakje(6, 8) = 1: vakje(6, 9) = 1: vakje(7, 3) = 1: vakje(8, 3) = 1 vakje(9, 3) = 1: vakje(9, 7) = 1: vakje(10, 7) = 1: vakje(11, 7) = 1 vakje(11, 5) = 1: vakje(12, 5) = 1: vakje(12, 4) = 1: vakje(12, 3) = 1 vakje(12, 2) = 1: vakje(12, 1) = 1: vakje(14, 4) = 1: vakje(14, 9) = 1 vakje(14, 8) = 1: vakje(14, 7) = 1: vakje(15, 7) = 1: vakje(16, 7) = 1 vakje(16, 6) = 1: vakje(16, 5) = 1 'Puinblokken toewijzen: 'Het aantal puinblokken instellen: ' LET OP: aantpuin% = 60 ' ER MOETEN MINSTENS ' ZOVEEL PUINBLOKKEN 'Het maximale aantal ... instellen: ' ALS TOTAAL AANTAL ITEMS bom% = 8 ' ZIJN (anders past straal% = 8 ' het niet) leven% = 2 ' munt% = 10 ' staf% = 5 ' kroon% = 1 ' puin$ = "c65bf1 f2bd6h2bd6f2br6h2bu6f2bu6h2br6f2bd6h2bd6f2bh3bl2 c66e2bu6g2bl6e2bd6g2" CALL Bouwlevel(aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) END SUB ' ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ' Û Û Ü Û BLAUW ' Û ÜÜÛÛÛÜÜ ßßßÛ MUURTJES ' Û ßßßÛÛÛÜÛÛÛßßß Û ' Ûßßß ßÛß Ü Û ' ÛÜÜÜÜÜÜÜÜÜÜÜÛÜÜÜÜÜÛ SUB level4 r = .5 g = 0 B = 1 FOR i% = 0 TO 31 PALETTE 32 + i%, r * i% * 2 + g * i% * 2 * 256 + B * i% * 2 * 256 ^ 2 NEXT i% PALETTE 64, 40 * 256 + 40 + 40 * 256 ^ 2 PALETTE 65, 30 * 256 + 30 + 20 * 256 ^ 2 PALETTE 66, 20 * 256 + 20 + 20 * 256 ^ 2 'Vaste blokken toewijzen: FOR xx% = 1 TO 17 FOR yy% = 1 TO 9 vakje(xx%, yy%) = 0 'leeg (= looppad) NEXT yy% NEXT xx% FOR xx% = 6 TO 12: FOR yy% = 4 TO 6: vakje(xx%, yy%) = 1: NEXT yy%: NEXT xx% FOR xx% = 8 TO 10: FOR yy% = 3 TO 7: vakje(xx%, yy%) = 1: NEXT yy%: NEXT xx% FOR xx% = 3 TO 15: vakje(xx%, 5) = 1: NEXT xx% FOR yy% = 2 TO 8: vakje(9, yy%) = 1: NEXT yy%: vakje(9, 5) = 0 'middelste vakje leeg FOR xx% = 1 TO 3: vakje(xx%, 7) = 1: NEXT xx% FOR xx% = 15 TO 17: vakje(xx%, 3) = 1: NEXT xx% FOR yy% = 1 TO 2: vakje(6, yy%) = 1: NEXT yy% FOR yy% = 8 TO 9: vakje(12, yy%) = 1: NEXT yy% 'Puinblokken toewijzen: 'Het aantal puinblokken instellen: ' LET OP: aantpuin% = 99 ' ER MOETEN MINSTENS ' ZOVEEL PUINBLOKKEN 'Het maximale aantal ... instellen: ' ALS TOTAAL AANTAL ITEMS bom% = 8 ' ZIJN (anders past straal% = 8 ' het niet) leven% = 2 ' munt% = 10 ' staf% = 5 ' kroon% = 1 ' puin$ = "c66 bf1 bd3r3u3d3r8u3d3r3bd4l7u4d4l7bd4r3u3d3r8u3d3r3l7d3u3" CALL Bouwlevel(aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) END SUB ' ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ' Û ÜÛÜ Ü Û ÜÜ ß Ü Û ' Û Ü Û Ü ÜÜ Ûßßß Ü Û MINTGROEN ' Û ÛÜÜÜÛÜÛÜÜÛ ß ÛÜÛ KISTEN ' Û Ü ÜÜ ÛÜÜÜÜ ÛÜ Û ' ÛÜÛÜÜÛÜÜÜÜÜÜÜÜÜÛÜÜÛ SUB level5 r = .5 g = 1 B = .5 FOR i% = 0 TO 31 PALETTE 32 + i%, INT(r * i% * 2) + INT(g * i% * 2) * 256 + CINT(B * i% * 2) * 256 ^ 2 NEXT i% PALETTE 64, 20 * 256 + 35 PALETTE 65, 14 * 256 + 30 PALETTE 66, 24 * 256 + 40 'Vaste blokken toewijzen: FOR xx% = 1 TO 17: FOR yy% = 1 TO 9: vakje(xx%, yy%) = 0: NEXT yy%: NEXT xx% vakje(2, 2) = 1: vakje(2, 4) = 1: vakje(2, 5) = 1: vakje(2, 6) = 1: vakje(2, 8) = 1: vakje(2, 9) = 1: vakje(3, 1) = 1: vakje(3, 2) = 1: vakje(3, 6) = 1: vakje(4, 2) = 1: vakje(4, 3) = 1: vakje(4, 4) = 1: vakje(4, 6) = 1: vakje(4, 8) = 1: vakje(5, 6) _ = 1: vakje(5, 8) = 1 vakje(5, 9) = 1: vakje(6, 2) = 1: vakje(6, 4) = 1: vakje(6, 5) = 1: vakje(6, 6) = 1: vakje(7, 6) = 1: vakje(8, 1) = 1: vakje(8, 2) = 1: vakje(8, 4) = 1: vakje(8, 5) = 1: vakje(8, 6) = 1: vakje(8, 7) = 1: vakje(8, 8) = 1: vakje(9, 4) = 1: vakje(9, 6) _ = 1: vakje(9, 8) = 1 vakje(10, 2) = 1: vakje(10, 6) = 1: vakje(10, 8) = 1: vakje(11, 2) = 1: vakje(11, 3) = 1: vakje(11, 4) = 1: vakje(11, 5) = 1: vakje(11, 6) = 1: vakje(11, 8) = 1: vakje(12, 3) = 1: vakje(12, 8) = 1: vakje(13, 3) = 1: vakje(13, 5) = 1: vakje(14, 1) = _ 1: vakje(14, 3) = 1 vakje(14, 7) = 1: vakje(14, 8) = 1: vakje(15, 8) = 1: vakje(15, 9) = 1: vakje(16, 2) = 1: vakje(16, 4) = 1: vakje(16, 5) = 1: vakje(16, 6) = 1: vakje(17, 6) = 1 'Puinblokken toewijzen: 'Het aantal puinblokken instellen: ' LET OP: aantpuin% = 80 ' ER MOETEN MINSTENS ' ZOVEEL PUINBLOKKEN 'Het maximale aantal ... instellen: ' ALS TOTAAL AANTAL ITEMS bom% = 8 ' ZIJN (anders past straal% = 8 ' het niet) leven% = 2 ' munt% = 10 ' staf% = 10 ' kroon% = 4 ' puin$ = "c66br2bd1d14br4 c65u14br4 c66d14br4 c65u14bf1 c66l0bl6l2bl6l0bd4 c65r0br6r2br6r0bd4 c66l0bl6l2bl6l0bd4 c65r0br6r2br6r0bl3 c0bu2u0bu8u0bl8u0bd8u0" CALL Bouwlevel(aantpuin%, bom%, straal%, leven%, munt%, staf%, kroon%) END SUB ' ' De speler die in de vuurstraal stond damage geven / de speler ' die een verbanddoosje heeft gepakt leven bijgeven. ' SUB LevenChange (pl%, change%) IF pl% = 1 THEN LINE (leven%(1), 0)-(leven%(1), 5), leven%(1) / 3.3 + 192, BF ELSEIF pl% = 2 THEN LINE (leven%(2) + 145, 0)-(leven%(2) + 145, 5), leven%(2) / 3.3 + 192, BF END IF leven%(pl%) = leven%(pl%) + change% IF leven%(pl%) > 100 THEN leven%(pl%) = 100 IF leven%(pl%) < 0 THEN leven%(pl%) = 0 IF pl% = 1 THEN LINE (leven%(1), 0)-(leven%(1), 5), 0, BF ELSEIF pl% = 2 THEN LINE (leven%(2) + 145, 0)-(leven%(2) + 145, 5), 0, BF END IF IF leven%(pl%) = 0 THEN CALL GameOver(pl%) END SUB ' ' - Berekenen van nieuwe positie speler 1 / 2 ' - Tekenen van de speler op die plek ' - Eventueel tekenen van bom op oude plek ' ' SUB Tekenen (pl%, Speler.Richting()) 'pl% = speler die is bewogen (1 of 2) Oudex% = x%(pl%) ' ÄÂÄÄ De oude x en y bewaren voor het geval de Oudey% = y%(pl%) ' ÄÙ verplaatsing ongeldig blijkt. LINE (Zx%(Oudex%), Zy%(Oudey%))-STEP(16, 16), 43, BF 'oude vakje leegmaken 'Kijken wat er op het oude vakje stond: [speler] of [speler + bom]. IF 2 * vakje(Oudex%, Oudey%) MOD 2 = 0 THEN 'Als het oude vakje waarde 11 of 12 had (de waarde is altijd 11, 12, 11.5 of 12.5), vakje(Oudex%, Oudey%) = 0 'dan wordt het vakje nu leeg, ELSE 'en anders (waarde was 11.5 of 12.5 - er lag dus ook nog een bom), vakje(Oudex%, Oudey%) = 4 'komt er nu een bom te liggen. DRAW "bm" + STR$(Zx%(Oudex%)) + "," + STR$(Zy%(Oudey%)) + "br7 bd14 c0 br5 bd 15r4 e1 l6 h1 r8 e1 l10 u1 r10 u1 l10 u1 r10 u1 l10 e1 r8 h1 l6 e1 r4 l4 d2 c5 d2g1l1u2 d2 c10 e2l1 c15g1 br5 bu2 c224 h1u1h1" END IF IF Speler.Richting(pl%) = 1 THEN 'omhoog bewegen y%(pl%) = y%(pl%) - 1 ELSEIF Speler.Richting(pl%) = 2 THEN 'naar links bewegen x%(pl%) = x%(pl%) - 1 ELSEIF Speler.Richting(pl%) = 3 THEN 'naar rechts bewegen x%(pl%) = x%(pl%) + 1 ELSEIF Speler.Richting(pl%) = 4 THEN 'omlaag bewegen y%(pl%) = y%(pl%) + 1 END IF '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'Eventueel herstellen: IF x%(pl%) < 1 OR x%(pl%) > 17 OR y%(pl%) < 1 OR y%(pl%) > 9 THEN Herstel% = 1: GOTO Herstel IF vakje(x%(pl%), y%(pl%)) >= 3 AND vakje(x%(pl%), y%(pl%)) < 4 THEN Herstel% = 0: GOSUB items: GOTO Herstel IF vakje(x%(pl%), y%(pl%)) <> 0 THEN Herstel% = 1: GOTO Herstel Herstel: IF Herstel% = 1 THEN x%(pl%) = Oudex% y%(pl%) = Oudey% IF vakje(Oudex%, Oudey%) = 4 THEN vakje(Oudex%, Oudey%) = 10.5 + pl% IF vakje(Oudex%, Oudey%) = 0 THEN vakje(Oudex%, Oudey%) = 10 + pl% ELSE vakje(x%(pl%), y%(pl%)) = 10 + pl% END IF '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 'De mannetjes tekenen: xx% = x%(pl%): xx% = Zx%(xx%) 'ÄÂÄÄ De co”rdinaten van het vakje yy% = y%(pl%): yy% = Zy%(yy%) 'ÄÙ omzetten in schermco”rdinaten. vakje(x%(pl%), y%(pl%)) = pl% + 10 '11 (speler 1) of 12 (speler 2) in vakje zetten. DIM kl%(10) FOR i% = 0 TO 9: kl%(i%) = pl% * 10 + i% + 60: NEXT i% IF Speler.Richting(pl%) = 1 THEN DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br11bd16 c" + STR$(kl%(8)) + "r6f2d4g2l6h2u4e2r5f3d2g3l4h3u2e2r1 c" + STR$(kl%(6)) + "r4f2d2g2l4h2u2e1r1 c" + STR$(kl%(3)) + "r4f1d2g1l4h1u2r1 c" + STR$(kl%(0)) + _ "r4d1l4d1r4 bd4bl1l2g2d1u1e1r4f1bl2l2d3l1br3u2l1" ELSEIF Speler.Richting(pl%) = 2 THEN LINE (xx% + 5, yy% + 4)-STEP(7, 4), 26, BF 'huidskleur!!! ' ' ' ' DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br18bd16 c" + STR$(kl%(0)) + "l6g1r8f1l10d4f2r6h1r2e1u3l2f1d2r1u2 c0bl5l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5r2f2d1u1h1l5h1f1r2d4l1br3r1u1h1u1l1d1r1d1 c" + STR$(pl% * 10 + 63) + "d0bl3d0" ELSEIF Speler.Richting(pl%) = 3 THEN LINE (xx% + 5, yy% + 4)-STEP(7, 4), 26, BF 'huidskleur!!! ' ' ' ' DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br11bd16 c" + STR$(kl%(0)) + "r6f1l8g1r10d4g2l6e1l2h1u3r2g1d2l1u2 c0br5r2bd2l2be1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l2g2d1u1e1r5e1g1l2d4r1bl3l1u1e1u1r1d1l1d1 c" + STR$(pl% * 10 + 63) + "d0br3d0" ELSEIF Speler.Richting(pl%) = 4 THEN LINE (xx% + 5, yy% + 4)-STEP(6, 4), 26, BF 'huidskleur!!! DRAW "bm" + STR$(xx%) + "," + STR$(yy%) + "br11bd16 c" + STR$(kl%(0)) + "r6f1l8g1r10d4g2l6h2u3r1d3f1br6e1u3d1bl3 c0l2bd2r2bh1 c25u1 c15d0 c" + STR$(pl% * 10 + 60) + "bd5l1r2f2d1u1h1l4g1br2r2d3r1bl3u2r2e2 c" + STR$(pl% * 10 + 63) + _ "g1bd2d0bd1bl4u0bu4bl1l0" END IF EXIT SUB items: IF vakje(x%(pl%), y%(pl%)) = 3.1 THEN Speler.Aantbommen(pl%) = Speler.Aantbommen(pl%) + 1 LOCATE 4, pl% * 18 - 14: COLOR 31: PRINT USING "##"; Speler.Aantbommen(pl%) Speler.Punten(pl%) = Speler.Punten(pl%) + 5 ELSEIF vakje(x%(pl%), y%(pl%)) = 3.2 THEN Speler.Aantstraal(pl%) = Speler.Aantstraal(pl%) + 1 LOCATE 5, pl% * 18 - 14: COLOR 31: PRINT USING "##"; Speler.Aantstraal(pl%) Speler.Punten(pl%) = Speler.Punten(pl%) + 5 ELSEIF vakje(x%(pl%), y%(pl%)) = 3.3 THEN change% = 25: CALL LevenChange(pl%, change%) FOR i% = 0 TO 200 STEP 10: SOUND 800 + i%, .05: NEXT i% Speler.Punten(pl%) = Speler.Punten(pl%) + 15 ELSEIF vakje(x%(pl%), y%(pl%)) = 3.5 THEN Speler.Punten(pl%) = Speler.Punten(pl%) + 10 ELSEIF vakje(x%(pl%), y%(pl%)) = 3.6 THEN Speler.Punten(pl%) = Speler.Punten(pl%) + 26 ELSEIF vakje(x%(pl%), y%(pl%)) = 3.7 THEN Speler.Punten(pl%) = Speler.Punten(pl%) + 42 END IF LOCATE 4, pl% * 18 - 4: COLOR 31: PRINT USING "#####"; Speler.Punten(pl%) LINE (Zx%(x%(pl%)), Zy%(y%(pl%)))-STEP(16, 16), 43, BF vakje(x%(pl%), y%(pl%)) = 0 FOR i% = 0 TO 100 STEP 10: SOUND 700 - i%, .05: NEXT i% RETURN END SUB ' ' Het tekenen van het level: ' - vaste blokken ' - puinblokken ' ' SUB TekenLevel 'De 3 blokjes linksboven en de 3 blokjes rechtsonder leegmaken: vakje(1, 1) = 0 vakje(1, 2) = 0 vakje(2, 1) = 0 vakje(17, 9) = 0 vakje(17, 8) = 0 vakje(16, 9) = 0 'Alles inkleuren met de achtergrondkleur: PAINT (100, 100), 43, 31 'De vaste blokken en puinblokken tekenen: FOR xx% = 1 TO 17 FOR yy% = 1 TO 9 IF vakje(xx%, yy%) = 1 THEN FOR i% = 0 TO 8 LINE (Zx%(xx%) + i%, Zy%(yy%) + i%)-(Zx%(xx%) + 16 - i%, Zy%(yy%) + 16 - i%), 36 + i% * 3.4, B NEXT i% ELSEIF vakje(xx%, yy%) >= 2 AND vakje(xx%, yy%) < 3 THEN LINE (Zx%(xx%), Zy%(yy%))-(Zx%(xx%) + 16, Zy%(yy%) + 16), 64, BF LINE (Zx%(xx%), Zy%(yy%))-(Zx%(xx%) + 16, Zy%(yy%) + 16), 0, B DRAW "bm" + STR$(Zx%(xx%)) + "," + STR$(Zy%(yy%)) + "br6 bd15 " + "X" + VARPTR$(puin$) END IF NEXT yy% NEXT xx% FOR pl% = 1 TO 2 LOCATE 4, pl% * 18 - 14: COLOR 31: PRINT USING "##"; Speler.Aantbommen(pl%) LOCATE 5, pl% * 18 - 14: COLOR 31: PRINT USING "##"; Speler.Aantstraal(pl%) LOCATE 4, pl% * 18 - 4: COLOR 31: PRINT USING "#####"; Speler.Punten(pl%) LOCATE 5, pl% * 18 - 1: COLOR 31: PRINT USING "##"; Speler.Gewonnen(pl%) NEXT pl% END SUB ' ' Zet x-[hokjes]co”rdinaat (x%) om in x-[scherm]co”rinaat ' van de linkerboven-hoek van een hokje. ' FUNCTION Zx% (i%) Zx% = i% * 17 - 17 END FUNCTION ' ' Zet y-[hokjes]co”rdinaat (y%) om in y-[scherm]co”rinaat ' van de linkerboven-hoek van een hokje. ' FUNCTION Zy% (i%) Zy% = i% * 17 + 10 END FUNCTION