Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 

Hoofdstuk 3. Gamemaker

We gaan er voor zorgen dat er geschoten kan worden, dat hij extra ballen kan krijgen, dat de snelheid van de ballen tijdens het spel kan veranderen, en dat er een tweede level in het spel komt.

  3.1. De sprites en objecten voor het schieten

In een spel kan meestal ook geschoten worden. Dat gaan we in dit spel ook doen.
We gaan er voor zorgen dat er een bom kan worden gegooid door een monster. Die bom wordt gegooid als je op de spatiebalk drukt. En als die bom de rode bal raakt dan komt er een explosie en de rode bal verdwijnt. Maar twee seconden later komt er een nieuwe rode bal.

We beginnen met het toevoegen van de sprites: een monster, een bom en een explosie.

  1. Klik op Add, en klik dan op Add Sprite
    Als naam voer je in: monster.
    Klik dan op Load Sprite en zorg er voor dat je de map Breakout in beeld krijgt.
    Klik op monster1.gif, en klik dan op Openen, en daarna op OK.


    Op dezelfde manier voeg je de sprite voor een bom toe.
    Voer als naam in: bom.
    Kies bomb01.gif uit de map Maze uit.


    Tenslotte voeg je de sprite voor een explosie toe.
    Voer als naam in: explosie.
    Kies explode1.gif uit de map Various uit.


We gaan nu eerst de objecten toevoegen, de actions komen later.
  1. Klik op Add, en klik dan op Add Object
    Als naam van het object voer je in: monster
    Klik op het icoontje achter sprite en kies monster uit.
    Zet geen vinkje voor Solid


    Voer op dezelfde manier de objecten bom en explosie in.

  3.2. De acties bij het schieten

Nu gaan we de acties bij de objecten toevoegen.
Bij het object monster voeren we in dat als er op de spatiebalk gedrukt wordt er een bom wordt afgeschoten. Dat doen we door een nieuw object te laten verschijnen op de plaats van het monster, en wel een bom.
Deze bom moet direct gaan bewegen. Als we bij het create-event van de bom invoeren dat hij moet gaan bewegen, dan zal hij dus direct na zijn onstaan (dus na een druk op de spatiebalk) gaan bewegen.
Als hij tegen de muur komt moet hij verdwijnen.
Als hij tegen de rode bal botst moet hij in een explosie veranderen, die explosie laten we één seconde zien en daarna moet die ook weer verdwijnen. En twee seconden later moet er een nieuwe rode bal verschijnen.
Verder willen we dat er niet constant geschoten kan worden. Er mag maar één bom tegelijk in het speelveld aan wezig zijn. Zodra de bom tegen de muur of tegen de rode bal gebotst is kan er opnieuw geschoten worden, maar niet eerder.
  1. Dubbelklik links in het Gamemaker-venster op monster onder Objects. Dan verschijnt het objectvenster voor het monster.
    Klik in het midden van het object-venster nu op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Key Press en kies in het pull-down menu, dat dan verschijnt, <Space> uit.
    Het EventSelector-venster verdwijnt, en het Space-icoontje wordt in het events-venster geplaatst.

  2. Dan kun je aangeven wat er moet gebeuren als je op de spatiebalk drukt.
    Als je op de spatiebalk drukt dan moet er een bom worden weggeschoten, maar alleen als er nog geen bom aanwezig is.
    Daarom moet er eerst een vraag gesteld worden, namelijk of het aantal bommen wel gelijk aan nul is. Daarvoor moet je bij het tabblad control zijn, en daarvan moet je het icoontje met 123 hebben (zie in onderstaande figuur). Dat icoontje sleep je naar het actions-venster.
    Als je het loslaat verschijnt onderstaand venster.



    Vul het in zoals je hierboven ziet. Klik dan op OK.

    Sleep daarna een startblok naar het actions-venster.

    En klik dan op een icoontje van het tabblad main1,
    en wel het icoontje bij de rode pijl in de figuur hieronder. Het staat voor: Create an instance of an object with a motion.
    Sleep dat icoontje naar het actions-venster.
    Als je het loslaat verschijnt onderstaand venster.



    Vul het in zoals je hierboven ziet. Er wordt dan dus een bom gecreëerd.
    En de x van de plaats van de bom is dezelfde als de x van het monster, daarom vul je achter x in: monster.x
    En de y is natuurlijk monster.y
    De snelheid van de bom moet 4 worden.
    En achter direction vul je 180 in.
    Dat is de hoek in graden, en dat betekent dat de bom naar links wordt geschoten.
    Als je het zo hebt ingevuld klik je op OK.

    Sleep daarna een eindblok naar het actions-venster, en klik op OK.

  3. Dubbelklik links in het Gamemaker-venster op bom onder Objects. Dan verschijnt het objectvenster voor de bom.
    Klik op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Create. Dan kun je aangeven wat er gebeurt als de bom gecreëeerd wordt.
    Sleep het rode move-icoontje naar het actions-venster:

    Geef aan dat de bom naar links moet bewegen, en vul bij speed 4 in.
    Klik dan op OK

    (eigenlijk hoeft deze actie niet te worden ingevoerd, omdat je bij het creëren van de bal bij het monster-object ook al hebt aangegeven hoe de bom moet gaan bewegen)

  4. Nu gaan we aangeven wat er gebeurt als de bom tegen een muur botst.
    Klik op Add Event en klik in het Event-selector menu op

    Er verschijnt een venstertje naast met alle objecten, klik op muur.
    Klik vervolgens op: en sleep dat icoontje naar het actions-venster. Daarmee geef je aan dat de bom moet verdwijnen, als hij tegen de muur aankomt

  5. Tenslotte gaan we aangeven wat er gebeurt als de bom tegen de rode bal botst: dan wordt er een punt bij de score opgeteld, de bom verdwijnt, en de bal explodeert (dat betekent in het programma: de bal verandert in een explosie), die explosiefiguur verdwijnt na een seconde, en twee seconden later komt er een nieuwe rode bal in het spel.
    Klik op Add Event en klik in het Event-selector menu op

    Er verschijnt een venstertje naast met alle objecten, klik op rodebal. Dan kun je aangeven wat er gebeurt als de bom tegen de rode bal botst.

    Sleep het score-icoontje naar het actions-venster. en in het score-venster vul je achter new score in: 1, en je zet een vinkje voor Relative. Dat heeft dan tot gevolg dat er één punt bij het puntentotaal wordt opgeteld. Klik dan op OK

    Klik vervolgens op: en sleep dat icoontje naar het actions-venster. Er verschijnt een venster waarin je kunt aangeven welk object moet verdwijnen, kies voor self, en klik dan op OK
    Daarmee geef je aan dat de bom moet verdwijnen.

    Klik dan nog op het change-the-instance-icoontje dat hoort bij het tabblad Main1
    (zie in onderstaande figuur). Dat icoontje sleep je naar het actions-venster.

    Als je het loslaat verschijnt onderstaand venster.



    Vul het in zoals je hierboven ziet.
    Bij Applies to kies je voor other, want de bom moet niet veranderen, de bal (dus het andere object van de botsing) moet veranderen in een explosie.
    En bij change into kies je voor explosie. Klik dan op OK.

    Klik op het wekker-icoontje dat hoort bij het tabblad Main2.
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je de wekker-gegevens in kunt voeren.
    Vul achter number of steps in: 30 (een seconde is 30 steps)
    Klik op het pull-down-icoontje achter in alarm no en kies daar Alarm2 uit. Bij Applies to kies je niet voor self en ook niet voor other, maar voor object en kies dan bijv. het object tijdcontrole uit.
    De bom kan er niet voor zorgen dat de wekker afloopt want op dat moment is de bom verdwenen Klik dan op OK, klik nog eens op OK in het object-venster van de bom, en sluit het af.

  6. Nu moeten we nog aangeven wat er gebeurt als die wekker afloopt. Dat doen we op de volgende manier:
    Dubbelklik links in het Gamemaker-venster op tijdcontrole onder Objects. Dan verschijnt het bijbehorende objectvenster.
    Klik op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Alarm. In het bijbehorende pull-down-menu kies je Alarm2 uit. Het EventSelector-venster verdwijnt, en het alarm2-icoontje wordt in het events-venster geplaatst.
    Sleep het destroy-icoontje naar het actions-venster.
    Er verschijnt een venster waarin je kunt aangeven welk object moet verdwijnen, kies niet voor self, ook niet voor other, maar voor object, en kies explosie uit. Dan verdwijnt de explosie na een seconde.
    Klik dan op OK

    Twee seconden later moet er een nieuwe rode bal verschijnen. Daarom moet er nu weer een wekker worden gezet die na twee seconden afloopt.

    Sleep op het wekker-icoontje naar het actions-venster.
    In het venster met de wekker-gegevens vul je achter number of steps in: 60 en bij in alarm no kies je Alarm3 uit.. Daarna klik je op OK

  7. Nu moeten we nog aangeven wat er gebeurt als die wekker afloopt. Dat doen we op de volgende manier:
    Klik op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Alarm. In het bijbehorende pull-down-menu kies je Alarm3 uit.
    Vervolgens sleep je het create-an-instance-of-an-object-with-a-motion-icoontje (van het tabblad Main1, zie het icoontje in de figuur hieronder) naar het actions-venster.
    Zodra je het loslaat verschijnt onderstaand venster.



    Kies bij object voor rodebal, vul achter x 350 in, en achter y 300.
    Vul bij speed 4 in, en bij direction 45 + random(90). Klik dan op OK.


  3.3. Extra ballen

We gaan nu voor een bonus zorgen. Als de speler vijf punten heeft gehaald dan krijgt hij een extra blauwe bal.
Dat moet natuurlijk gebeuren op het moment dat hij er een punt bij krijgt, want op dat moment kan de score 5 worden. Hij krijgt er een punt bij als hij op een blauwe bal klikt, we moeten dat dus invoeren bij het object blauwebal, en bij het event dat hoort bij een muisklik: Left Button.

  1. Dubbelklik links in het Gamemaker-venster op blauwebal onder Objects. Dan verschijnt het objectvenster voor de blauwe bal.
    Klik in het events-venster op Left Button. Dan verschijnt er een venster, dat er nog niet helemaal zoals onderstaande figuur uitziet. De laatste vier icoontjes (er is een ellips omheen getekend) in het actions-venster moeten we nog toevoegen.



    Als expression voer je score = 5 in, en klik dan op OK.
    Dan sleep je een startblok (van het tabblad Control) naar het actions-venster.
    Vervolgens sleep je het icoontje met de lamp (van het tabblad Main1, zie het icoontje in de figuur hieronder) naar het actions-venster.

    Zodra je het loslaat verschijnt onderstaand venster.



    Kies bij object voor blauwebal, vul achter x 100 in, en achter y ook 100, klik dan op OK.
    Tenslotte sleep je een eindblok (van het tabblad Control) naar het actions-venster.


    De laatste vier icoontjes in het actions-venster hebben tot gevolg dat, als de score 5 is er een blauwe bal wordt toegevoegd op de plaats met coördinaten (100,100) en dat is ergens in het linker gedeelte van het speelveld.

  3.4. Snelheid verhogen na een halve minuut

We gaan er nu voor zorgen dat de snelheid van de blauwe ballen na een halve minuut wordt verhoogd.
Er is geen icoontje voor het verhogen van de snelheid, daarom moeten we dat zelf programmeren.
In Gamemaker kun je dus ook zelf dingen programmeren, de programmeertaal wordt in het programma GML (Game Maker Language) genoemd, maar het is eigenlijk gewoon C++
Een stukje programma noem je een script.
De opdrachten in zo'n script moeten tussen accolades staan: aan het begin van het script moet een begin-accolade staan, en aan het eind een eind-accolade.
En verder moet elke opdracht worden afgesloten met een puntkomma.

Een script ziet er dus als volgt uit:

{
      <opdracht1>;
      <opdracht2>;
      ...
}

In zo'n script kun je ook variabelen gebruiken, dat zijn namen van geheugenplaatsen waarmee dingen worden onthouden.
Er zijn een heel stel voorgedefinieerde variabelen, waarvan je gebruik kunt maken.
Eén daarvan hebben we al een paar keer gebruikt, namelijk de variabele score.
Maar ook de snelheden van de objecten worden vastgelegd m.b.v. variabelen, en wel met de variabele speed.
De snelheid van een blauwe bal wordt vastgelegd in de variabele blauwebal.speed,
de snelheid van een rode bal wordt vastgelegd m.b.v. rodebal.speed,
en de snelheid van de shovel m.b.v. shovel.speed
Als je bijv. wilt aangeven dat de snelheid van de shovel 10 moet worden dan kun je dat doen m.b.v. de opdracht:
shovel.speed = 10;

Als je bijv. wilt aangeven dat de snelheid van de rode bal met 3 verhoogd moet worden dan kun je dat doen m.b.v. de opdracht:
rodebal.speed = rodebal.speed + 3;
of m.b.v. de opdracht: rodebal.speed + = 3;
Dat betekent dus: de nieuwe snelheid wordt de oude snelheid + 3

Als je bijv. wilt aangeven dat de snelheid van de blauwe bal met 1 % verhoogd moet worden dan kun je dat doen m.b.v. de opdracht:
blauwe.speed = blauwebal.speed * 1.01;
Dat betekent dus dat de oude snelheid vermenigvuldigd moet worden met 1.01 en dat dat de nieuwe snelheid wordt.
En als je iets vermenigvuldigt met 1.01 dan komt er 1 % bij.
Wil je dat er bijvoorbeeld 3 % bij komt dan moet je het vermenigvuldigen met 1.03

Goenoeg theorie, nu de praktijk.
We willen dat de snelheid van de blauwe ballen na een halve minuut wordt verhoogd met 2. Dan moeten we een wekker instellen die na een halve minuut afloopt, en als hij afloopt moet de snelheid verhoogd worden.
Die wekker stellen we maar weer in bij het object tijdcontrole.

  1. Dubbelklik links in het Gamemaker-venster op tijdcontrole onder Objects. Dan verschijnt het objectvenster voor de tijdcontrole.
    Klik in het events-venster op Create, dan zie je in het actionsvenster twee icoontjes: Alarm0 (die zorgt er voor dat het spel na twee minuten stopt) en Show Info (die zorgt er voor dat de informatie verschijnt als het spel gestart wordt).
    We gaan er voor zorgen dat er bij de start van het spel nog een wekker gezet wordt, en die moet na een halve minuut aflopen want dan moet de snelheid van de blauwe ballen verhoogd worden.
    Klik op het wekker-icoontje dat hoort bij het tabblad Main2.
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je de wekker-gegevens in kunt voeren.
    Vul achter number of steps in: 900
    (een halve minuut is 30 seconden, en per sec. zijn er 30 steps, dus een halve minuut is 30 x 30 = 900 steps)
    Klik op het pull-down-icoontje achter in alarm no en kies daar Alarm1 uit. Want het is de tweede wekker die gezet wordt (de eerste is Alarm0 en de tweede Alarm1)
    Klik dan op OK

  2. Nu moeten we nog aangeven wat er gebeurt als de tweede wekker afloopt. Dat doen we op de volgende manier:
    Klik in het midden van het object-venster op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Alarm. In het bijbehorende pull-down-menu kies je Alarm1 uit. Het EventSelector-venster verdwijnt, en het alarm0-icoontje wordt in het events-venster geplaatst.
    Klik op het Code-icoontje dat hoort bij het tabblad Control. (zie bij de rode pijl in de figuur hier onder)
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je de code (het script) in kunt voeren.
    Vul in: { blauwebal.speed = blauwebal.speed + 2; }

    Klik dan op de groene V
    in de linker bovenhoek van het script-venster.
    Dan zal, als de wekker afloopt, de snelheid van de blauwe ballen met 2 verhoogd worden:



  3. Zoals we het nu gemaakt hebben wordt de snelheid na 30 sec. verhoogd. Dat gebeurt één keer.
    We kunnen het gemakkelijk zo maken dat de snelheid elke 30 sec. verhoogd wordt, dus ook na 60 sec en na 90 sec. enz.
    Dan moeten we er voor zorgen dat als de wekker na 30 sec. afloopt er direkt weer een nieuwe wekker wordt gezet.

    Zorg er voor dat je het tijdcontrole-venster weer in beeld hebt.
    Klik in het events-venster op Alarm1, dan krijg je bovenstaand venster weer in beeld.
    In het actions-venster staat het code-icoontje, dat er voor zorgt dat de snelheid verhoogd wordt als Alarm1 afloopt.
    We gaan er voor zorgen dat er daarna weer een nieuwe wekker wordt gezet.
    Klik op het wekker-icoontje dat hoort bij het tabblad Main2. en sleep dat icoontje naar het actions-venster.
    In het venster waarin je de wekker-gegevens in kunt voeren vul je achter number of steps in: 900 en je zorgt er voor dat achter in alarm no en weer Alarm1 staat.
    Dezelfde wekker die net afgelopen is wordt dus direct weer gezet.
    Klik dan op OK

    Je hoeft niet meer aan te geven wat er moet gebeuren als die wekker afloopt, want dat is al gebeurd.
    Als je bij de events op Alarm1 klikt zie je wat er gebeurt: de snelheid wordt verhoogd en de wekker wordt opnieuw gezet.
    En dat gebeurt de eerste keer, dus na 30 sec. Dan wordt de snelheid met 2 verhoogd, dus die wordt dan 7, en de wekker wordt opniew gezet.
    Maar het gebeurt ook de tweede keer, dus na 60 sec. Dan wordt de snelheid weer met 2 verhoogd, dus die wordt dan 9, en de wekker wordt opniew gezet.
    En ook de derde keer, dus na 90 sec. Dan wordt de snelheid weer met 2 verhoogd, dus die wordt dan 11, en de wekker wordt opniew gezet, enz, enz.

  4. Als je het hebt uitgeprobeerd heb je misschien gemerkt dat, als je op een blauwe bal geklikt hebt, de snelheid ineens weer lager is.
    Dat komt door de actions nadat er op een blauwe bal geklikt is, dan gebeuren er drie of vier dingen (zie de linker figuur hieronder):
    • er klinkt een geluid
    • de score wordt met één verhoogd
    • de richting en snelheid van de bal wordt opnieuw vastgelegd
    • als de score 5 wordt wordt er een nieuwe blauwe bal in het spel gebracht
         

    De richting en snelheid van de bal wordt opnieuw vastgelegd, dat is vastgelegd zoals in de rechter figuur hierboven.
    Daar staat achter speed 5, dus na een klik op een blauwe bal wordt de snelheid weer 5, terwijl de snelheid ervoor misschien wel 7 of 9 of 11 was.
    Als je wilt dat hij verder gaat met dezelfde snelheid als hij ervoor had dan moet je dat veranderen.

    Zorg er voor dat je het objectvenster van blauwebal in beeld hebt. Klik in het events-venster op LeftButton, dan krijg je bovenstaand venster (linker figuur) in beeld.
    In het actions-venster dubbelklik je op het move-icoontje, dan krijg je bovenstaand venster (rechter figuur) in beeld.
    Vul achter speed in: blauwebal.speed en klik dan op OK
    Dat heeft tot gevolg dat de snelheid na een klik op een blauwe bal dezelfde is als de snelheid ervoor.

  3.5. Snelheid continu verhogen

We gaan er nu voor zorgen dat de snelheid van de rode bal steeds iets groter wordt. Natuurlijk moet er elke keer maar een heel klein beetje bij de snelheid komen, anders wordt de snelheid op den duur veel te hoog.
We zouden dat netzo als in de vorige paragraaf met een wekker kunnen doen. En dan zouden we die wekker bijvoorbeeld elke seconde kunnen laten aflopen, en dan de snelheid iets verhogen.
Maar het kan ook op een andere manier, zonder wekker.
Als je wilt dat iets continu gebeurt dan kun je dat handig regelen m.b.v. het event Step. De actie die je bij dat event invoert wordt bij elke step uitgevoerd, dus continu (30 keer per sec. als speed op 30 staat).

  1. Zorg er voor dat je het objectvenster van rodebal in beeld hebt.
    Klik op Add Event, en kies in het EventSelector-venster Step uit, en in het daarna verschijnend pull-down menu kies je weer Step uit.
    Het EventSelector-venster verdwijnt, en het step-icoontje wordt in het events-venster geplaatst.
    Klik op het Code-icoontje dat hoort bij het tabblad Control.
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je de code (het script) in kunt voeren.
    Vul in: { rodebal.speed = rodebal.speed * 1.0002; }

    Klik dan op de groene V in de linker bovenhoek van het script-venster.
    Dan zal bij elke step de snelheid van de rode bal met 0.02 % worden verhoogd.

  3.6. Puntenaftrek afhankelijk van het aantal botsingen

Het is nu zo dat er bij een botsing van de rode bal met de shovel één punt van de score wordt afgetrokken. We gaan er nu voor zorgen dat, als er meer dan vijf botsingen geweest zijn, er per botsing twee punten worden afgetrokken.
We moeten er dan wel voor zorgen dat het aantal botsingen geteld wordt.
We moeten dan een variabele hebben waarmee het aantal botsingen wordt vastgelegd.
Die variabele geven we de naam gebotst
Nu is een variabele meestal gekoppeld aan een object, bijvoorbeeld de variabele waarmee de snelheid van de rode bal wordt vastgelegd wordt rodebal.speed genoemd.
Als je een variabele hebt die niet bij een speciaal object hoort dan noem je dat een globale variabele, en dat geef je aan door het woord global voor de naam van de variabele te zetten met een punt ertussen.
Daarom wordt de naam van onze variabele global.gebotst

Als het spel begint is er nog niet gebotst, dus bij de start heeft de variabele global.gebotst de waarde 0. Die waarde heeft het niet automatisch, daar moeten we via het programma voor zorgen. En dat doen we door aan het Create-event van een object (bijvoorbeeld van de rode bal) een Code-action te koppelen. En als code moet dan worden opgenomen: global.gebotst = 0

Verder moet, als er een botsing is tussen rode bal en shovel, het aantal botsingen met één worden vermeerderd. Dat doe je door aan het Collision-event van de rode bal een Code-action te koppelen. En als code moet dan worden opgenomen: global.gebotst = global.gebotst + 1

En tenslotte moet de score-action, die gekoppeld is aan het Collision-event van de rode bal (en waarbij de score met één verminderd wordt) worden gewijzigd.
Als het aantal botsingen meer dan vijf was moet de score met twee worden verminderd en anders met één.
Dat moet met een code-action. En de code is dan:

if (global.gebotst>5)
   { score = score - 2; }
else
   { score = score - 1; }

En dat doe je op de volgende manier:

  1. Zorg er voor dat je het objectvenster van rodebal in beeld hebt.
    Klik in het event-venster op Create, dan zie je in het actions-venster het move-icoontje.
    Daar gaan we een actie aan toevoegen, namelijk de code waardoor het aantal botsingen op nul gesteld wordt.
    Klik op het Code-icoontje dat hoort bij het tabblad Control.
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je de code (het script) in kunt voeren.
    Vul in: { global.gebotst = 0; }
    Klik dan op de groene V
    in de linker bovenhoek van het script-venster.

  2. Zorg er voor dat je het objectvenster van rodebal in beeld hebt.
    Klik in het event-venster op Collision met shovel, dan zie je in het actions-venster de bijbehorende acties.
    Daar staat als eerste het score-icoontje met de tekst: Set the score relative to -1
    Dat icoontje moet verwijderd worden, want de aftrek moet één of twee punten zijn.
    Klik rechts op dat score-icoontje, en kies in het snelmenu voor Delete. Dan wordt het verwijderd.

    In de plaats daarvan moet er een script worden ingevoerd.
    Klik dus op het Code-icoontje dat hoort bij het tabblad Control.
    Sleep dat icoontje naar het actions-venster, naar de bovenste plaats.
    Er verschijnt een venster waarin je de code (het script) in kunt voeren.



    Vul in:
    {
       global.gebotst = global.gebotst + 1;
       if (global.gebotst>5)
          { score = score - 2; }
       else
          { score = score - 1; }
    }

    Klik dan op de groene V
    in de linker bovenhoek van het script-venster.
    En speel het spel. Kijk of het gewenste resultaat is bereikt.

Zoals je hebt gemerkt is de variabele gebotst alleen gebruikt bij het object rodebal. Dus de variabele kan speciaal aan dat object worden gekoppeld. En dus kun je overal het woord global voor de naam van de variabele weglaten.
Je mag de naam veranderen in rodebal.gebotst maar het woord rodebal ervoor mag je ook weglaten, het programma koppelt de variabele automatisch aan de rode bal.

  3.7. Een tweede level

Je kunt het spel zo maken dat als je een aantal punten gehaald hebt je naar een hoger level springt.
Je moet dan eerst een tweede room maken.

Die mag er net zo uitzien als de eerste, maar hij kan er ook heel anders uitzien.
Er kunnen ook andere objecten in voorkomen.
En dan kun je er voor zorgen dat het eerste speelveld op een bepaald moment wordt verlaten, en dat het tweede speelveld verschijnt.
Er is een action-icoontje voor het overschakelen naar een hoger level, namelijk

Dit gaan we demonstreren in de volgende opdrachten.
  1. Klik op Add, en klik dan op Add Room
    Zorg er voor dat dit speelveld er als volgt uitziet:




    En zorg er voor dat de rode bal in het begin niet beweegt. Maak het zo dat je de rode bal met behulp van de pijltoetsen kunt bewegen.
    Dan kun je het object rodebal uit het eerste room niet gebruiken.
    Maak daarom eerst een nieuw object. Noem dat rodebal2. En dan kun je actions aan events koppelen. Je weet nu vast wel hoe dat moet.
    Zorg er voor dat je een punt krijgt als de rode bal tegen een blauwe bal botst.

  2. Nu gaan we terug naar room0. En we gaan er voor zorgen dat als er tien punten gehaald zijn naar room1 wort gesprongen.
    Die actie moet bij een object worden ingevoerd. Je zou daar één van de bestaande objecten voor kunnen gebruiken, maar je kunt er ook een nieuw object voor in het leven roepen.
    Wij kiezen voor het laatste, en maken daarvoor een nieuw object dat we levelcontrole noemen.

    Klik op Add, en klik dan op Add Object
    Als naam van het object voer je in: levelcontrole

    In het venstertje voor de bijbehorende sprite staat, <nosprite>, dat laten we zo want er hoort geen figuur bij dit object.
    Zet geen vinkje voor Visible en ook geen vinkje voor Solid

  3. Klik in het midden van het object-venster nu op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Step en klik in het pull-down menu dat verschijnt weer voor Step
    Het EventSelector-venster verdwijnt, en het step-icoontje wordt in het events-venster geplaatst.

  4. Klik op het If-score-has-a-value-icoontje dat hoort bij het tabblad Score:
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster (zie de figuur hieronder) waarin je aan kunt geven bij hoeveel punten er iets moet gebeuren.



    Vul bij value in: 10
    Klik op het icoontje achter operation, en kies daar larger than uit.
    Klik dan op OK

    Dan gebeurt er iets als de score groter dan tien is.
    En wat er dan gebeurt moeten we eronder aangeven.
    Sleep een startblok naar het actions-venster.
    Sleep vervolgens het info-icoontje naar het actions-venster.
    Vul als boodschap in: Je gaat naar level twee !, en klik op OK

    Sleep dan het next-room-icoontje naar het actions-venster:
    En sleep tenslotte een eindblok naar het actions-venster.
    En klaar is kees ! Probeer het maar uit.