Game Maker: Space invaders

Vergelijkbare documenten
Game Maker: Asteroids

Game Maker 6.1. Scrolling shooter. Hoofdstuk 6.1

Basisinstructie GameMaker 8.0

Zelf een spel maken met GameMaker Les 3: Vijanden en levens

Game Maker: Avonturier en skelet

Instructie Kaarten - GameMaker

GameMaker. GameMaker game. Het helpscherm Spelen in groot scherm Spel spelen Spel stoppen. Object (wat doet het plaatje) in je game.

Start GameMaker en open een nieuw spel (menu: Zorg ervoor dat GameMaker in Advanced Mode

Zelf een spel maken met GameMaker. LES 3 Vijanden en levens

Zelf een spel maken met GameMaker Les 1: Laat iets bewegen!

Zelf een spel maken met GameMaker Les 2: Muren en punten!

Let s play baseball! Let s get ready! Voorkennis: Sprites, Lopen, Variabelen, Scores, xy. Leerdoelen: 3D illusie, Klonen

GameMaker TUT: Doolhof

Scratch. Gemaakt door: Déjan van Noordt en Leroy van den Driesche Leerlingen HAVO 5 SG Spieringshoek Als onderdeel voor het vak Informatica

HANDLEIDING GAME MAKER

LES 4 & 5 GAMEMAKER4YOU

Zelf een spel maken met GameMaker. LES 1 Laat iets bewegen!

Handleiding help Sinterklaas!

Diamanten jacht. Gamemaker Workshop. Hogeschool van Amsterdam. Benjamin van Arkel, Simon Karman en Koen Vrij

Game Maker. 1 Inleiding. 2 Pacman. 2.1 Resources

Zelf een spel maken met GameMaker Les 5: een platformspel

Zelf een spel maken met GameMaker. LES 2 Muren en punten!

Plaats de auto ergens in het speelveld, en bezaai de weg met rotsen. Let erop dat over de hele breedte van de weg in elk geval rotsen te vinden zijn.

LES 4: Scrollen achtergrond en tegels gebruiken

Wat gaan we maken? Scratch Invaders!

In dit project leer je hoe je een spel maakt waarbij je gekleurde stippen moet vangen met het goede deel van de controller.

LES 2 & 3 GAMEMAKER4YOU

Scratch in drie uur. Hallo, mijn naam is Minti Mint! Ik ga je uitleggen hoe je je eigen computerspel kunt maken. We gaan een racespel maken!

Hoe maak ik een App in GameSalad

LES 6 T/M 10 GAMEMAKER4YOU

Space Invaders op de micro:bit

Het project Gamemaker Kids is mede mogelijk gemaakt door:

Klonen. Het doel is om de appel op te eten. Iedere keer dat de slang de appel eet, groeit hij één vakje langer.

Les 4 Snake. Een hele kleine Sprite. 1) Zie Afbeelding 1. Klik met je rechtermuisknop op sprite1. Kies vervolgens verwijderen.

1 Starten met scratch stap voor stap

Game Maker 6.1. Sprite up your life with Gamemaker. Hoofdstuk 1.2

LES 6: Vijanden en dood gaan

Nog geen account? Wel een account? 0. Starten met. Een nieuw project beginnen Klik op Maak. Ga online naar scratch.mit.edu

1 verschillende onderdelen en deelsystemen in een technisch systeem onderzoeken: de functies en de relaties ertussen toelichten;

LES 2: Zwaartekracht gebruiken en springen

Game Maker 6.1. PSO opdracht

Snake met Scratch. Stap voor stap. Pagina 1 van 15

Gemaakt door: Tessa Romviel & Pepijn t Hoen Leerlingen VWO 6 SG Spieringshoek Als onderdeel voor het vak Informatica

SCRATCH VOOR BEGINNERS

Gebruik van TileSets Stukjes achtergrond van een plaatjesvel (sheet) afhalen

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Handicom. Symbol for Windows. Image Manager. (Versie 4) Handicom, 2011, Nederland

Ga naar en remix het spel.

Het project Gamemaker Kids is mede mogelijk gemaakt door:

HANDLEIDING Q3600 Webshop

Beginnen met de Scratch programmeeromgeving Samengesteld en verzorgd door Jeroen Hartsuiker namens Markant, mei/juni 2016

Scratch: Introductie. Wat is Scratch? Lekker dansen!

Het project Gamemaker Kids is mede mogelijk gemaakt door:

HANDLEIDING Q1600 Fashion

Bijlage: Handouts. Deze bijlage bevat de volgende handouts:

Les: Papegaai in het doolhof

Game maker Tutorial Pong

In deze handleiding wordt uitgelegd hoe een DIN kader gemaakt moet worden en hoe er nieuwe papierformaten aangemaakt moeten worden.

Workshop 1. Het is de bedoeling dat je stap voor stap meedoet. Dit teken geeft aan dat je iets zelf moet doen of mee moet doen.

Avontuur in de ruimte. Deel 1 Basis van het spel

Game Maker Tutorial Jouw Eerste Spel Geschreven door Mark Overmars

Scratch les 3: Quiz! Je eigen spelshow

UNIT 4 GAMES DROOMGAMES EERSTE GAMES SCORE EXTENSIES INTERACTIES DEBUG IT!

1. Open het programma KompoZer Het grote witte vlak is een nog lege webpagina. Deze gaan we nu van inhoud voorzien.

PDF XCHANGE EDITOR Waarom PDF XHCANGE Editor?

Handleiding. Cv templates. Venbroekstraat AS Nieuwkuijk

Handleiding Windows Movie Maker

Handleiding voor Envelop - PP 2007

Handleiding Concrete5 website. Outbound Media

Zoek bij Beweging de juiste functie en klik ze aan de vorige functie.

Programmeren met Scratch

Klikpuzzel - PP 2007 & 2010

1.1. Als sprite1 kiezen we het pijltje uit de spritebibliotheek. Bij Uiterlijken kiezen we voor de pijl die naar boven wijst.

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

Scratch les 1: Scratch Invaders

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

Stroomschema s maken in Word

Handicom. Symbol for Windows. Image Manager. (Versie 3) Handicom, 2006, Nederland

Zelf albumbladen maken in Word 2003

SCRATCH GEVORDERDEN Inhoudsopgave

LORD OF THE RINGS ALLE ONDERDELEN VAN HET SPEL START VAN HET SPEL

Sterren Jager. In dit spel ga je sterren jagen, maar je moet oppassen voor de inktvissen!

Weet jij een paar leuke lijstjes? Denk bijvoorbeeld aan alle kinderen in je klas of al je vriendjes of vriendinnetjes.

Gebruikersinstructie nieuwe Statenleden ipad Air 2

Het project Gamemaker Kids is mede mogelijk gemaakt door:

Trampoline Draak 1a. Stap 1 de voorbereiding. fantasie, de dragon. Kies ook een nieuwe achtergrond uit de folder buiten, atom playground

Mei. Handleiding - Publisher Tool 1

Handleiding. Online database met duizenden activiteiten.

Informatica GameMaker lesnr. 3

Als je geen -adres hebt kun je bij Google een gmail account aan maken. Als je niet weet hoe dat moet klik dan op: Gmail account aanmaken

Flappy Bat. Om te beginnen ga je naar en remix je het spel.

Space Invaders. Advanced. Een project in Scratch.

Voorzie iedere pagina van een titel. Je kan de titel uit het menu aanhouden. Een titel voeg je toe als volgt: 1. Klik op Element toevoegen.

een balspel We gaan een balspel bouwen. We maken een startscherm met daarop de bedoeling en instructie van het spel

4. Grafieken. 4.1 Een dia met grafiek invoegen

1. Achtergronden verwijderen (op basis van Photoshop CS2/CS3)

De lesgever laat een voorbeeldspel zien en vertelt dat de kinderen dit gaan maken.

CoderDojo Arnhem Help de Kerstman

Transcriptie:

Wat is space invaders? Space invaders is een arcadespel uit 1978 waarbij de speler een kanon/ruimteschip bestuurt om hiermee aliens neer te schieten. Er zijn veel variaties op gemaakt, maar onderstaande afbeelding moet een goed idee geven van hoe het spel in elkaar steekt: De aliens staan in een rasterformatie en bewegen met z n allen naar rechts zolang dat kan. Daarna bewegen ze een vakje omlaag en gaan ze allemaal naar links zolang dat kan, et cetera. Onderin beeld zie je het kanon/ruimteschip van de speler. Hiermee kunnen kogels geschoten worden naar de aliens. De groene blokken tussen de speler en de aliens kunnen worden gebruikt om achter te schuilen. Schietende aliens kunnen deze blokken stukmaken.

Aan de slag! Voor we het spel kunnen programmeren, moeten we eerst weer sprites toevoegen. We beginnen met drie sprites en later gaan we de overige sprites toevoegen. Sprites toevoegen Open de volgende afbeeldingen en sla ze op (rechtsklikken op de afbeelding en dan afbeelding opslaan als kiezen). Kies een plek waar je ze eenvoudig weer terug kunt vinden. Maak er vervolgens sprites en objecten van. kanon.png voor spr_kanon en obj_kanon alien1_strip2.png voor spr_alien1 en obj_alien1 Let op: De alien sprite is wit, dus het kan zijn dat je hem niet goed ziet. Zorg er ook voor dat de alien sprite opgeslagen wordt met _strip2.png erachter. Sprite origins Open de kanonsprite. Boven de OK knop is er de optie om de origin van de sprite in te stellen. De origin geeft aan waar het midden van de sprite zit. Dit is handig voor het positioneren van de objecten, maar ook bijvoorbeeld voor het schieten van een kogel. Kies voor de kanon als origin X: 16 en Y: 0, zoals hiernaast staat aangegeven: Stel voor alien1 de origin in op X: 16 en Y: 8, dit kun je ook doen door op de Center knop te drukken. Sla je spel op voordat je verder gaat met de volgende opdrachten.

Spelkamer opzetten De spelkamer heeft natuurlijk een zwarte achtergrond nodig zodat we alle sprites goed kunnen zien. Maak een spelkamer aan en klik op het Backgrounds tabblad: Klik op het grijze vlak naast Color om een zwarte achtergrondkleur te kiezen: Vervolgens plaatsen we alvast een kanon en één alien in de spelkamer: Sla je spel op, start het spel en kijk wat er gebeurt.

Spartelende alien Zoals je ziet, spartelt de alien nogal flink. Het ziet er natuurlijk beter uit als de alien wat rustiger beweegt. Open obj_alien om de animatie snelheid in te stellen. 1. Voeg een Create event toe. 2. Kies voor uit main1 > Sprite 3. Stel in dat hij z n sprite naar spr_alien1 moet veranderen met een speed van 0.05 Start het spel opnieuw en de alien beweegt nu rustiger. Kanon laten bewegen Het kanon laten we op dezelfde manier bewegen als het bootje van vorige week. De uitleg hieronder zal het in blokken (D&D) uitleggen, maar je mag het natuurlijk ook in code (GML) programmeren. Voeg uit de Keyboard events de Left en Right toe. Let op, kies voor Keyboard, niet Key Press of Key Release. Het Keyboard event wordt continu uitgevoerd wanneer de toets wordt ingedrukt. Om het kanon te laten bewegen, gaan we hem geen snelheid geven, maar laten we hem van positie verspringen. Dit doen we met het blok, welke je kunt vinden in het Move tabblad onder Jump. Vul voor de linkertoets als x in -5 voor het blok en de y laat je op 0. Vink Relative aan. Vul voor de rechttertoets als x in 5 en laat de y weer 0. Vink Relative hier ook aan.

Muren plaatsen Als je het spel nu start, zul je zien dat je buiten het speelveld kunt bewegen met je kanon. Dit gaan we weer verhelpen door muren te plaatsen. Download muur.png ( Let op: dit is een andere sprite dan voorgaande weken ) en maak een spr_muur en een obj_muur. Zorg ervoor dat obj_muur als sprite spr_muur heeft en dat Solid aangevinkt is. Plaats de muren zodat de hele rand van de spelkamer bedekt is met muurobjecten: Voeg nu in obj_kanon het blok toe welke je kunt vinden in het Control tabblad onder Questions. Stel hierin ook weer -5 en 5 in voor de x en vink ook weer relatieve aan. Zorg ervoor dat het blok boven het blok staat, anders werkt het niet. Sla je spel weer op, start het spel en kijk of je nog buiten de spelkamer kunt raken. Een rode rand om je spel is natuurlijk niet mooi. Haal in obj_muur het vinkje weg voor Visible en start je spel daarna nog eens. Kijk ook of je nog buiten de spelkamer komt.

Schieten Space invaders is zeer saai als je niet kunt schieten. Download kogel.png en maak hiervan een spr_kogel en een obj_kogel. Let op: De kogel sprite is zeer klein (en wit) dus het kan moeilijk zijn om er rechts op te klikken om hem op te slaan. Probeer Ctrl+S als het niet wil lukken of vraag het ons. Kies als origin voor de kogel sprite x: 1 en y: 10: Voeg aan het obj_kanon object een Key Press event voor <Space> toe. Dit zal ervoor zorgen dat er slechts één kogel geschoten wordt wanneer je op de spatiebalk drukt. In tegenstelling tot het linker en rechter pijltje waarbij we continu blijven bewegen. In het main1 tabblad onder Objects vind je het 10, direction 90 en vink relative aan. blok. Kies hier voor obj_kogel, speed Start het spel en test of je kunt schieten.

Alien raken Om de alien te raken gaan we een collision event toevoegen in de kogel. Open obj_kogel en voeg een collision event toe met obj_alien1. Plaats in dit event twee maal het blok welke je kunt vinden in het main1 tabblad onder Objects. Laat een van de twee onveranderd en kies bij de ander voor het bolletje Other in plaats van Self. Dit zal ervoor zorgen dat de kogel zichzelf verwijdert, maar ook de alien. Sla het spel op, start het en test of je de alien uit de lucht kunt schieten. Wanneer je de alien niet raakt, moet de kogel als nog verdwijnen zodra hij de muur bovenin de spelkamer raakt. Anders blijft de kogel voor altijd buiten het speelveld doorgaan en dat kan het spel uiteindelijk traag maken. Voeg dus aan obj_kogel een collision event toe met obj_muur en plaats hierin ook het blok. Laat hierbij het bolletje weer op Self staan aangezien enkel de kogel hoeft te verdwijnen.

Spelregelaar Om het spel beter te laten verlopen, gaan we weer een spelregelaar maken, maar eerst gaan we een aantal aliens toevoegen aan de spelkamer. Onderstaande afbeelding geeft aan waar de formatie begint. De groene aliens staan er enkel om aan te geven waar de twee rijen van 11 aliens precies beginnen. Maak een obj_controller object aan zonder sprite om als spelregelaar te gebruiken. Plaats deze dus ergens in de spelkamer voordat je verder gaat. Anders werkt het niet.

Laat de spelregelaar Alarm0 starten op 20 steps in het Game Start event (deze vind je onder Other) door middel van het blok (main2>timing). Voeg het Alarm0 event toe en geef deze hetzelfde blok, namelijk ook alarm0 met 20 steps. Dit zal ervoor zorgen dat Alarm0 herhaaldelijk wordt uitgevoerd, namelijk iedere 20 steps (net geen seconde). Plaats in het Alarm0 event het blok (move>jump) toe met hierin x op 8 en y op 0. Vink hierbij relative aan. Kies bovenin voor het bolletje voor Object en kies voor obj_alien1. Sla het spel op, start het spel en kijk wat er gebeurt. Terug laten bewegen De aliens vliegen nu de spelkamer uit wanneer ze aan de zijkant komen. Dit is natuurlijk niet de bedoeling. Om dit gaan we oplossen door gebruik te maken van variabelen. Je kent variabelen nog wel van Scratch. Het zijn doosjes met een naampje. In het doosje kun je een waarde stoppen, welke je later weer uit kunt lezen. Aan de hand van wat je uitleest, kun je besluiten iets te doen. Om te beginnen gaan we een variabele aanmaken voor de huidige richting van de formatie. Voeg in het Game Start event van obj_controller het je in het control tabblad onder Variables. blok. Dit blok vind Kies als variabelenaam global.richting en als waarde 1, dit hoeft niet relative. We maken hier een globale variabele van aangezien de aliens hiermee gaan werken.

Ga naar het Alarm0 event van obj_controller en open het de x in: 8 * global.richting blok. Verander de 8 bij Voeg aan obj_controller een Key Press event toe. Kies voor het press <Ctrl> event. Plaats in dit event weer een blok (Control>Variables) en kies als variabelenaam global.richting en als waarde global.richting * -1 Hierbij hoeft relative niet aangevinkt te worden. Dit zorgt ervoor dat de richting variabele 1 of -1 is. Afhankelijk van die waarde bewegen de aliens naar rechts of naar links. Sla het spel op en test of het werkt. Druk op de Ctrl toets om te kijken of het wisselen van richting werkt. Automatisch bewegen Het is natuurlijk niet de bedoeling om via Ctrl de aliens te besturen. Ze moeten zelf van richting veranderen wanneer ze bij de muur komen. Verwijder het press <Ctrl> event uit obj_controller.. Voeg in het Game Start event van obj_controller een blok toe. Kies als variabelenaam global.wisselrichting en als waarde false (wat onwaar betekent in het Engels). Deze variabele gaan we gebruiken om bij te houden wanneer we van richting moeten wisselen.

Open obj_alien1 en voeg een Begin Step event toe. Voeg hierin het blok toe (control>questions). Stel x in op 8 * global.richting laat y op 0 vink relative wel aan en vink ook NOT aan. Nu zullen de aliens kijken of ze tegen de muur aan zijn gevlogen. Als ze tegen de muur aan zijn gevlogen, moet de richting wisselen. Plaats dus onder het blok een blok. Kies als variabelenaam global.wisselrichting en als waarde true. Zo weet de spelregelaar dat hij de richting moet wisselen. In het Alarm0 event van obj_controller kunnen we twee gevallen onderscheiden. Namelijk wanneer we van richting moeten wisselen en wanneer niet. Dit onderscheid kunnen we maken door het blok (control>variables) te gebruiken. Kies als variabelenaam global.wisselrichting en laat controleren of die equal to is aan true. Bouw vervolgens met de paarse driehoeken en het constructie: blok de volgende Als we van richting moeten wisselen gaan we *iets* doen, anders bewegen we gewoon in de huidige richting. Dit lijkt op de als-dan constructie uit Scratch.

Aangezien we de *iets* nog niet gevuld hebben, zal het spel nog weinig bijzonders doen. Voeg binnen de Start en End blokken de volgende blokken toe: - Een blok waarbij je de x op 0 laat staan en de y op 8 zet. Zodat de aliens een rij dichter op de speler staan. Hierbij moet je relative dus wel aanvinken. Ook moet je bovenaan het bolletje voor Object selecteren en dan kiezen voor obj_alien1. - Een blok waarmee je global.wisselrichting op false zet. - Een blok waarmee je global.richting verandert. Als waarde kies je dus global.richting*-1 Je krijgt dan de volgende blokken in je Alarm0 event: Sla het spel op en kijk of het allemaal werkt!

Uitbreidingen Het spel werkt en deze versie kun je dus inleveren op de website. Het spel is echter nog lang niet uitdagend genoeg. Doorloop de volgende uitbreidingen stuk voor stuk om het spel moeilijker te maken. Score en levens Om te beginnen voeg je weer scores en levens toe zoals je voorgaande lessen hebt geleerd. Zorg ervoor dat je +10 score krijgt wanneer je een alien neerschiet en zorg dat zowel de score als de levens op het scherm worden getekend. TIP Kies voor een witte tekstkleur aangezien je het anders niet ziet op de zwarte achtergrond. Alles staat uitgelegd in het document van vorige week. Deze mag je er natuurlijk bij pakken. Kogel sprite en object In de echte space invaders schieten de vijanden terug. Dat gaan wij ook doen. Voordat we de aliens kunnen laten schieten moeten we eerst een kogel sprite maken voor de aliens. Klik rechts op de spr_kogel en kies voor de optie duplicate. Noem de nieuwe kogel spr_alien_kogel. Nu is de kogel nog dezelfde kleur en dat kan voor verwarring zorgen. Klik op edit sprite en daarna op image 1. Verander de kleur van de kogel naar rood. Om de kogel beter zichtbaar te maken kun je inzoomen.

Maak als de sprite klaar is een nieuw object en noem dat object obj_alien_kogel. Net als bij de gewone kogel, moet de kogel verdwijnen als hij bij de rand komt. Voeg dus aan obj_kogel een collision event toe met obj_muur en plaats hierin ook het blok. Aliens laten schieten Nu we een kogel hebben kunnen we de aliens laten schieten. Om het spel niet te moeilijk te maken, zorgen we dat de aliens niet de hele tijd schieten. Voeg eerst een Alarm0 event toe aan obj_alien1. Plaats hierin het blok met 20 steps voor alarm0. Plaats ditzelfde blok ook (met dezelfde instellingen) in het Create event. Nu zal het Alarm0 event herhaaldelijk uitgevoerd worden. Plaats daarna in het Alarm0 event het blok (onder het alarmblokje, niet erboven anders werkt het niet). Dit blok vind je in het Control tabblad onder Questions. Vul in het vakje 10 in. Dit betekent dat er een 10 procent kans is dat er iets gebeurt. Zet daaronder het blok neer. Laat de x en y op 0 staan, kies speed 10 en direction -90. Vink relative niet aan en kies natuurlijk voor de alienkogel als object. Sla nu het spel op en test het.

Onderste rij Op dit moment kunnen alle aliens schieten en dat staat raar. We willen dat alleen de onderste rij aliens kan schieten. Voeg daarom onder het blok in het Alarm0 event van obj_alien1 het blok toe. Zet object op obj_alien1, x op 0 en y op 32. Vink ook relative en not aan. Iedere alien kijkt nu of er een alien onder hem staat en als dat niet zo is, mag hij schieten. Let op: Dit is alleen het geval wanneer je aliens zo staan dat er precies ruimte genoeg is voor één alien ertussen. Dit krijg je het beste voor elkaar wanneer je Snap X en Snap Y in je spelkamer op 16 staan. Sla weer je spel op en kijk of nu alleen de onderste rij aliens schiet. Als dat goed gaat mag je instellen dat je een leven verliest als de kogel jouw schip raakt. Als het niet goed lijkt te werken, vraag ons om hulp. Snel schieten Het is nu nog mogelijk om door heel snel op spatie te drukken heel snel te schieten. Om het spelletje wat moeilijker te maken willen we zorgen dat je maar één keer mag schieten per stap die de aliens zetten. Open het obj_kanon en voeg een Game start event toe en zet daarin het blok en kies voor 20 steps. voeg ook een blok toe en kies als naam canshoot en als waarde true. Voeg daarna een Alarm0 event toe. Zet daarin ook het blok en kies weer voor 20 steps. Zet daaronder een blok neer en kies als naam canshoot en als waarde true.

Ga dan naar het Key press <space> event en zet daar boven het blok een blok neer. Kies als variabele canshoot, als value true en laat operation op equal to staan. Voeg ten slotte onder het blok weer een toe en zet ditmaal canshoot op false. Sla nu je spel op en test of je minder snel kan schieten. Meer aliens Download de afbeeldingen alien2_strip2.png en alien3_strip2.png en maak hiervan weer sprites. Maak twee lege objecten aan: obj_alien2 en obj_alien3. Stel bij beide objecten in dat obj_alien1 hun parent is. Dit kan in dezelfde kolom als waar je de objectnamen altijd opgeeft (zie hiernaast). Dit zal ervoor zorgen dat de spelregelaar alle aliens als dezelfde beschouwt. Ze zullen dus allemaal automatisch meebewegen. Ook de kogel beschouwt ze als één, dus kun je er ook direct op schieten. Het enige wat nog niet klopt, is de sprites. In het Create event van obj_alien1 stelden we namelijk de sprite opnieuw in via het blok. Voeg aan obj_alien2 en obj_alien3 ook

een Create event toe met het snelheid weer 0.05 blok erin. Kies voor de juiste sprite en kies als Voeg tot slot het blok toe (Control > Other) boven blok. Dit blok zal ervoor zorgen dat het alarm bijvoorbeeld weer goed loopt. Dit is slechts een technisch kleinigheidje. Plaats de aliens in de room: Sla het spel op en test of het werkt. Als het niet werkt, vraag dan een van ons om hulp. Score uitbreiding Ken andere scores toe aan de verschillende aliens. Let op : Wanneer je een collision event toevoegt met alien2 of 3 zal de kogel niet meer automatisch worden verwijderd. Kopieer dit stukje uit het collision event met alien1.

(GML) Vliegende schotel Een van de extra s in de werkelijke space invaders is een vliegende schotel welke boven in beeld langs komt vliegen. Doordat hij helemaal bovenin beeld langs komt vliegen en extra snel beweegt, is hij moeilijker te raken. Download schotel.png en maak een spr_schotel en een obj_schotel. Stel in obj_controller (in het Game Start event ) via het blok alarm1 in op 5*room_speed steps en voeg het Alarm1 event toe. Dit zal ervoor zorgen dat het alarm na 5 seconden afgaat. Plaats in het Alarm1 event het blok. Om de vliegende schotel aan te maken, gebruiken we de instance_create functie. Deze functie heeft drie parameters: x, y en obj. Probeer het volgende: GML instance_create ( 100, 100, obj_schotel ) Sla het spel op, start het en kijk wat er gebeurt. Om de schotel een snelheid mee te geven, kunnen we gebruik maken van with, wat met betekent in het Engels. Zo kun je bepaalde code uitvoeren in de zojuist aangemaakte schotel: GML with ( instance_create ( 100, 100, obj_schotel )) { hspeed = 15 } Dit zal de horizontale snelheid (hspeed) van de schotel op 15 instellen. Sla het spel op, start het en kijk wat er gebeurt.

In plaats van de vliegende schotel midden in de room te laten verschijnen, kunnen we hem bovenin net iets buiten de room laten verschijnen. Stel de x in op -48 en de y op 16 in voorgaande code. Kijk of je het werkend hebt gekregen. Nu gaan we obj_schotel laten controleren of hij buiten de spelkamer is of niet. Open obj_schotel en geef hem een Step event. Plaats hierin het Vorige keer hebben we gewerkt met de if-statements: GML if ( vraag ) { actie } blok. Als vraag kunnen we hier de x van de schotel vergelijken met de breedte van de room. Wanneer de x groter is dan de breedte van de room (vraag) moet de schotel zichzelf verwijderen (actie). Maak gebruik van de volgende hints om bovenstaande te bouwen: - x kun je intypen om de huidige x positie van de schotel op te vragen - room_width kun je intypen om de breedte van de room op te vragen - groter dan ( > ), kleiner dan ( < ) en gelijk aan ( = ) werken ook in GML - instance_destroy() kun je gebruiken om de schotel zichzelf te laten verwijderen Voeg ook toe dat je punten krijgt wanneer je de schotel raakt. Laat hierbij de schotel en kogel natuurlijk verdwijnen. Tot slot kun je alarm1 laten herhalen. Maak bijvoorbeeld gebruik van irandom_range om het alarm willekeurig te maken (kies F1 voor de handleiding).

(GML) Schuilhuisjes Het laatste om het space invaders spel helemaal compleet te maken, zijn de groene huisjes waar je als speler onder kunt schuilen. We gaan ze zo maken dat de aliens ze stuk kunnen schieten, maar niet dat de schade exact ontstaat waar de kogels inslaan. Dit is namelijk vrij ingewikkeld om te maken. Download huisje_strip4.png en maak een spr_huisje en obj_huisje. Let er weer op dat je eindigt met _strip4.png. Centreer de sprite via de Center knop. Plaats obj_huisje een aantal keer in de spelkamer. Ik heb voor de volgende opstelling gekozen aangezien deze het beste uit leek te komen: Start het spel en kijk wat er gebeurt. Dit lijkt heel erg op wat we in het begin hadden met de heel snel animerende alien. Het is natuurlijk niet de bedoeling en dit gaan we dan ook oplossen. Nu we met GML werken, hebben we meer mogelijkheden en kunnen we dit op een nettere manier oplossen.

Geef obj_schotel een Create event en plaats hierin het blok. Om de animatie te stoppen, stellen we de variabele image_speed in op 0. GML image_speed = 0 Start het spel en test of de huisjes nu niet meer animeren. We kunnen nog steeds door de huisjes heen schieten evenals de vijanden. Voeg in obj_huisje twee Collision events toe. Een met de spelerkogel en een met de alienkogel. Stel in dat bij de spelerkogel enkel de spelerkogel verdwijnt door gebruik te maken van: GML with ( other ) { instance_destroy (); } Dit zal ervoor zorgen dat de ander (de kogel dus) vernietigd wordt. Voor de alienkogel gaan we iets anders doen. We gaan de huisjes 100 hitpoints geven en iedere keer als hij geraakt wordt door een vijandelijke kogel, halen we er 10hp vanaf. Maak in het Create event van obj_huisje een hp-variabele aan op 100. Dit kan in hetzelfde GML blok wat er al staat: image_speed = 0 //Stond er al hp = 100 Stel in het Collision event (met de alienkogel) in dat de vijandelijke kogel verdwijnt en dat er 10 van hp af gaat. 10 eraf kun je doen door middel van variabele -= 10 of door gebruik te maken van variabele = variabele - 10.

Als je het spel nu start, zul je niet kunnen zien of het werkt. We doen namelijk nog niets met de hitpoints. Wat we willen doen, is de juiste sprite tekenen aan de hand van de hitpoints. Nadat je 10 van je hitpoints afhaalt, gaan we dus kijken welke sprite er weergegeven moet worden. Dit doen we door middel van een if-statement: GML if (hp < 100 ) { image_index = 1 //Tweede plaatje } Dit zal ervoor zorgen dat het tweede plaatje wordt weergegeven zodra hij minder dan 100 hitpoints over heeft. De plaatjes worden geteld van 0 tot en met 3, waarbij 0 de het eerste plaatje is van het huisje zonder gaten erin. Voeg zelf if-statements toe voor: - Minder dan 60 hp -> Derde plaatje - Minder dan 30 hp -> Vierde plaatje - Minder dan 10 hp -> Vernietig het huisje Om het spel iets dynamischer te maken, kun je de volgende code toevoegen aan het Create event van obj_huisje. Bedenk eerst wat deze code mogelijkerwijs kan doen: GML image_xscale = choose (1, 1) //Deze code doet [vul in]

Eigen uitbreidingen Je kunt je space invaders spel zelf nog verder uitbreiden: - Zorg dat je verliest wanneer de aliens het huisje raken - Laat de aliens sneller bewegen als je een hoge score hebt behaald - Zodra je een alien neerschiet, zorg je ervoor dat hij met een bepaalde kans een powerup laat vallen (zoals in appelvangen). Als je het voor elkaar krijgt de powerup te vangen met je kanon, kun je een van de volgende acties uitvoeren: - Sneller kunnen schieten - Meer score krijgen per alien - Een nieuw huisje spawnen om onder te schuilen - Een tweede kanon toevoegen waarin je multiplayer kunt spelen. Laat de andere persoon bijvoorbeeld met A en D heen en weer bewegen en bijvoorbeeld met Ctrl of Shift schieten. - Eigen creatieve ingevingen. Als je wilt weten hoe iets moet, hoef je het enkel te vragen.