Game Maker: Avonturier en skelet
Wat is ‘avonturier en skelet’? Avonturier en skelet is een eenvoudig kat en muis spelletje, waarbij de avonturier het skelet moet vinden. Het spel speelt zich af in een raster van 7 bij 7 waarin beide poppetjes staan:
Iedere beurt zetten beide poppetjes 1 stap in een richting naar keuze. Als ze op hetzelfde vakje belanden, wint de avonturier. Jullie gaan dit spel eerst bouwen om tegen de computer te spelen en vervolgens gaan jullie het omzetten met wat hulp van ons tot een online spelletje. Zodat je tegen elkaar kunt spelen over het netwerk. In deze opdracht leren jullie nog een aantal nieuwe dingen over Game Maker zoals het gebruik van tiles en extensies .
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Aan de slag! Voor we kunnen programmeren, hebben we eerst weer een aantal sprites nodig. Om het makkelijker te maken, hebben we voor deze les een gmk voorbereid met alle sprites er al in: Download sprites.gmk Maak vervolgens de volgende objecten aan met de juiste sprites en stel in of de objecten solid moeten zijn of niet (!): Object
Sprite
Solid
obj_avonturier
spr_avonturier_omlaag
Nee
obj_skelet
spr_skelet
Nee
obj_wall
spr_wall
Ja
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Spelkamer indelen Om te beginnen maken we een spelkamer en gaan we deze indelen. Open de instellingen van de spelkamer: En stel de hoogte en de breedte van de spelkamer beiden in op 256:
Bouw vervolgens de volgende spelkamer op:
Aangezien we niet van de zwarte muren houden, halen we in obj_wall het vinkje bij Visible weg. Zorg wel dat je een vinkje bij Solid hebt staan, want we moeten niet door de muren heen kunnen lopen: Vergeet je spel tussentijds niet op te slaan.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Spelkamer mooi maken Als we het spel nu zouden starten, ziet het er natuurlijk niet uit. De muren zijn onzichtbaar en we zitten nog steeds met de grijze achtergrond. Daarom gaan we met tiles werken. Tiles is Engels voor ‘tegels’. Dit zijn plaatjes welke we in de room kunnen plaatsen om het allemaal mooi op te maken. In tegenstelling tot objecten kunnen tegels geen acties uitvoeren. Voeg tileset.png toe als bck_tiles toe als achtergrond via deze knop: Vink hierbij aan dat hij als Tile set gebruikt gaat worden ( Use as tile set ). De standaard instellingen van de tiles (16 bij 16) zijn al goed. Je zult het volgende te zien krijgen:
Ieder omlijnde stukje is een tegel welke je in de spelkamer kunt plaatsen. Open de spelkamer en ga naar het tabblad ‘Tiles’: De tegels worden standaard op de vloer geplaatst, dus zul je ze niet zo makkelijk zien aangezien ze onder de zwarte blokjes worden geplaatst. Om dit te veranderen, stellen we de tegellaag in om helemaal voor op het scherm te moeten staan.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Klik op de Change knop onderaan het scherm:
Verander de waarde in -1 en druk op OK. Zorg ervoor dat je je tileset hebt geselecteerd: En vervolgens kun je een van de tiles selecteren en in de spelkamer plaatsen, net zoals je met objecten doet. Dus links klikken om hem te plaatsen, rechts klikken om hem te verwijderen en links klikken met shift ingedrukt om slepend een hele rij aan tiles te plaatsen. Zorg ervoor dat je spelkamer er uiteindelijk als volgt uit komt te zien:
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Vergeet je spel tussentijds niet op te slaan. Voeg tot slot grond.png toe als bck_grond en stel deze in als achtergrond in de spelkamer. Ga naar de spelkamer, klik op het Backgrounds tabblad en kies voor bck_grond : Je spelkamer zal er als volgt uit moeten zien wanneer je het spel start:
Als sommige tiles nog niet kloppen, pas je deze aan voordat je verder gaat met het maken van het spel. Vergeet niet dat je het Tiles tabblad moet selecteren voordat je tiles kunt plaatsen/verwijderen.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Avonturier programmeren Om te beginnen, zetten we de animatie van de avonturier uit, zodat hij niet staat te trappelen om te beginnen met lopen. Dit doen we door het -blok (Control>Variables) te gebruiken en de variabele image_speed op 0 in te stellen in het Create event . Vervolgens programmeren we het lopen van de avonturier. Voor het laten lopen van de avonturier gelden een aantal puntjes: ● Hij mag alleen lopen wanneer hij in het midden van het blok staat. ● Hij mag niet in een muur lopen. ● Hij mag maar 1 blokje per toetsaanslag lopen. ● Hij moet de juiste animatie weergeven. Voeg de key press events toe voor iedere toets (Left, right, up en down). We beginnen met het omlaag lopen. Om te zorgen dat de avonturier alleen loopt wanneer hij in het midden van het blok staat, gebruiken we het -blok (Control>Questions). Aangezien de sprites 32 bij 32 pixels, stellen we het grid in op 32 bij 32. Vervolgens, om te zorgen dat hij niet door de muren heen mag lopen, gebruiken we het -blok (Control>Questions). Controleer hier relatief aan de speler of de positie waar hij naartoe wil lopen vrij is. Voor omlaag lopen is dit bijvoorbeeld een x van 0, een y van 32 en relative aangevinkt.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Voor het lopen maken we gebruik van het -blok (Move>move). Vink hier de juiste richting aan en kies de snelheid 4 . Om de sprite te veranderen, maken we gebruik van het -blok (main1>Sprite). Kies hier de juiste sprite en als snelheid 0.5 . Aangezien we zowel moeten lopen als de sprite moeten veranderen, hoort dit tussen begin en eind blokken te staan. Zorg ervoor dat je event er zo uit komt te zien:
Zorg ervoor dat je dit voor iedere toetsaanslag programmeert. Als je het spel nu start, zal het poppetje alsnog door de muren heen kunnen lopen. Dit komt doordat we de avonturier nooit stilzetten. Om de avonturier na 1 blokje lopen stil te zetten, gebruiken we weer het event. Bouw hierna het volgende:
-blok (Control>Questions). In het Begin Step
Kies bij het -blok (Move>move) voor het vierkantje in het midden van alle pijlen. Dit zal ervoor zorgen dat de avonturier stil blijft staan op het blokje zodra hij weer in het midden staat. Sla je spel op en kijk of het lopen werkt.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Skelet programmeren Voor het skelet gebruiken we dezelfde blokken om te lopen. Het enige wat we niet doen, is de sprite aanpassen aangezien we maar één sprite hebben. In het Begin Step event stellen we dus ook geen image_ variabelen in. In het Create event stellen we de image_speed niet in op 0, maar op 0.5 . Gebruik gewoon de pijltjestoetsen om ook het skelet te programmeren. Sla het spel op en test of het werkt.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Tegen de computer spelen Zelf beide poppetjes bewegen, is natuurlijk niet leuk. We kunnen het spel ombouwen om tegen de computer te spelen door een zelfgeschreven extensie te gebruiken. Download smcaccent.gex en http_dll_2_3.gex Om deze extensies te installeren, klik je op de groene plus: Je zult het volgende scherm te zien krijgen:
Kies hier rechtsonder voor Install en kies vervolgens weer voor Install .
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Zoek de twee GEX bestanden die je hebt gevonden door er een te selecteren, OK te drukken en vervolgens weer Install te kiezen om de tweede te selecteren en op OK te drukken. Hierna zal het tussenscherm er als volgt uit moeten zien:
Klik op OK zodat we weer bij het grotere scherm zijn.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Selecteer de Http Dll 2.3 in de rechter lijst. Klik vervolgens op de blauwe pijl om hem in de linker lijst te zetten. Doe hetzelfde met SMCAccent zodat het scherm er als volgt uit komt te zien:
Nu we beide extensies hebben ingesteld voor gebruik, kunnen we ze ook gaan gebruiken. De Http Dll zorgt voor de communicatie met de server (dit ga je later gebruiken) en de SMCAccent extensie zorgt voor extra D&D iconen plus wat werk achter de schermen.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Om te beginnen maken we twee nieuwe objecten aan voor de computer om te besturen. Een obj_avonturier_computer en obj_skelet_computer . Bij de avonturier stel je de avonturier sprite (omlaag) in en de image_speed op 0 in het Create event . Voor het skelet stel je de skelet sprite in en de image_speed op 0.5 , net zoals bij de echte objecten. In beide _computer objecten plaats je hetzelfde Begin Step event zoals in de bestuurbare versies. Dus obj_avonturier_computer krijgt hetzelfde Begin Step event als obj_avonturier en obj_skelet_computer krijgt hetzelfde Begin Step event als obj_skelet . Vervang beide bestuurbare objecten in de spelkamer door de _computer versies. Uiteindelijk zullen we een van de _computer versies tijdens het spelen vervangen door een bestuurbare, afhankelijk van of we de avonturier of het skelet zijn. Vergeet niet je spel tussentijds op te slaan. Om het spel beter te kunnen besturen, maken we weer een obj_controller aan. Deze zal het spel regelen wanneer we tegen de computer spelen, maar ook wanneer we online spelen. Dit object heeft geen sprite nodig, maar moet je wel in de spelkamer plaatsen. Let erop dat je deze niet op een van de poppetjes of muren zet, want dan zullen die verdwijnen.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
We beginnen met het instellen van een aantal instellingen. Dit kan in het Game Start event van obj_controller . Hiervoor gebruiken we het -blok, welke je kunt vinden in het nieuwe tabblad. Zorg ervoor dat je dit blok als volgt instelt:
Zo weet de extensie welke objecten hij moet gebruiken om mee te spelen en welke objecten van de speler zelf zijn. Zodra we de instellingen hebben ingesteld, gaan we herhaaldelijk kijken of het spel klaar is om te starten. Hiervoor gebruiken we het Alarm0 event. Voeg na het een
-blok
-blok toe (Main2>Timing) en stel alarm0 in op 30 steps.
Gebruik ook het skelet.
blok om de juiste sprites in te stellen voor de avonturier en het
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
In het alarm event ( Alarm0 ) kijken we met het zijn. Als dit niet het geval is (
-blok of beide spelers er klaar voor
), gebruiken we het
-blok om alarm0 weer in te
stellen op 30 steps. Als beide spelers er wel klaar voor zijn, kijken we met het -blok of we het skelet zijn of de avonturier. Wanneer je tegen de computer speelt, ben je altijd de avonturier, maar we houden er direct rekening mee dat we ook het skelet kunnen zijn. Dit is namelijk belangrijk voor wanneer we online gaan spelen. Wanneer we het skelet zijn, veranderen we obj_skelet_computer in obj_skelet . Dit doen we door gebruik te maken van het -blok (main1>Objects). Geef hierbij obj_skeleton_computer aan als Applies to (bovenin), geef als change into obj_skeleton op en stel perform events in op yes . Ook willen we een berichtje weergeven dat we spelen als het skelet. Gebruik hiervoor het -blok (main2>Info) en kies een duidelijk berichtje. Let op , deze twee blokken moeten tussen een Begin en End blok staan aangezien ze bij elkaar horen:
Bouw voor de avonturier hetzelfde, maar dan met de juiste avonturier objecten en een duidelijk bericht voor de avonturier.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Het alarm event komt er dan als volgt uit te zien:
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Lopen aanpassen We mogen enkel lopen met ons skelet (of avonturier) wanneer we nog niet gelopen hebben in deze ronde. Gebruik in ieder key press event (van zowel het skelet als van de avonturier ) het -blok om te kijken of je überhaupt mag lopen. Zet deze als volgt neer tussen de bestaande blokken:
Iedere zet die we doen, moet ook doorgegeven worden aan de andere speler (in dit geval de computer). Hiervoor gebruik je het
-blok. Stel hierin de richting hetzelfde
in als dat je bij het -blok hebt gedaan. Zorg ervoor dat je op de juiste plekken het Start en End blok gebruikt, bijvoorbeeld voor het skelet:
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Tegenstander laten lopen Aangezien de tegenstander (de _computer objecten) nog geen acties in zich hebben behalve het instellen van de animatie, zal er nog weinig gebeuren. We gaan obj_controller de tegenstander laten lopen. Laat obj_controller nog een alarm starten wanneer beide spelers aanwezig zijn, namelijk Alarm1 op 15 steps. Laat Alarm1 ook zo’n zelfde actie bevatten zodat hij zichzelf herhaalt. Zet vervolgens onder het -blok in het Alarm1 event het volgende blok: zal de computer objecten juist laten bewegen.
Dit blok
Spel uitproberen Nu kun je het spel uitproberen. Sla het spel eerst op en kijk of de tegenstander en jij beiden maar 1 zet mogen doen per keer.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Winnen Als je nu op het skelet gaat staan, gebeurt er nog niets. Hiervoor moeten we nog opvragen of er iemand gewonnen heeft. Gebruik het -blok in het Begin step event van obj_avonturier en obj_skelet om op te vragen of het spel ten einde is (binnen de Start en End blokken). Geef vervolgens bij de avonturier een berichtje dat je gewonnen hebt en bij het skelet een berichtje dat je verloren hebt. Plaats ook het events zien er dus als volgt uit:
-blok om het spel af te sluiten. Je uiteindelijke
Waarbij het event van obj_skelet natuurlijk zonder de
-blokken is.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Online spelen Om online te spelen hoeven we maar een aantal dingen aan te passen. Een van de twee spelers zal een online uitnodiging plaatsen en de andere zal deze accepteren. Verander in het -blok in het Game Start event van obj_controller het speltype (van computer , naar online ). Plaats voor dit blok een
-blok (Control>Questions) om te vragen of je een
uitnodiging wilt verzenden. Zodra de speler op Yes drukt, zal het worden en als de speler op Nee drukt, moet het juiste objecten ingesteld). Gebruik hiervoor het Game Start event er als volgt uit komt te zien:
-blok uitgevoerd
-blok worden uitgevoerd (met de -blok (Control>Questions) zodat het
De gamenaam in de
en
bijvoorbeeld je naam en bij
blokken staat standaard op 0 . Kies bij
iets unieks,
de waarde van met wie je samen online wilt spelen.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Spel uitproberen Probeer het spel uit met iemand anders die al klaar is met het programmeren van het online gedeelte van deze opdracht.
Spel moeilijker maken Als de skelet speler geen fouten maakt, zal hij de avonturier altijd een stap voor kunnen blijven. Je kunt namelijk altijd rondjes blijven lopen. Om het spel moeilijker te maken, kun je na het -blok een -blok plaatsen om bijvoorbeeld het aantal ‘blinde stappen’ op 3 te zetten. Dan heb je meer kans dat je tegen elkaar aan loopt aangezien je elkaar niet aan ziet komen. Let op , deze blokken horen bij elkaar en hier zet je dus en omheen. Sla het spel op en probeer het uit!
Spel afwerken Om het spel beter af te werken, kan de spelserver je ook vertellen ( ) of een van de spelers aan het vals spelen is (zetten doen door muren heen, bijvoorbeeld) of vertellen dat de tegenstander het spel heeft afgesloten ( ). Plaats deze twee blokken op de juiste plaats in het Alarm1 event van obj_controller en geef duidelijke berichtjes weer. Zorg ook dat het spel hierna afsluit, want op die momenten kun je natuurlijk niet verder spelen.
St. Michaël College | Programmeren kun je leren! | 2014-2015
Game Maker: Avonturier en skelet
Via het -blok kun je in Alarm0 opvragen of de speluitnodiging nog wel geldig is. Als er een aantal minuten niemand op heeft gereageerd, zal de speluitnodiging verlopen. Geef hier ook een juist berichtje voor weer en sluit het spel dan ook af. Wanneer er lang niet is gezet, zal het spel ook op verlopen worden ingesteld. Controleer dus ook in Alarm1 op de juiste plek of het spel verlopen is. Zorg ervoor dat je al bovenstaande scenario’s ook met elkaar test en of je codes dus kloppen of niet. Sla je spel dus op en probeer het uit.
Spel uitbreiden Het spel begint nu direct wanneer je de game uitvoert en sluit ook af wanneer het klaar is. Zorg ervoor dat je een mooi menu bouwt bij het spel, waarmee je de volgende dingen kunt: - Een nieuw spel tegen de computer starten. - Een nieuw spel online starten. - Een online spel joinen. - Het menu afsluiten (en daarmee het gehele spel). - Zodra het avonturier en skelet spelletje stopt, moet je weer terugkeren naar het menu.
St. Michaël College | Programmeren kun je leren! | 2014-2015