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

Hoofdstuk 2. Gamemaker

  2.1. Reageren op pijltoetsen

Het spel uit hoofdstuk 1 is nog niet af. We hebben alleen nog maar blauwe ballen gebruikt.
We gaan nu de rode bal toevoegen, en de shovel, en we gaan de ruimte in tweeën verdelen.

We gaan eerst de objecten shovel en rodebal aanmaken.

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

    Dan voer je in wat de bijbehorende sprite is, klik op het icoontje achter sprite en kies shovel uit.
    Zet geen vinkje voor Solid


  2. Klik in het midden van het object-venster nu op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Key Press.



    Er verschijnt een pull-down menu, waarin je kunt kiezen uit <Left>, <Right>, <Up>, enz. Klik op <Left>
    Het EventSelector-venster verdwijnt, en het PressLeft-icoontje wordt in het events-venster geplaatst.

  3. Dan kun je aangeven wat er met de shovel moet gebeuren als je op de pijl naar links drukt.
    Als je op de pijl naar links drukt moet de shovel naar links bewegen. Daarvoor gebruiken we weer het move-icoontje:

    Sleep dat icoontje naar het het actions-venster. Als je de muisknop loslaat verschijnt onderstaand venster.



    Klik op de richting naar links. Dan zal de shovel naar links bewegen.
    Achter speed (= snelheid) vul je 4 in. Klik dan op OK

  4. Klik in het midden van het object-venster weer op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Key Press. en klik in het pull-down menu dat verschijnt op <Right>
    Het EventSelector-venster verdwijnt, en het PressRight-icoontje wordt in het events-venster geplaatst.

    Sleep het move-icoontje naar het het actions-venster. Klik in het venster dat dan verschijnt op de richting naar rechts. Dan zal de shovel naar rechts bewegen als je op de pijl naar rechts drukt.
    Achter speed (= snelheid) vul je 4 in. Klik dan op OK

  5. Nu gaan we nog aangeven wat er gebeurt als de shovel tegen een muur botst.
    In het midden van het object-venster klik je op Add Event
    Het EventSelector-venster verschijnt, klik hierin op

    Er verschijnt een venstertje naast met alle objecten, klik op muur. Dan kun je aangeven wat er gebeurt als de shovel tegen een muur botst.
    Het EventSelector-venster verdwijnt, en het collision-icoontje wordt in het events-venster geplaatst.

  6. Het is de bedoeling dat de shovel stil blijft staan als hij tegen de muur botst.
    Dat kunnen we ook met het move-icoontje aangeven:

    Sleep dat icoontje naar het het actions-venster. Als je de muisknop loslaat verschijnt het venster waarin je de richting en de snelheid aan kunt geven.
    Klik bij directions op het middelste blokje. Dan zal de shovel stil blijven staan.
    Achter speed (= snelheid) vul je 0 in. Klik dan op OK
    En sluit het object-venster af.

  2.2. Nog meer richtingen

Nu gaan we met de rode bal aan de slag. Die beweegt door de kamer. Als hij tegen een muur botst moet hij terug kaatsen. En als hij tegen de shovel botst gaat er een punt van de score af en gaat de bal terug naat de startpositie.
  1. Klik op Add, en klik dan op Add Object
    Als naam van het object voer je in: rodebal
    Klik op het icoontje achter sprite en kies rodebal uit.
    Zet geen vinkje voor Solid


  2. Klik daarna in het midden van het object-venster op Add Event
    Klik op Create. Dan kun je aangeven wat er bij de start met de rode bal moet gebeuren.
    Het EventSelector-venster verdwijnt, en het create-icoontje wordt in het events-venster geplaatst.

  3. Nu gaan we aangeven wat er bij de start met de rode bal moet gebeuren.
    We gebruiken nu voor de verandering eens het blauwe move-icoontje:

    Sleep dat icoontje naar het actions-venster. Als je de muisknop loslaat verschijnt onderstaand venster.



    Je kunt de richting nu aangeven met een hoek in graden. 90° is naar boven, 180° is naar links, 0° is naar rechts, 270° is naar beneden.
    Je kunt bij de richting ook bijvoorbeeld random(90) invullen. Dan wordt het een willekeurige hoek tussen 0° 90°.

    Vul 45 + random(90) in. Dan vertrekt de bal onder een hoek die tussen de 45° en 135° ligt.
    Vul bij speed 4 in.
    Klik dan op OK


  4. Nu gaan we aangeven wat er gebeurt als de rode bal tegen een muur botst.
    Klik op Add Event
    Het EventSelector-venster verschijnt, klik hierin op

    Er verschijnt een venstertje naast met alle objecten, klik op muur. Dan kun je aangeven wat er gebeurt als de rode bal tegen een muur botst.
    Het EventSelector-venster verdwijnt, en het collision-icoontje wordt in het events-venster geplaatst.

    Klik vervolgens op:
    Sleep dat icoontje naar het actions-venster.
    Als je de muisknop loslaat verschijnt er een venster.
    In dat venster hoef je niets te veranderen, klik op OK

  5. Tenslotte gaan we aangeven wat er gebeurt als de rode bal tegen de shovel botst: dan gaat er een punt van de score af, de bal gaat naar de beginpositie terug en gaat weer bewegen.
    Klik op Add Event
    Het EventSelector-venster verschijnt, klik hierin op

    Er verschijnt een venstertje naast met alle objecten, klik op shovel. Dan kun je aangeven wat er gebeurt als de rode bal tegen de shovel botst.
    Het EventSelector-venster verdwijnt, en het collision-icoontje wordt in het events-venster geplaatst.

  6. Klik vervolgens op op het score-icoontje dat hoort bij het tabblad Score.
    Sleep dat icoontje naar het actions-venster.
    Als je de muisknop loslaat verschijnt het score-venster.
    Achter new scorevul je in dat venster -1 in.
    En je zet een vinkje voor Relative.
    Dat heeft dan tot gevolg dat er één punt van het puntentotaal wordt afgetrokken. Klik dan op OK

  7. Klik dan nog op het jump-to-the-start-position-icoontje dat hoort bij het tabblad Move:
    Sleep dat icoontje naar het actions-venster.

    In dat venster hoef je niets te veranderen, klik op OK

  8. Klik dan nog op
    Sleep dat icoontje naar het actions-venster.
    Als nieuwe beweegrichting vul je 45 + random(90) in. En vul bij speed 4 in.
    Klik dan op OK


  2.3. Een sprite vergroten

De shovel is heel klein, daarom zal de rode bal er niet zo gauw tegen aan botsen.
Om het wat moeilijker te maken gaan we de shovel wat groter maken.
Dat doe je op de volgende manier:

  1. Dubbelklik in het linker gedeelte van het Gamemaker-venster onder Sprites op Shovel (zie de pijl in de linker figuur hieronder), en klik in het venster dat verschijnt op Edit Sprite

         

    Klik dan op Transform en daarna op Resize Canvas.
    In het venster, waarin je de nieuwe grootte kunt aangeven, wijzig je 100% in 200%,
    en dan wordt het kader om de figuur twee keer zo groot (de figuur zelf blijft even groot). Klik dan op OK
    Klik nog eens op Transform en daarna op Scale.
    Wijzig ook in dit venster 100% in 200%,
    en dan wordt de figuur zelf twee keer zo groot. Klik dan op OK en sluit het sprite-venster. Als gevraagd wordt of je de wijzigingen wilt opslaan klik je op Yes.

  2.4. De ruimte (room) aanpassen.

We moeten de ruimte, waarin het spel gespeeld wordt (room), nog aanpassen.
We plaatsen een tussenmuur, en in het rechter gedeelte plaatsen we de shovel en een rode bal.
  1. Dubbelklik links in het Gamemaker-venster op room0 onder Rooms (zie pijl in de figuur hieronder).



    Klik op het tabblad Objects. En klik op het icoontje voor een pull-down menu achter het vensterje voor het object.
    In het pull-down menu, dat verschijnt, kies je muur uit.
    Dan kun je stukjes muur plaatsen.
    Klik op de hokjes waar de tussenmuur moet komen. Bij elke klik verschijnt een stukje muur in het hokje waarin je klikt.

  2. Nu gaan we de rode bal en de shovel in het spel brengen.
    Klik op het icoontje voor een pull-down menu bij object, en kies rodebal uit.
    Klik ergens in het rechter gedeelte van de kamer: er verschijnt een rode bal op die plaats.

  3. Klik op het icoontje voor een pull-down menu bij object, en kies shovel uit.
    Klik ergens in het rechter gedeelte van de kamer: de shovel verschijnt op die plaats.

  4. Klik nu op het groene V-tje in de linker bovenhoek van het room-venster, dan worden de nieuwe room-gegevens vastgelegd, en het room-venster wordt afgesloten.
    Klik op de diskette in de werkbalk, dan wordt het gewijzigde spel opgeslagen.
    En ga het spel dan spelen door op het groene driehoekje in de werkbalk te klikken.

  2.5. Score niet negatief.

Als je het spel hebt gespeeld dan heb je waarschijnlijk gemerkt dat de score ook negatief kan worden.
Als je even een poosje niets doet met de muis en met de pijltoetsen dan zal de rode bal waarschijnlijk regelmatig tegen de shovel botsen, en elke keer gaat er dan een punt af. Dan zit je zomaar op een negatieve score.
Je kunt er voor zorgen dat de score niet negatief wordt. Dat doe je op de volgende manier:
  1. Dubbelklik links in het Gamemaker-venster op rodebal onder Objects. Dan verschijnt het objectvenster voor de rode bal.
    Klik in het events-venster op botsing met shovel, dan zie je onderstaand venster.



  2. Klik dan op het vraag-icoontje dat hoort bij het tabblad Control:
    Sleep dat icoontje naar het actions-venster.

    Onderstaand venster verschijnt, vul dan in het expression-invulvenster score < 0 in, en klik dan op OK



    Dan kun je aangeven wat er moet gebeuren als de score < 0 is, dus als de score negatief is geworden.

  3. Je wilt niet dat de score negatief wordt. Dus als er een punt afgaat door een botsing van de rode bal met de shovel, dan zou de score negatief kunnen worden, maar als dat het geval is dan moet de score 0 blijven.
    Dat kunnen we aangeven met behulp van het score-icoontje.
    Klik dus op op het score-icoontje dat hoort bij het tabblad Score:
    Sleep dat icoontje naar het actions-venster.
    Als je de muisknop loslaat verschijnt het score-venster.
    Achter new score vul je in dat venster 0 in.
    En je zet geen vinkje voor Relative. Klik dan op OK




  4. Voor de zekerheid kun je de laatste score-opdracht nog even tussen blokjes zetten (zie de figuur hierboven).
    Sleep een start-blok naar het actions-venster, en sleep een eind-blok naar het actions-venster.
    En zorg er voor dat het startblok voor het nulscore-icoon staat. Dat doe je door het start-blok naar de ruimte tussen het vraag-icoon en het nulscore-icoon te slepen en daar los te laten.

    Start- en eindblokken zijn belangrijk als er nog andere opdrachten volgen, of als er meer dan één opdracht uitgevoerd moet worden als de vraag met ja beantwoord wordt.

  2.6. Na twee minuten stoppen.

Het spel stopt nog niet automatisch. Als we het spel willen stoppen dan moeten we op Esc drukken of op de sluitknop van het venster.
Op die manier kun je de scores niet goed vergelijken. Alleen als er precies even lang gespeeld is zegt de score iets. Daarom gaan we er nu voor zorgen dat het spel na twee minuten automatisch stopt.
Daarvoor gebruiken we een wekker, in GameMaker wordt dat een alarm genoemd.
Die wekker moet bij de start op twee minuten worden gezet. En als hij afloopt moet het spel stoppen.
Wat er bij de start moet gebeuren kun je invoeren bij het Create-event. Elk object heeft een create-event, bij welke we het invoeren maakt niets uit. We zouden het bijvoorbeeld kunnen doen bij het Create-event van de rode bal, maar net zo goed bij het Create-event van de blauwe bal. We kunnen er ook een speciaal object bij maken, dat alleen dient voor de tijdcontrole. En dat gaan we doen.
  1. Klik op Add, en klik dan op Add Object
    Als naam van het object voer je in: tijdcontrole

    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

  2. Klik in het midden van het object-venster nu op Add Event
    Het EventSelector-venster verschijnt.
    Klik op Create. Het EventSelector-venster verdwijnt, en het create-icoontje wordt in het events-venster geplaatst.

  3. Klik op het wekker-icoontje dat hoort bij het tabblad Main2. (zie bij de rode pijl in de figuur hier onder.
    Sleep dat icoontje naar het actions-venster.
    Onderstaand venster verschijnt. De wekker wordt aangegeven met Alarm 0, je kunt namelijk acht wekkers plaatsen en de eerste wordt Alarm0 genoemd.
    We moeten aangeven wanneer de wekker afloopt, dat kunnen we aangeven bij number of steps. Misschien weet je nog dat we bij het maken van de ruimte (room 0) onder settings aan moesten geven wat de tekensnelheid (speed) was, en dat we toen 30 hebben ingevoerd. Dan maakt de computer 30 steps per seconde. En twee minuten is dus 120 x 30 = 3600 steps.
    Vul daarom achter number of steps in: 3600
    Klik dan op OK




  4. Nu moeten we nog aangeven wat er gebeurt als de 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 Alarm0 uit. Het EventSelector-venster verdwijnt, en het alarm0-icoontje wordt in het events-venster geplaatst.

  5. Klik op het info-icoontje dat hoort bij het tabblad Main2. (zie bij de rode pijl in de figuur hier onder)
    Sleep dat icoontje naar het actions-venster.
    Er verschijnt een venster waarin je in kunt voeren welke boodschap er moet verschijnen.
    Vul in: De twee minuten zijn om#Het spel is afgelopen !
    Klik dan op OK
    Dan zal er, als de wekker afloopt, een venstertje verschijnen waarin staat:

    De twee minuten zijn om
    Het spel is afgelopen !

    (het #-teken zorgt er voor dat wat daar achter staat op een nieuwe regel wordt afgedrukt)



  6. Klik vervolgens op het toptien-icoontje dat hoort bij het tabblad Score:
    Sleep dat icoontje naar het actions-venster.
    In het venster dat verschijnt kun je de kleuren en het lettertype, waarmee de toptien wordt afgedrukt, instellen.
    De standaardwaarden zijn mooi genoeg, dus klik op OK
    Dit heeft tot gevolg dat er, als het spel is afgelopen, een lijstje wordt getoond van de tien met de hoogste score tot dan toe.
    En als degene, die het spel gespeeld heeft, ook bij die tien besten hoort dan kan hij of zij zijn naam invullen en dan staat die naam er vanaf dat moment ook bij.



  7. Klik tenslotte op het stoppen-icoontje dat hoort bij het tabblad Main2. (zie bij de rode pijl in de tweede figuur hierboven)
    Sleep dat icoontje naar het actions-venster.
    Klik dan op OK

    Dat heeft tot gevolg dat het spel, nadat de toptien in beeld zijn geweest, automatisch wordt afgesloten.

  8. We moeten de ruimte, waarin het spel gespeeld wordt (room), ook nog aanpassen, anders werkt de wekker nog niet. Het object, waarin die wekker een rol speelt (al zie je dat object niet) moet nog in het speelveld worden geplaatst.
    Dubbelklik links in het Gamemaker-venster op room0 onder Rooms.
    Klik op het tabblad Objects. En klik op het icoontje voor een pull-down menu achter het vensterje voor het object.
    In het pull-down menu kies je tijdcontrole uit.

    Klik ergens in het speelveld. Dan verschijnt daar een icoontje met een vraagteken.
    Als het spel gespeeld wordt zie je dat niet maar het heeft wel tot gevolg dat de tijdcontrole werkt.

    Klik nu op het groene V-tje in de linker bovenhoek van het room-venster, dan worden de nieuwe room-gegevens vastgelegd, en het room-venster wordt afgesloten.
    Klik op de diskette in de werkbalk, dan wordt het gewijzigde spel opgeslagen.
    En ga het spel dan spelen door op het groene driehoekje in de werkbalk te klikken.

  2.7. Een Informatie-scherm.

Je kunt er ook voor zorgen dat de speler informatie over het spel op kan vragen.
Dat informatie-venster kan worden opgeroepen door op F1 te drukken. Door een druk op Escape verdwijnt het weer.
We leggen hieronder uit hoe je informatie kunt toevoegen.

  1. Dubbelklik op Game Information (zie bij de rode pijl hier onder), dan verschijnt er een venster waarin je de informatie in kunt voeren.



    Voer het volgende in:

    Je moet proberen met de muis te klikken op een blauwe bal.
    Elke keer als je dat lukt krijg je een punt erbij.

    Je moet proberen ervoor te zorgen dat de rode bal niet tegen de shovel botst.
    Want elke keer als dat gebeurt gaat er een punt af.

    Je kunt de shovel naar links en rechts bewegen door op de pijl naar links of rechts te drukken.

    Na twee minuten is het spel afgelopen.

    Je naam

    Klik dan op het groene V-tje in de linker bovenhoek van het venster, dan worden de info-gegevens vastgelegd, en het venster wordt afgesloten.

    Als je het spel nu gaat spelen dan krijg je de informatie te zien als je op F1 drukt.
    En als je daarna op Esc drukt kun je weer verder met het spel.

    Het is misschien beter dat de informatie, als het spel begint, direkt op het scherm verschijnt.
    Want de speler heeft misschien niet in de gaten dat hij met een druk op F1 de informatie kan oproepen.
    Je kunt voor zorgen dat de informatie bij de start op het scherm verschijnt als je het info-scherm koppelt aan het create-event van een object. Je kunt het bijvoorbeeld koppelen aan het object tijdcontrole. Dat kun je op de volgende manier doen:

  2. 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 onderstaand venster.



    Klik dan op het info-icoontje dat hoort bij het tabblad Main2 (zie bij de rode pijl in de figuur hier boven)
    Sleep dat icoontje naar het actions-venster en klik dan op OK