Stageverslag
Serious Games B.V. www.ranj.nl
Stageverslag Ranj Serious Games BV Auteur: Peter van Puijvelde Communicatie & Multimedia Design Avans Hogeschool Breda
Inleiding Een van de eindstudie onderdelen van mijn opleiding “Communicatie & Multimedia Design” is het stagelopen bij een bedrijf dat past binnen je persoonlijke eindstudieplan. Mijn gekozen afstudeerprofiel “Creative Technology” heb ik voornamelijk gekozen om me tijdens mijn eindstudie te verdiepen in het (technisch) ontwerpen van games. Hierdoor heb ik in overleg met mijn studieloopbaan begeleider contact opgenomen met Ranj Serious Games. Tijdens de opleiding hebben we eerder colleges gehad over serious games en de potenties voor dit type games in de toekomst. Persoonlijk ben ik meer opgegroeid met games waarbij entertainment het hoofddoel was, maar nu ik daadwerkelijk binnen een professionele wereld met games mag werken is het erg interessant om te zien hoe een probleem uit de realiteit met behulp van het ontwerpen van een serious game kan worden beschouwd. Daarnaast heb ik van jongs af aan altijd al een grote passie gehad voor computerspellen, waardoor het mij een hele belevenis zou lijken om daadwerkelijk aan de slag te kunnen bij een bedrijf zoals Ranj. Dit verslag geeft een algemene indruk van het bedrijf tijdens mijn stageperiode: 21 april t/m 17 Juli 2008. Voor de stage heb ik een aantal persoonlijke leerdoelen opgesteld. Door middel van uitleg en voorbeelden van mijn werk binnen Ranj wil ik laten zien hoe ik deze heb bereikt.
2
Inhoudsopgave Inleiding
2.
Hoofdstuk 1 - Identiteit, Missie en Organisatiestructuur 1.1 Geschiedenis 1.2 Identiteit en Missie 1.3 Locatie en omgeving 1.4 De studio 1.5 Hardware en software 1.6 Organisatiestructuur
4.
Hoofdstuk 2 - Opdracht- en Taakomschrjving
9.
5. 6. 7.
2.1 Gesprek opdracht- en taakomschrijving 2.2 Persoonlijke Leerdoelen Hoofdstuk 3 - Rol en Werkzaamheden
10.
3.1 3.2 3.3
Oriëntatieweken/Algemeen Van concept tot realisatie Korte samenvatting eigen werkzaamheden
3.2 3.3 3.4 3.5 3.6 3.7
KLU Logo Scrapbook LOI EK Viral Drugspreventie TechED Coach Online
11. 12.
(Luchtmacht Experience Games) (Nationale Oranje Examen) (Red Fred 2) (Doe het Zelf 2)
Hoofdstuk 4 - Reflectie en Conclusie 4.1 Persoonlijke ervaring werkomgeving
9.
Bijlage – DoeHetZelf2 Actionscript 3 Code Bronvermelding
3
Hoofdstuk 1 Identiteit, Missie en Organisatiestructuur Ranj is een creatieve studio gevestigd in de stad Rotterdam aan de lloydstraat. Het bedrijf heeft zich gespecialiseerd in het ontwikkelen van digitaal entertainment, met de focus op serious games. Het woord Ranj betekend in het Sanskriet dan ook “to entertain”. 1.1
Geschiedenis
De oorspring van Ranj ligt op het gebied van animatie. Onder de naam: Hootchie Coochie: http://www.hootchiecootchie.nl , produceerden de oprichters Michael Bas, Marcus Vlaar en Hans Wessels tussen eind jaren ’80 en begin jaren ‘90 de populaire serie: Purno de Purno: http://www.purnodepurno.nl , die werd uitgezonden door de VPRO.
Afbeelding 1: Purno de Purno
Hierna begon het balletje te rollen en produceerden ze tussen 1992 en 1999 allerlei multimediale producten zoals: “ongeveer 5 uur animatie, 7 computergames, 2 stationcalls en een netstyling, 28 geanimeerde karakters voor cd-rom, 5 televisieleaders, 6 shockwavegames en een organizer, 12 screensavers, 4 formats voor tv-programma's, een paar vrachtwagenontwerpen, enkele T-shirts, een interactief museum, wat huisstijlen en een lifesaver. Allemaal hits en topproducten!” In 1999 besluiten ze om nog 2 bedrijven te starten. Het bedrijf Boogiemen, dat een animatieproductiemaatschappij zou worden en natuurlijk het bedrijf waar ik nu inmiddels mijn stage heb volbracht: Ranj dat zich op computerspellen gaat concentreren. Inmiddels is Ranj een toonaangevend bedrijf op het gebied van serious games in binnen en buitenland, en hebben ze diverse grote awards gewonnen voor hun werkzaamheden in deze branche.
4
1.2
Identiteit en Missie Bron: www.ranj.nl link: identiteit
“Ranj is overtuigd van de potentie van games buiten de entertainment sfeer: als communicatiemiddel, als leermiddel, als werving en selectie instrument, als hulpmiddel voor het verkrijgen van inzicht in complexe structuren. Entertainment is daarbij geen doel, maar een middel om de ervaring te verdiepen en op een impliciete manier te laten beleven. Essentieel hierbij is de kunst om de communicatiedoelen te verankeren in de spelstructuur. De speler gaat dan volledig op in het bereiken van het speldoel maar is tegelijkertijd impliciet bezig met een heel ander proces: leren, merkcommunicatie, een selectieproces, een competentiescan, etc. Dit vergt een scherpe analyse van de te communiceren inhoud vanuit de ogen van de gamedesigner, een proces waarin opdrachtgever, domeindeskundigen en spelontwikkelaar nauw met elkaar moeten samenwerken. De missie is dat proces te beheersen, ontwikkelen, verfijnen en innoveren. Ze geloven dat we nog aan het prille begin staan van een traject met enorme potentie, waarbij inhoudelijke kwaliteit van cruciaal belang zal blijken te zijn.” 1.3
Locatie en omgeving
De locatie van Ranj kan als uitstekend worden beschouwd. Het bedrijf is gevestigd aan de lloydstraat waar het bruist van de creatieve mensen en bedrijven die zich bezighouden op het gebied van kunst, audiovisueel, film, ICT, multimedia, etc. Het gebouw waar Ranj zich bevind behoort bij een aanbouw van een oude elektriciteitsfabriek genaamd: Schiecentrale, die is getransformeerd tot een creatieve smeltkroes. Op de website www.schiecentrale.nl is een uitgebreid overzicht te vinden van de bedrijven en omgeving. De groep mensen en bedrijven die zich hier hebben gevestigd werken dan ook op regelmatige basis samen en ondersteunen elkaar.
5
1.4
De studio
De studio bestaat uit een aantal afdelingen die zich eigenlijk allemaal binnen één grote ruimte bevinden. Een afdeling kan dan ook gezien worden als een aantal bureaus die bij elkaar zijn gezet, met de daarbij behorende (computer)apparatuur en benodigdheden. Het gaat hierbij om de afdelingen: -
Management aangevuld met financiele administratie & personeelszaken Projectmanagers Graphic Design aangevuld met assets developers Gamedesign Programmeurs aangevuld met systeembeheer Receptioniste en overige werkplekken
Bij aanwezigheid van freelancers en/of stagiaires voegen zij zich bij de afdeling waar ze zich op zullen richten, of bij de overige werkplekken Onlangs heeft ranj ook de ruimte naast de studio overgenomen die eerder door een ander bedrijf werd gebruikt. Hier is een volledig nieuwe keuken, bar, slaapverblijf, douche, vergaderruimte, bibliotheek met allerlei vakliteratuur en eettafels. Ook is deze ruimte geschikt om extra werkruimte in te richten (vaak bij grote projecten) waarvoor allerlei tafels beschikbaar zijn. Zodoende kunnen grote hoeveelheden medewerkers in combinatie met stagiaires en freelancers hier gezamenlijk bij elkaar werken en snel communiceren. Daarnaast zijn er een verscheidenheid aan mogelijkheden om even tot rust te komen of actief te zijn zoals: zitzakken, een gymnastiek bok, gitaren, gameconsoles (xbox360, playstation, wii) etc. 1.5
Hardware en software
De meeste medewerker bij Ranj maken gebruik van gemiddelde specificaties pc’s met daarop het Windows XP besturingssysteem. Uiteraard zijn er wel high spec pc’s aanwezig voor de graphic design afdeling voor bijvoorbeeld ontwerpen in 3D. En juist ook een aantal low spec pc’s zodat games en applicaties die in ontwikkeling zijn getest kunnen worden op compatibiliteit. Enkele medewerkers maken gebruik van eigen laptops of macs. Ook is er een eigen geluidsstudio, server ruimte en beschikken ze over over diverse foto- en videocamera’s, belichtingslampen, montageapparatuur, beamer, projectiescherm, en sinds kort 2 grote nieuwe plasmaschermen Wat betreft software maakt Ranj natuurlijk veel gebruikt van het de Adobe Creative Suite waarbij met name Illustrator, Photoshop en Flash intensief gebruikt worden. Autodesk 3Dstudio Max wordt gebruikt bij 3D Ontwerpen. Als administratieve software wordt Microsoft Office gebruikt vooral voor Word, Excel en Powerpoint, en de programma’s Timewriter (planning en bijhouden gewerkte uren aan een project), Subversion (met meerdere gebruikers aan dezelfde bestanden werken) en PHP bugtracker (testresultaten database) waar ik in hoofdstuk 3 van dit stageverslag iets verder op in zal gaan.
6
1.6
Organisatiestructuur
Ranj heeft momenteel 21 vaste medewerkers in dienst en werkt daarnaast ook vaak samen met freelancers en stagiaires afhankelijk van de opdrachten die men op dat moment heeft lopen. Ondanks dat iedere medewerker en afdeling zijn/haar specifieke verantwoordelijkheden heeft, zijn er vaak tal van werkzaamheden die door iedereen worden uitgevoerd zoals bijvoorbeeld het testen van games en applicaties die in ontwikkeling zijn. De algemene organisatiestructuur met de daarbij behorende verantwoordelijkheden: Management aangevuld met financiele administratie & personeelszaken: Verantwoordelijk voor de algehele bedrijfsvoering en acquisities Michaël Bas Marcus Vlaar Albert-Jan Pomper Miranda Plomp
algemeen management creatief management operationeel management financiele admin. & personeelszaken
Projectmanagers: Verantwoordelijk voor tijdsplanning/budget en communicatie Roman Schoensee Froukje Stoffelsma Tamara Ackermans
projectmanager projectmanager projectmanager
Graphic Design aangevuld met assets developers: Verantwoordelijk voor alle grafische concepten en producten GAF van Baalen Basiel Jaspers Marc Reekers Eva de Winkel Paul Bierhaus
concept and artdirector senior designer senior designer junior designer, assets developer junior designer, assets developer
Gamedesign: Verantwoordelijk voor gameconcepten en functioneel ontwerpplan Bruno Jordaan Peter Nauta Rens van Slagmaat Rob Nelissen
gamedesigner gamedesigner gamedesigner gamedesigner
7
Programmeurs aangevuld met systeembeheer: Verantwoordelijk voor technisch ontwerpplan/implementatie Perry Seleski Lennart Quispel Frank Bovenkerk Wouter Baars
programmeur, systeem beheerder programmeur programmeur programmeur
Receptioniste en overige werkplekken: Saskia Jonker Overig
receptioniste stagiaires en freelancers
8
Hoofdstuk 2 Opdracht- en Taakomschrijving 2.1
Gesprek opdracht- en taakomschrijving
Bij mijn sollicitatiegesprek bij Ranj heb ik aangegeven dat ik het liefst alle facetten bij het ontwikkelen van een “serious game” graag eens zou willen meemaken van concept tot realisatie. Oorspronkelijk kom ik meer uit de ICT werkwereld, en verwachte ik dat het toch even wennen zou zijn binnen een creatieve omgeving. Uiteraard heb ik aangegeven dat techniek en programmeren voor mij wel voorop moesten staan gezien mijn afstudeerprofiel en eindstudieplan Mijn voornaamste doel tijdens deze stageperiode was het uitbreiden van mijn kennis over Adobe Flash, waarbij ik graag meer ervaring op wilde doen met het efficiënt bouwen van assets en daarnaast het programmeren van actionscript 3.0 code. Destijds heb ik van dit programma ook voorbeelden van school- en vrijetijdsopdrachten laten zien om te laten zien op wat voor niveau ik dit programma beheerste. Echter had ik nog geen kennis over actionscript 3.0 en het daarbij behorende object georiënteerd programmeren. Gelukkig werd me verteld dat de eerste weken als stagiaire binnen Ranj altijd werden beschouwd als oriëntatieweken waarbij zowel het bedrijf als de stagiair elkaar beter kan leren kennen wat betreft persoonlijke en zakelijke doelen. Het was erg kort dag toen ik het sollicitatiegesprek had (1 week vooraf), Waardoor het voor de projectmanagers lastig werd om me snel in te kunnen delen op bepaalde projecten. Daarnaast was het gezien de korte periode van mijn stage (3 maanden) ook moeilijk om mij bezig te gaan houden met de wat grotere en langer durende projecten omdat daarbij ook enige inlooptijd komt kijken. Echter waren er meer dan genoeg kleine (deel)opdrachten waar ik gezien mijn niveau ook nog genoeg van kon leren. En omdat ik meer aan de korter duurdere opdrachten zou werken had ik zodoende ook meer tijd om mee te kijken/lopen bij de overige werkzaamheden die er bij Ranj plaatsvonden Meer informatie over de projecten en opdrachten waar ik aan heb gewerkt vind u in hoofdstuk 3 - Rol en Werkzaamheden. 2.2 Persoonlijke Leerdoelen -
Van concept tot realisatie zien/begrijpen hoe een game tot stand komt Efficiënt Graphics naar werkbare Assets omzetten Basis leren van Object Georiënteerd Programmeren in Actionscript 3.0
9
Hoofdstuk 3 Rol en Werkzaamheden 3.1
Oriëntatieweken/Algemeen
Tijdens mijn oriëntatieweken (2 weken) heb ik na kennis te hebben gemaakt met alle medewerkers enige uitleg gehad over een aantal vaste procedures en programma’s welke Ranj toepast en essentieel zijn voor een goede verloop van vrijwel elk project. Daarnaast heb ik tijdens deze periode een basiscursus actionscript 3.0 en object georiënteerd programmeren gevolgd zodat ik deze later in de projecten kon toepassen. Ranj draagt er zorg voor dat de medewerkers niets te kort komen. Zo geldt dat ook voor de middaglunch. Alle stagiaires mogen van de zeer degelijk en uitgebreide lunch meeprofiteren zolang ze bereid zijn tussen de middag te helpen de lunch klaar te bereiden en klaar te zetten. Vanwege de ruime hoeveelheid stagiaires hebben we daarom een planning opgesteld wie er op welke dag mee zou helpen. Ranj gebruikt een aantal programma’s voor de algehele voortgang namelijk: -
Timewriter De Projectmanagers schatten vooraf in hoeveel uren een bepaalde medewerker aan een opdracht zal werken afhankelijk van het budget beschikbaar per project. Met behulp van het programma Timewriter kunnen medewerkers zelf bijhouden hoeveel daadwerkelijke uren dat zijn geworden. De projectmanagers controleren vervolgens deze Urenverantwoording en kunnen indien nodig tijdig ingrijpen.
-
Subversion Een lastig element van grote multimedia projecten waar veel mensen aan werken is dat meerdere medewerkers gelijktijdig met dezelfde bestanden in de weer zijn. Om er zorg voor te dragen dat medewerkers dit kunnen doen zonder elkaars werk te overschrijven wordt het programma subversion gebruikt
-
PHP Bugtracker Ranj heeft een eigen applicatie ontwikkeld waarin alle bugs worden gemeld met daarbij een status of deze is opgelost of wat de mogelijke problemen zijn. Regelmatig worden alle medewerkers en/of testgebruikers gevraagd om tests uit te voeren van programma’s die in ontwikkeling zijn.
Er is veel communicatie nodig tussen alle medewerkers en afdelingen onderling om een project te doen slagen. Naast de vergaderingen per project hebben medewerkers ook vaak korte vragen aan elkaar over bijvoorbeeld in welke bestandformaten iets opgeleverd dient te worden aan een assetdeveloper of programmeur (ook externe freelancers etc.). Het kost dan te veel tijd om steeds maar naar een andere afdeling te lopen. Daarom wordt er veel gebruik gemaakt van een eigen mailserver, msn of telefonisch communicatieverkeer.
10
3.2
Van concept tot realisatie
Om te kunnen zien en begrijpen hoe een game bij Ranj van concept tot realisatie tot stand komt zou ik in de meest ideale situatie een groter en langer durend project van begin tot einde mee moeten maken. Omdat dit helaas niet mogelijk was wegens mijn korte stageperiode en tevens nog geringe kennis van actionscript 3.0, ben ik daarom op verschillende (deel)opdrachten van projecten gezet, en heb ik kunnen meekijken bij grotere projecten waar op dat moment aan werd gewerkt. Zodoende heb ik toch voldoende inzicht kunnen krijgen hoe een serious game precies tot stand komt bij Ranj. Uiteraard verschilt het enorm per project op welke projectprocessen meer nadruk ligt. Hieronder probeer ik kort te beschrijven welke hoofdprocessen er sowieso in elk groter project weer terug komen: -
Acquisitie van een opdracht Inventariseren wensen en budget van de klant en de tijdsduur Onderzoek Brainstorm diverse medewerkers Gameconcepten bedenken Moodboard en concept graphics Regelmatig overleg klant Kiezen gameconcept Gameconcept uitwerken Uitwerken functioneel ontwerp Technisch ontwerp opstellen Overleg projectgenoten tussen afdeling/discpline op consistentie project (Uiteindelijke) graphics maken Graphics omzetten naar bruikbare assets voor de programmeur Moeilijkste delen van code als tests programmeren op functionaliteit Testen (Vanaf dat moment wordt dit continue gedaan) Geluiden en muziek maken en/of verzamelen Ontwikkeling testversie van de game Testen (nu eventueel ook met potentiële doelgroep) Eventueel aanpassingen aan graphics en assets Demonstratie testversie aan klant Opmerkingen klant en testgebruikers verwerken in testgame Eindontwikkeling
Ranj en haar medewerkers doen ook veel aan bewustwording van de potentie van serious games. Dit doen ze door regelmatig lezingen en workshops te geven over wat er al bereikt is. Dit zowel op scholen, als voor zakelijke klanten. Ook zijn er nog tal van potentiële doelgroepen die zelf nog geen idee hebben wat een serious game voor hun kan betekenen. Zo werd er tijdens mijn stage bijvoorbeeld verwacht dat er binnenkort een grote vraag zou komen naar serious games voor de zorgsector.
11
3.3
Korte samenvatting eigen werkzaamheden
Naast de algemen werkzaamheden en het meekijken bij verschillende projecten zijn dit mijn persoonlijke werkzaamheden geweest per project: Klu -bijeenkomst klant bijwonen -brainstorm -onderzoeken ding -geluidssamples gemaakt Logo scrapbook -assets aanpassen Loi ek viral -graphics omzetten naar assets Drugspreventie -testen Orde van Gis -testen Sharkworld -testen Tech ed -testen -level assets bouwen -website aanpassen -code doornemen Coach online Naast bovenstaande projecten had Ranj ook diverse prototypegames in ontwikkeling die puur als kennisvergaring waren opgesteld. Dit waren vaak games die voornamelijk uit actionscript code prototypes bestonden met daarbij hele simpele graphics. Hierbij heb ik onderzocht hoe de code precies in elkaar stak. Echter vond ik het nog lastig om hier zelf aan de verbeterpunten te werken wederom wegens mijn beperkte kennis van actionscript 3.0 In de volgende paragrafen ga ik verder in op de belangrijkste werkzaamheden die ik heb verricht per project.
12
3.2 KLU (Luchtmacht) (game design) http://www.luchtmacht-experience.nl
Afbeelding 1: Website KLU - overview
Op mijn eerste werkdag had ik het gelijk al getroffen. Vandaag was de kickoff van een nieuw project waarbij drie serious games voor de Koninklijke Luchtmacht zouden worden ontwikkeld die als doel hadden het werven van nieuw personeel voor de luchtmacht. Dit was een groot project dat binnen een zeer korte periode opgeleverd moest worden. Niet het gehele project werd door Ranj opgeleverd, een ander bedrijf had namelijk de website ontwikkeling op zich genomen en Ranj had de opdracht alleen de drie games te ontwikkelen die natuurlijk binnen eenzelfde stijl zouden passen bij de website. De kickoff bestond uit een bijeenkomst van Ranj medewerkers en de opdrachtgever: het communicatiebureau ARA www.ara.nl Voorafgaand aan deze bijeenkomst had het gamedesign team onder leiding van concept/art director GAF van Baalen al enkele ideeën en schetsen uitgewerkt voor twee van de games die werden vertoond. Het team van ARA was hier duidelijk erg enthousiast over, en na enige uitleg werd dan ook besloten die games in ieder geval verder te ontwikkelen. Nu moest er nog één spel bij komen, en na overleg werd besloten dat we die week een brainstorm zouden houden over een spel wat zou passen naast de andere spellen. Ook ik mocht bij die brainstorm aanwezig zijn die samen met een Rens: vaste junior gamedesign medewerker, de art director, een andere stagiaire Marc van CMD en mijzelf werd gehouden.
13
Eerlijk gezegd vond ik het moeilijk om moeilijk om mezelf hier gelijk in te mengen en keek ik eerst een beetje de kat uit de boom om te kijken hoe een brainstorm er hier aan toe ging. Echter als ik vond dat ik daadwerkelijk een bijdrage kon leveren dan liet ik me uiteraard wel horen. Uiteindelijk bleek dat het brainstormen ook hier net als bij schoolopdrachten heel openlijk ging zonder vooraf dingen uit te sluiten. De brainstorm ging verder heel voorspoedig. Vooraf hadden we wel een idee wat voor type spel nog paste bij het geheel, namelijk een spel waarbij reparatie aan F16’s verricht kon worden. Al snel kwamen meerdere van ons tegelijkertijd op het idee dat dit paste binnen een heel oud spel genaamd Pipe Mania”. Bij dat spel is het de bedoeling een pijpleiding van begin tot eind te leiden door verschillende leiding bij elkaar te voegen.
Afbeelding 2: Pipe Mania
Vervolgens werd er aan de hand van dit idee een F16 reparatie game opgesteld. Hierbij
14
15
3.3 Logo Scrapbook (assets) Project LOGO is opdracht vanuit een samenwerkingsverband tussen PAT Onderwijsinnovatie, Stichting Praktijkleren en Ranj Serious games. Scrapbook is een onderdeel van het spel “Later is Nu”. Later is Nu is opgezet vanuit de probleemstelling dat er tegenwoordig veel schooluitval is in het onderwijs. Onderzoek heeft daarbij uitgewezen dat veel (potentiële) studenten gebrek hebben aan beroeps+ zelfbeelden Toen ik aan dit project ben gaan werken had een voorgangerstagiaire al een aantal assets ontwikkeld, en was een programmeur al volop bezig met de code voorbereidingen. Voor dit project heb ik een aantal al aanwezige assets aangepast, en nieuwe graphics naar assets omgezet.
16
3.4 LOI EK Viral (assets) http://office.ranj.nl/videoquiz/game.php
Afbeelding 3: Het Nationale Oranje Examen Intro
Voor het LOI was er de opdracht een viral te ontwikkelen ter promotionele doeleinden als zijnde sponsor van het EK voetbal. Daarnaast werden via dit spel emailadressen verzameld ter aanvulling van de marketingdatabase voor het LOI. Toen ik gevraagd werd aan deze opdracht te werken was er al een gamedesign document en enige graphics ontwikkeld. De Technische realisatie zou worden uitgevoerd door wederom een al geslaagde cmd-er: Jostein die inmiddels een eigen bureau had opgestart www.buro26.nl . Mij werd gevraagd de assets te ontwikkelen voor deze video quiz game. Belangrijk daarbij was de communicatie tussen de programmeur Jostein en mijzelf hoe we zo efficiënt mogelijk de stukken graphics in flash konden zetten om dit te programmeren. Gameplay: In de quiz daag je een vriend uit via email om hem te verslaan op het gebied van voetbalkennis. De gastheer in de videoquiz stelt een viertal voetbalgerelateerde vragen in vier verschillende categorien en geeft daarbij op een grappige manier gelijk feedback op je ingevoerde antwoorden. Als de eerste speler de quiz heeft afgerond ontvangt de uitgedaagde speler een uitnodigingsmail om mee te doen met de competitie. Als beide spelers de quiz hebben afgerond worden de antwoorden met elkaar vergeleken. Als beide spelers een antwoord goed hebben geldt dat degene die het snelst heeft geantwoord wint. De winnaar van de competitie wint (als zijn/haar score hoog genoeg) is een unieke EK LOI pet. Ook wordt een hiscore
17
bijgehouden over alle spelers onderling zodat de uitdaging voor spelers groter wordt om meer mensen uit te nodigen en te winnen! Hieronder de evaluatie zoals ik deze heb opgesteld en heb besproken na de opdracht samen met mijn collega’s bij Ranj: De eerste opdracht waarbij ik heb kunnen meewerken tijdens mijn stage bij ranj.nl is voltooid en opgeleverd. Tijd dus voor een eerste evaluatie! Deze opdracht was al gestart voor mijn stageperiode, daarom ben ik begonnen met het doornemen van de beschikbare projectdocumentatie. Hierbij is voornamelijk het “Functioneel Ontwerp” erg interessant omdat hierin exact staat beschreven hoe het op te leveren product uiteindelijk stap voor stap moet functioneren, en wat er precies gebeurd als er foutmeldingen op treden. Naast het FO, waren er ook wireframes beschikbaar waarin je in “text mode” door heel het spel heel kunt klikken. Deze wireframes worden gemaakt zodat je kan testen of alle bedachte stappen in het FO daadwerkelijk kloppen, en of er misschien nog stappen zijn vergeten. Na het inlezen ben ik contact gaan zoeken met de betreffende projectgenoten. Dit waren Roman (Project Manager), GAF (Concept), Rens (Gamedesign), Basiel (Graphic Design), Jostein (Programmeur). Mijn werkzaamheden waren het bouwen van de assets. Waarbij het belangrijk is dat er goede communicatie is tussen het graphics en het programmeerteam. Hierbij ging ik als volgt te werk. Via basiel kreeg ik een photoshop bestand aangeleverd waarin alle noodzakelijke graphics stond. Samen met Jostein heb ik telefonisch alle stappen uit het FO doorgenomen om te kijken waar de probleempunten lagen. Vervolgens ben ik alle losse onderdelen in photoshop gaan uitknippen en als losse .png’s opgeslagen, om deze later in flash weer op te bouwen. Belangrijk hierbij is: - optimaliseren van de graphics (verhouding compressie/kwaliteit) - dynamische onderdelen aanbrengen (programmeer- en aanpasbaar) - juiste benamingen geven (logica voor de programmeur) - handige indeling van de library (overzichtelijk werken) Evaluatie project: Goede punten: - De uitdagen marketingtruuk - Grappige video’s Slechte punten: - Functioneel ontwerp en wireframes niet consistent - Deadline of Planning te krap? - Meer persoonlijke communicatie Persoonlijke evaluatie:
18
Mijn eerste gedachte over het bouwen van de assets was: simpel, dat doen we even. Echter bleek dat dit toch meer tijd koste dan ik vooraf had gedacht. In het vervolg moet ik dus erg oppassen met het inschatten van de tijdsduur. Ook had ik vooraf beter kunnen informeren wat de assets voor deze game nu precies inhielden. Nu ben ik eigenlijk een soort trail&error weg ingeslagen zodat ik tot een aantal onhandige beslissingen ben gekomen, of had ik niet eens door waar ik allemaal rekening mee moest/kon houden. Op een of andere manier vind ik dat juist ook wel fijn, omdat ik zodoende kan leren waarom je nou iets wel of niet op een bepaalde manier uitvoert. Echter kost dit natuurlijk onnodig veel tijd. Tijdens het werk heb ik regelmatig tips gekregen hoe ik beter/sneller te werk kan gaan door bepaalde snelkoppelingen of functies uit photoshop/flash toe te passen die het werk aanzienlijk makkelijker kunnen maken. Al met al het ik dus wel veel geleerd over: - manier van werken bij projecten binnen ranj - waar rekening mee te houden bij het bouwen van assets - handige snelkoppelingen of functies erbij geleerd in flash/photoshop
19
20
3.5 Drugspreventie
3.6 Tech ED (Red Fred 2) (programmeren)
21
Afbeelding: Level Design Tech-Ed
22
23
24
3.7 OTIB - Coach Online – Doe het Zelf 2- begeleiden doe je zó http://www.coachonline.otib.nl/Instrument.aspx?id=57 Omschrijving: Voor het opleiding- en ontwikkelingsfonds voor het technisch installatiebedrijf (OTIB) maakt Ranj regelmatig nieuwe multimediale producten. Deze keer werd er gewerkt aan het Coach Online pakket. Coach online is een kennisplatform en verzameling van tools voor de leermeesters en stagebegeleiders van technische installatiebedrijven om hen te ondersteunen tijdens hun rol. Een van de onderdelen van de coach online website is een 7-tal van zelftests waarbij de leermeesters en stagebegeleiders hun kennis over het begeleiden van hun stagiaires kunnen testen. Mij werd daarbij gevraagd de 2e test genaamd “begeleiden doe je zo” daarbij volledig te programmeren in mijn eerder opgedane kennis van actionscript 3.0 uit mijn introductieweken. Dit zou voor mij het belangrijkste onderdeel van mijn stage worden aangezien ik had aangegeven meer met actionscript te willen werken, en dit dus mijn eerste professionele applicatie zou worden. Doorgenomen referentiemateriaal en functioneel document: Voordat ik daadwerkelijk aan het programmeren kon beginnen heb ik eerst het functionele ontwerp goed doorgelezen. Aan de hand daarvan kon ik daarna eerst een technisch ontwerp opstellen zoals ik had afgesproken met de projectmanager. Hierin werd gesteld dat de speler met een begeleidingsmatrix proefondervindelijk kon ervaren hoe je leiderschapsstijlen kan toepassen om een leerling zo effectief mogelijk aan te sturen, afhankelijk van de bekwaamheid en bereidheid van de leerling. Door de bekwaamheid (skill) en bereidheid (will) flink te charteren wordt het effect duidelijker.
25
Afbeelding: “Will & Skill Matrix”
Het onderliggend concept gaat hierbij uit van de zogenaamde “Will & Skill Matrix”. Eén van de bekendste modellen voor leidinggeven zoals deze is bedacht door: Hersey en Blanchard – Situationeel leiderschap (2007) http://123management.nl/0/030_cultuur/a300_cultuur_11_situationeel_leidersc hap.html De uitgangspunten voor effectief begeleiden zijn eenvoudig: een ervaren persoon (hoge skill) heeft geen taakgerichte aansturing nodig, een gemotiveerde leerling (will) geen nadrukkelijk mensgerichte aansturing. -
De stijl Intrueren is effectief wanneer de leerling niet of nauwelijks bekwaam en niet of nauwelijks bereid (of onzeker) is. Stimuleren is effectief wanneer de medewerker bekwaam is maar weinig bereidheid of zelfvertrouwen heeft. Opleiding werkt het best bij medewerkers die niet bekwaam maar wel gemotiveerd zijn. Delegeren het best werkt bij “professionals” die zowel bekwaam als bereid zijn.
Aan de hand van het model is vervolgens een gameconcept opgesteld waarbij de speler een aantal situaties voorgelegd krijgt waarin hij een bepaald soort begeleiding moet kiezen. De speler oefent op deze manier in het kiezen van de meest passende stijl gegeven de situatie. Daarbij moet er ook rekening worden gehouden met de bekwaamheden van de leerling. Er worden een aantal situaties apart gevisualiseerd met aandacht voor: -
de situatie of de klus die geklaard moet worden het competentieniveau van de leerling (skill) de motivatie van de leerling (will)
26
Bij iedere situatie worden 4 mogelijkheden (stijlen van leiding geven) gegeven om met de situatie om te gaan. De speler krijgt direct na zijn keuze feedback middels een nieuw plaatje waarin de situatie is veranderd. Afhankelijk of dit de goede of foute keuze is geweest krijgt de speler verklarende teksten te lezen en wordt dit ondersteund door een goed/fout geluid . Rechtsonder in het scherm wordt bovendien bijgehouden middel een rood/groen bolletje of je eerste keuze goed of fout was. Je kunt daarna nog wel terug naar de situatie om te kijken wat dan wel de goede keuze had moeten zijn, maar dit wordt niet meer meegenomen in de behaalde score. Hieronder is de eerste interface opzet te zien. Het midden van het scherm moet daarbij worden voorgesteld als een bewegend plaatje wat naar de kant meebeweegt die jij als speler kiest. Als jij dus bijvoorbeeld bij een situatie de keuze stimuleren kiest, schuift het plaatje naar links en zie je een visualisatie over het effect stimuleren bij de betreffende situatie.
Afbeelding: Interface Opzet: Coach Online – Doe Het Zelf 2 – Begeleiden doe je zó
De applicatie is dus enerzijds bedoeld voor exploratie, maar bevat ook een spelelement. Op de volgende pagina is daarbij het score model te zien waarbij elke situatie
27
28
29
30
31
32
33
Hoofdstuk 4 Reflectie en Conclusie 4.1
Persoonlijke ervaring werkomgeving
Wat me meteen al opviel in de eerste dagen van mijn stage was de moderne wijze waarop het bedrijf haar organisatiestructuur uitte naar de medewerkers toe. In tegenstelling tot de vele anders stages die ik heb gevolgd voor vorige opleidingen hing er geen hiërarchische cultuur binnen Ranj. Dit komt naar mijn mening de creatieve sfeer zeker ten goede. Natuurlijk houden de projectmanagers en Albert-Jan wel een oogje in het zeil, maar iedere medewerker kan zijn/haar werk doen zonder “last” te hebben van een “baas”. Er hangt een zeer openlijke en vriendelijke communicatieve sfeer. Hier moest ik zelf wel een beetje aan wennen omdat ik soms wel iemand kan gebruiken die een beetje achter me aan zit. Er wordt dus enige zelfstandigheid verwacht van de medewerkers. Binnen Ranj hadden de werknemers duidelijk een specialiteit en per project probeerde men mensen van een specifieke afdeling dan ook zoveel mogelijk binnen zijn/haar specialiteit te laten werken. Daarbij moet gezegd worden dat men juist ook veel van elkaar kon leren. Per project werden steeds diverse medewerkers in combinatie met stagiaires en freelancers in een team gezet waarbij zowel op zakelijke als persoonlijke ambities gelet zou worden. Achteraf werd daarbij ook voldoende geëvalueerd. Wat me ook erg opviel tegenover eerdere stages was dat medewerkers niets te kort kwamen aan zowel ontspanning. Als je in een creatieve omgeving werkt is het soms goed om ook even te ontspannen om tot nieuwe inzichten te komen. Het is dan ook geen probleem om even op te staan van je werkplek om even tot rust te komen of denken over het probleem waar je tegenaan loopt. Voor mijn stageperiode heb ik gehoord dat er zelfs een tijdje aan tai chi werd gedaan ter bevordering van de lichamelijk en geestelijke gesteldheid. Tussen de middag werd er gezamenlijk zeer uitgebreid geluncht, en ook na werktijd was er regelmatig tijd om samen een drankje te doen. Soms werden daarbij ook games gespeeld wat de teamspirit natuurlijk bevorderd. De meeste medewerkers werken 4 dagen per week (maandag tot donderdag). Elke donderdag was er nadien een borrel.
34
Bronvermeldingen en verwijzingen Websites: Ranj Serious Games www.ranj.nl Hootchie Cootschie http://www.hootchiecootchie.nl/ Purno de Purno http://www.purnodepurno.nl/ Schiecentrale www.schiecentrale.nl ARA
www.ara.nl
Buro 26 www.buro26.nl Hersey en Blanchard – Situationeel leiderschap (2007) http://123management.nl/0/030_cultuur/a300_cultuur_11_situationeel_le iderschap.html http://office.ranj.nl/videoquiz/game.php http://www.coachonline.otib.nl/Instrument.aspx?id=57 Interne documentatie Ranj: Functioneel Ontwerp Coach Online
35
Bijlage 2 DoeHetZelf2 Actionscript 3 Code // Ranj Serious Games // Peter van Puijvelde package { //import flash.display.Sprite; import flash.display.MovieClip; import flash.display.*; import flash.display.SimpleButton; import flash.text.*; import flash.events.*; import flash.media.*; public class DoeHetZelf2 extends MovieClip { //game public public public public public public public public public public public public public public public public public public public public public public public public public public
variabelen: var uitstekendpunten = 0; var goedpunten = 0; var zwakpunten = 0; var totaalgoedpunten = 0; var counter = 0; var volgendeknop:Boolean = false; var counterback = 0; var sit1gedaan:Boolean = false; var sit2gedaan:Boolean = false; var sit3gedaan:Boolean = false; var sit4gedaan:Boolean = false; var sit5gedaan:Boolean = false; var uitstekend:uitstekendsound = new uitstekendsound(); var goed:goedsound = new goedsound(); var zwak:zwaksound = new zwaksound(); var pijlindicator:String = "geen"; var mouseoverindicator:String = "geen"; var mouseoutindicator:String = "geen"; var sitactief: Boolean = false; var sit1graph: Boolean = true; var sit2graph: Boolean = false; var sit3graph: Boolean = false; var sit4graph: Boolean = false; var sit5graph: Boolean = false; var endgraph:Boolean = false; var huidigesituatie = 1;
public function DoeHetZelf2() { trace ("DoeHetZelf2 Constructor uitgevoerd!"); addEventListener(Event.ENTER_FRAME, loading); }
36
function loading(event:Event) { trace("loading"); var bytestotal = stage.loaderInfo.bytesTotal; trace ("bytestotal :", bytestotal); var bytesloaded = stage.loaderInfo.bytesLoaded; trace ("bytesloaded :", bytesloaded); var sclbar = Math.round(bytesloaded*100/bytestotal); trace ("sclbar =", sclbar); laadbalk.gotoAndPlay(sclbar); if (bytesloaded >= bytestotal) { removeEventListener(Event.ENTER_FRAME, loading); removeChild(laadbalk); gotoAndStop("init"); } else { gotoAndPlay("prel"); } } public function initialise () { trace("initialisatie wordt gestart"); uitstekendpunten = 0; goedpunten = 0; zwakpunten = 0; totaalgoedpunten = 0; counter = 0; volgendeknop = false; counterback = 0; sit1gedaan = false; sit2gedaan = false; sit3gedaan = false; sit4gedaan = false; sit5gedaan = false; pijlindicator = "geen"; mouseoverindicator = "geen"; mouseoutindicator = "geen"; sitactief = false; sit1graph = true; sit2graph = false; sit3graph = false; sit4graph = false; sit5graph = false; endgraph = false; huidigesituatie = 1; trace("initialisatie is compleet"); gotoAndStop("sit1"); } public function situatie() {
37
trace("situatie wordt gestart"); checkgraphicspersituatie(); pijlindicator = "geen"; sitactief = true; addEventListener(Event.ENTER_FRAME, situatieloop); mc_comic.left_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.right_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.up_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.down_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.left_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mc_comic.right_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mc_comic.up_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mc_comic.down_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mc_comic.left_btn.addEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.addEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.addEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.down_btn.addEventListener(MouseEvent.CLICK, kiesinstrueren); next_btn.addEventListener(MouseEvent.CLICK, nextsit); if (volgendeknop == false) { next_btn.visible = false; trace ("volgendeknop uit"); } if (huidigesituatie == 1) { sit1text.text = "Je hebt de leerling gevraagd een voorstel te maken voor het oplossen van een probleem. Met enige ondersteuning van jouw kant voert deze leerling gewoonlijk zijn opdracht binnen de tijd uit. Het voorstel dreigt nu te laat te komen. Wat doe je?"; } else if (huidigesituatie == 2) { sit2text.text = "Een leerling voelt zich onzeker over de taak. Hij is zeer competent en je weet dat hij de taak met succes kan uitvoeren. Wat doe je?"; } else if (huidigesituatie == 3) { sit3text.text = "Deze leerling komt altijd te laat, zonder zich te verontschuldigen. Hij heeft bovendien een grote achterstand in zijn werk. Wat doe je?"; } else if (huidigesituatie == 4) { sit4text.text = "Een zeer productieve leerling heeft om hulp gevraagd. Normaal kan hij goed zelfstandig werken, maar er zijn wat problemen die hij niet alleen denkt te kunnen oplossen. Wat doe je?"; } else if (huidigesituatie == 5) { sit5text.text = "Er is een nieuwe leerling. Hoewel hij onervaren is en gebrek aan zelfvertrouwen heeft, geloof je dat hij wel de capaciteiten heeft om het werk te doen. Wat doe je?";
38
} } function situatieloop(ev:Event):void { trace("situatieloop:"+ev); checkgraphicspersituatie(); counter ++; trace (counter); if (mouseoverindicator == "geen" && counter < 6) { mc_comic.down.btnarrow.y = mc_comic.up.btnarrow.y = mc_comic.left.btnarrow.y = mc_comic.right.btnarrow.y = 0; } else if (mouseoverindicator == "geen" && counter < 12) { mc_comic.down.btnarrow.y = mc_comic.up.btnarrow.y = mc_comic.left.btnarrow.y = mc_comic.right.btnarrow.y = -2; } else { counter = 0; } } function mouseover_stimuleren_activeren(event:MouseEvent):void { mouseoverindicator = "aan"; trace("mouse over stimuleren"); mc_comic.left.gotoAndStop(2); } function mouseout_stimuleren_handler(event:MouseEvent):void { mouseoverindicator = "geen"; mouseoutindicator = "aan"; trace("mouse out stimuleren"); mc_comic.left.gotoAndStop(1); } function mouseover_onderwijzen_activeren(event:MouseEvent):void { mouseoverindicator = "aan"; trace("mouse over onderwijzen"); mc_comic.right.gotoAndStop(2); } function mouseout_onderwijzen_handler(event:MouseEvent):void { mouseoverindicator = "geen"; mouseoutindicator = "aan"; trace("mouse out onderwijzen"); mc_comic.right.gotoAndStop(1); }
39
function mouseover_delegeren_activeren(event:MouseEvent):void { mouseoverindicator = "aan"; trace("mouse over delegeren"); mc_comic.up.gotoAndStop(2); } function mouseout_delegeren_handler(event:MouseEvent):void { mouseoverindicator = "geen"; mouseoutindicator = "aan"; trace("mouse out delegeren"); mc_comic.up.gotoAndStop(1); } function mouseover_instrueren_activeren(event:MouseEvent):void { mouseoverindicator = "aan"; trace("mouse over instrueren"); mc_comic.down.gotoAndStop(2); } function mouseout_instrueren_handler(event:MouseEvent):void { mouseoverindicator = "geen"; mouseoutindicator = "aan"; trace("mouse out instrueren"); mc_comic.down.gotoAndStop(1); } function kiesstimuleren(event:MouseEvent):void { trace ("er is geklikt op stimuleren"); mouseoverindicator = "geen"; checkgraphicspersituatie(); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen);
40
mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); if (huidigesituatie == 1) { uitstekend.play(); sit1text.text = "placeholder reactie } else if (huidigesituatie == 2) { uitstekend.play(); sit2text.text = "placeholder reactie } else if (huidigesituatie == 3) { goed.play(); sit3text.text = "placeholder reactie } else if (huidigesituatie == 4) { zwak.play(); sit4text.text = "placeholder reactie } else if (huidigesituatie == 5) { goed.play(); sit5text.text = "placeholder reactie }
op situatie 1 - keuze stimuleren";
op situatie 2 - keuze stimuleren";
op situatie 3 - keuze stimuleren";
op situatie 4 - keuze stimuleren";
op situatie 5 - keuze stimuleren";
if (huidigesituatie == 1 && sit1gedaan == false) { sit1.gotoAndStop(2); sit1gedaan = true; uitstekend.play(); trace ("situatie 1 heeft een uitstekend score!"); uitstekendpunten = uitstekendpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 2 && sit2gedaan == false) { sit2.gotoAndStop(2); sit2gedaan = true; uitstekend.play(); trace ("situatie 2 heeft een uitstekend score!"); uitstekendpunten = uitstekendpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 3 && sit3gedaan == false) { sit3.gotoAndStop(3); sit3gedaan = true;
41
goed.play(); trace ("situatie 3 heeft een goed score!"); goedpunten = goedpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 4 && sit4gedaan == false) { sit4.gotoAndStop(4); sit4gedaan = true; zwak.play(); trace ("situatie 4 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 5 && sit5gedaan == false) { sit5.gotoAndStop(3); sit5gedaan = true; goed.play(); trace ("situatie 5 heeft een goed score!"); goedpunten = goedpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } sitactief = false; trace ("var sit1gedaan = " +sit1gedaan); trace ("var sit2gedaan = " +sit2gedaan); trace ("var sit3gedaan = " +sit3gedaan); trace ("var sit4gedaan = " +sit4gedaan); trace ("var sit5gedaan = " +sit5gedaan); removeEventListener(Event.ENTER_FRAME, situatieloop); if (volgendeknop == true) { next_btn.visible = true; trace ("volgendeknop aan"); } mc_comic.gotoAndPlay("left"); }
function kiesdelegeren(event:MouseEvent):void {
42
trace ("er is geklikt op delegeren"); mouseoverindicator = "geen"; checkgraphicspersituatie(); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); mc_comic.gotoAndPlay("up"); if (huidigesituatie == 1) { zwak.play(); sit1text.text = "placeholder reactie } else if (huidigesituatie == 2) { goed.play(); sit2text.text = "placeholder reactie } else if (huidigesituatie == 3) { zwak.play(); sit3text.text = "placeholder reactie } else if (huidigesituatie == 4) { goed.play(); sit4text.text = "placeholder reactie } else if (huidigesituatie == 5) { zwak.play(); sit5text.text = "placeholder reactie }
op situatie 1 - keuze delegeren";
op situatie 2 - keuze delegeren";
op situatie 3 - keuze delegeren";
op situatie 4 - keuze delegeren";
op situatie 5 - keuze delegeren";
if (huidigesituatie == 1 && sit1gedaan == false) { sit1.gotoAndStop(4); sit1gedaan = true; zwak.play(); trace ("situatie 1 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:");
43
trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 2 && sit2gedaan == false) { sit2.gotoAndStop(3); sit2gedaan = true; goed.play(); trace ("situatie 2 heeft een goed score!"); goedpunten = goedpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 3 && sit3gedaan == false) { sit3.gotoAndStop(4); sit3gedaan = true; zwak.play(); trace ("situatie 3 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 4 && sit4gedaan == false) { sit4.gotoAndStop(3); sit4gedaan = true; goed.play(); trace ("situatie 4 heeft een goed score!"); goedpunten = goedpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 5 && sit5gedaan == false) { sit5.gotoAndStop(4); sit5gedaan = true; zwak.play(); trace ("situatie 5 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten);
44
trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } sitactief = false; trace ("var sit1gedaan = " +sit1gedaan); trace ("var sit2gedaan = " +sit2gedaan); trace ("var sit3gedaan = " +sit3gedaan); trace ("var sit4gedaan = " +sit4gedaan); trace ("var sit5gedaan = " +sit5gedaan); removeEventListener(Event.ENTER_FRAME, situatieloop); if (volgendeknop == true) { next_btn.visible = true; trace ("volgendeknop aan"); } } function kiesonderwijzen(event:MouseEvent):void { trace ("er is geklikt op onderwijzen"); mouseoverindicator = "geen"; checkgraphicspersituatie(); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); mc_comic.gotoAndPlay("right"); if (huidigesituatie == 1) { zwak.play(); sit1text.text = "placeholder reactie op situatie 1 - keuze onderwijzen"; } else if (huidigesituatie == 2) { zwak.play();
45
sit2text.text = "placeholder reactie onderwijzen"; } else if (huidigesituatie == 3) { zwak.play(); sit3text.text = "placeholder reactie onderwijzen"; } else if (huidigesituatie == 4) { uitstekend.play(); sit4text.text = "placeholder reactie onderwijzen"; } else if (huidigesituatie == 5) { zwak.play(); sit5text.text = "placeholder reactie onderwijzen"; }
op situatie 2 - keuze
op situatie 3 - keuze
op situatie 4 - keuze
op situatie 5 - keuze
if (huidigesituatie == 1 && sit1gedaan == false) { sit1.gotoAndStop(4); sit1gedaan = true; zwak.play(); trace ("situatie 1 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 2 && sit2gedaan == false) { sit2.gotoAndStop(4); sit2gedaan = true; zwak.play(); trace ("situatie 2 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 3 && sit3gedaan == false) { sit3.gotoAndStop(4); sit3gedaan = true; zwak.play(); trace ("situatie 3 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten);
46
volgendeknop = true; } else if (huidigesituatie == 4 && sit4gedaan == false) { sit4.gotoAndStop(2); sit4gedaan = true; uitstekend.play(); trace ("situatie 4 heeft een uitstekend score!"); uitstekendpunten = uitstekendpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 5 && sit5gedaan == false) { sit5.gotoAndStop(4); sit5gedaan = true; zwak.play(); trace ("situatie 5 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } sitactief = false; trace ("var sit1gedaan = " +sit1gedaan); trace ("var sit2gedaan = " +sit2gedaan); trace ("var sit3gedaan = " +sit3gedaan); trace ("var sit4gedaan = " +sit4gedaan); trace ("var sit5gedaan = " +sit5gedaan); removeEventListener(Event.ENTER_FRAME, situatieloop); if (volgendeknop == true) { next_btn.visible = true; trace ("volgendeknop aan"); } } function kiesinstrueren(event:MouseEvent):void { trace ("er is geklikt op instrueren"); mouseoverindicator = "geen"; checkgraphicspersituatie(); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler);
47
mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); mc_comic.gotoAndPlay("down"); if (huidigesituatie == 1) { goed.play(); sit1text.text = "placeholder reactie } else if (huidigesituatie == 2) { zwak.play(); sit2text.text = "placeholder reactie } else if (huidigesituatie == 3) { uitstekend.play(); sit3text.text = "placeholder reactie } else if (huidigesituatie == 4) { zwak.play(); sit4text.text = "placeholder reactie } else if (huidigesituatie == 5) { uitstekend.play(); sit5text.text = "placeholder reactie }
op situatie 1 - keuze instrueren";
op situatie 2 - keuze instrueren";
op situatie 3 - keuze instrueren";
op situatie 4 - keuze instrueren";
op situatie 5 - keuze instrueren";
if (huidigesituatie == 1 && sit1gedaan == false) { sit1.gotoAndStop(3); sit1gedaan = true; goed.play(); trace ("situatie 1 heeft een goed score!"); goedpunten = goedpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 2 && sit2gedaan == false) { sit2.gotoAndStop(4);
48
sit2gedaan = true; zwak.play(); trace ("situatie 2 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 3 && sit3gedaan == false) { sit3.gotoAndStop(2); sit3gedaan = true; uitstekend.play(); trace ("situatie 3 heeft een uitstekend score!"); uitstekendpunten = uitstekendpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 4 && sit4gedaan == false) { sit4.gotoAndStop(4); sit4gedaan = true; zwak.play(); trace ("situatie 4 heeft een zwak score!"); zwakpunten = zwakpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } else if (huidigesituatie == 5 && sit5gedaan == false) { sit5.gotoAndStop(2); sit5gedaan = true; uitstekend.play(); trace ("situatie 5 heeft een uitstekend score!"); uitstekendpunten = uitstekendpunten + 1; trace ("de score is momenteel:"); trace ("uitstekendpunten totaal:" +uitstekendpunten); trace ("goedpunten totaal:" +goedpunten); trace ("zwakpunten totaal:" +zwakpunten); volgendeknop = true; } sitactief = trace ("var trace ("var trace ("var trace ("var
false; sit1gedaan sit2gedaan sit3gedaan sit4gedaan
= = = =
" " " "
+sit1gedaan); +sit2gedaan); +sit3gedaan); +sit4gedaan);
49
trace ("var sit5gedaan = " +sit5gedaan); removeEventListener(Event.ENTER_FRAME, situatieloop); if (volgendeknop == true) { next_btn.visible = true; trace ("volgendeknop aan"); } } public function stimulerenterugactiveren() { checkgraphicspersituatie(); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.right_btn.addEventListener(MouseEvent.CLICK, stimulerenbacknaarright); mc_comic.right_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler); mc_comic.right_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); pijlindicator = "rightactief"; addEventListener(Event.ENTER_FRAME, pijlrechts); trace ("event listener right button removed"); } function pijlrechts(event:Event) { checkgraphicspersituatie(); trace("wacht op pijlrechts"+event); counterback ++; if (mouseoverindicator == "geen" && counterback < 6) { mc_comic.right.btnarrow.y = 0; } else if (mouseoverindicator == "geen" && counterback < 12) { mc_comic.right.btnarrow.y = -2; } else { counterback = 0; } } function stimulerenbacknaarright(event:MouseEvent):void { checkgraphicspersituatie(); trace ("pijl --> terug naar situatie is geklikt"); removeEventListener(Event.ENTER_FRAME, pijlrechts); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, stimulerenbacknaarright); mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_onderwijzen_handler);
50
mc_comic.right_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_onderwijzen_activeren); mouseoverindicator = "geen"; mc_comic.gotoAndPlay("left_b"); } public function delegerenterugactiveren() { checkgraphicspersituatie(); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); mc_comic.down_btn.addEventListener(MouseEvent.CLICK, delegerenbacknaaronder); mc_comic.down_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.down_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); pijlindicator = "downactief"; addEventListener(Event.ENTER_FRAME, pijlonder); trace ("event listener up button removed"); } function pijlonder(event:Event) { checkgraphicspersituatie(); trace("wacht op pijlonder"+event); counterback ++; if (mouseoverindicator == "geen" && counterback < 6) { mc_comic.down.btnarrow.y = 0; } else if (mouseoverindicator == "geen" && counterback < 12) { mc_comic.down.btnarrow.y = -2; } else { counterback = 0; } } function delegerenbacknaaronder(event:MouseEvent):void { checkgraphicspersituatie(); trace ("pijl --> terug naar situatie is geklikt"); removeEventListener(Event.ENTER_FRAME, pijlonder); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, delegerenbacknaaronder); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_instrueren_handler); mc_comic.down_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_instrueren_activeren); mouseoverindicator = "geen";
51
mc_comic.gotoAndPlay("up_b");
} public function onderwijzenterugactiveren() { checkgraphicspersituatie(); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.left_btn.addEventListener(MouseEvent.CLICK, onderwijzenbacknaarlinks); mc_comic.left_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.left_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); pijlindicator = "leftactief"; addEventListener(Event.ENTER_FRAME, pijllinks); trace ("event listener links button removed"); } function pijllinks(event:Event) { checkgraphicspersituatie(); trace("wacht op pijllinks"+event); counterback ++; if (mouseoverindicator == "geen" && counterback < 6) { mc_comic.left.btnarrow.y = 0; } else if (mouseoverindicator == "geen" && counterback < 12) { mc_comic.left.btnarrow.y = -2; } else { counterback = 0; } } function onderwijzenbacknaarlinks(event:MouseEvent):void { checkgraphicspersituatie(); trace ("pijl --> terug naar situatie is geklikt"); removeEventListener(Event.ENTER_FRAME, pijllinks); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, onderwijzenbacknaarlinks); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_stimuleren_handler); mc_comic.left_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_stimuleren_activeren); mouseoverindicator = "geen"; mc_comic.gotoAndPlay("right_b");
52
} public function instruerenterugactiveren() { checkgraphicspersituatie(); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.up_btn.addEventListener(MouseEvent.CLICK, instruerenbacknaarboven); mc_comic.up_btn.addEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.up_btn.addEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); pijlindicator = "upactief"; addEventListener(Event.ENTER_FRAME, pijlboven); trace ("event listener boven button removed"); } function pijlboven(event:Event) { checkgraphicspersituatie(); trace("wacht op pijlboven"+event); counterback ++; if (mouseoverindicator == "geen" && counterback < 6) { mc_comic.up.btnarrow.y = 0; } else if (mouseoverindicator == "geen" && counterback < 12) { mc_comic.up.btnarrow.y = -2; } else { counterback = 0; } } function instruerenbacknaarboven(event:MouseEvent):void { checkgraphicspersituatie(); trace ("pijl --> terug naar situatie is geklikt"); removeEventListener(Event.ENTER_FRAME, pijlboven); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, instruerenbacknaarboven); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OUT, mouseout_delegeren_handler); mc_comic.up_btn.removeEventListener(MouseEvent.MOUSE_OVER, mouseover_delegeren_activeren); mouseoverindicator = "geen"; mc_comic.gotoAndPlay("down_b"); } public function checkgraphicspersituatie ()
53
{ trace("check welke graphic uit mc_comic wordt geladen:") if (huidigesituatie == 1 /*&& sit1graph == true*/) { trace ("sit1graph = true"); mc_comic.centercomic.gotoAndStop(1); mc_comic.leftcomic.gotoAndStop(1); mc_comic.rightcomic.gotoAndStop(1); mc_comic.upcomic.gotoAndStop(1); mc_comic.downcomic.gotoAndStop(1); } else if (huidigesituatie == 2 /*&& sit2graph == true*/) { trace ("sit2graph = true"); mc_comic.centercomic.gotoAndStop(2); mc_comic.leftcomic.gotoAndStop(2); mc_comic.rightcomic.gotoAndStop(2); mc_comic.upcomic.gotoAndStop(2); mc_comic.downcomic.gotoAndStop(2); } else if (huidigesituatie == 3 /*&&sit3graph == true*/) { trace ("sit3graph = true"); mc_comic.centercomic.gotoAndStop(3); mc_comic.leftcomic.gotoAndStop(3); mc_comic.rightcomic.gotoAndStop(3); mc_comic.upcomic.gotoAndStop(3); mc_comic.downcomic.gotoAndStop(3); } else if (huidigesituatie == 4 /*&&sit4graph == true*/) { trace ("sit4graph = true"); mc_comic.centercomic.gotoAndStop(4); mc_comic.leftcomic.gotoAndStop(4); mc_comic.rightcomic.gotoAndStop(4); mc_comic.upcomic.gotoAndStop(4); mc_comic.downcomic.gotoAndStop(4); } else if (huidigesituatie == 5 /*&&sit5graph == true*/) { trace ("sit5graph = true"); mc_comic.centercomic.gotoAndStop(5); mc_comic.leftcomic.gotoAndStop(5); mc_comic.rightcomic.gotoAndStop(5); mc_comic.upcomic.gotoAndStop(5); mc_comic.downcomic.gotoAndStop(5); } } function nextsit(event:MouseEvent):void { checkgraphicspersituatie(); trace ("check welke situatie wordt gestart"); volgendeknop = false; huidigesituatie = huidigesituatie + 1; trace ("de nieuwe situatie is:" +huidigesituatie); mc_comic.gotoAndStop(1); trace ("volgendeknop is gedeactiveerd tot speler een nieuwe keuze maakt"); if (sitactief == true)
54
{ trace ("situatie is momenteel actief, deze wordt gereset voor nieuwe situatie"); trace ("alle aanwezige event listeners worden hierdoor verwijderd!") removeEventListener(Event.ENTER_FRAME, situatieloop); mc_comic.left_btn.removeEventListener(MouseEvent.CLICK, kiesstimuleren); mc_comic.up_btn.removeEventListener(MouseEvent.CLICK, kiesdelegeren); mc_comic.right_btn.removeEventListener(MouseEvent.CLICK, kiesonderwijzen); mc_comic.down_btn.removeEventListener(MouseEvent.CLICK, kiesinstrueren); next_btn.removeEventListener(MouseEvent.CLICK, nextsit); } if (pijlindicator == "geen") { trace ("er is momenteel geen pijl --> | terug naar situatie | event listener actief"); } else if (pijlindicator == "leftactief") { trace ("de linkerpijl --> | terug naar situatie | event listener wordt gedeactiveerd"); removeEventListener(Event.ENTER_FRAME, pijllinks); } else if (pijlindicator == "upactief") { trace ("de bovenpijl --> | terug naar situatie | event listener wordt gedeactiveerd"); removeEventListener(Event.ENTER_FRAME, pijlboven); } else if (pijlindicator == "rightactief") { trace ("de rechterpijl --> | terug naar situatie | event listener wordt gedeactiveerd"); removeEventListener(Event.ENTER_FRAME, pijlrechts); } else if (pijlindicator == "downactief") { trace ("de onderpijl --> | terug naar situatie | event listener wordt gedeactiveerd"); removeEventListener(Event.ENTER_FRAME, pijlonder); } if (huidigesituatie == 2) { gotoAndStop("sit2"); } else if (huidigesituatie { gotoAndStop("sit3"); } else if (huidigesituatie { gotoAndStop("sit4"); } else if (huidigesituatie { gotoAndStop("sit5"); } else if (huidigesituatie { gotoAndStop("end"); }
== 3) == 4) == 5) == 6)
55
} public function eindscherm () { totaalgoedpunten = uitstekendpunten + goedpunten; trace ("Je hebt:" +totaalgoedpunten + "antwoorden uitstekend of goed beantwoord"); playagain_btn.addEventListener(MouseEvent.CLICK, playagain); if (totaalgoedpunten == 0) { mc_comic.gotoAndStop(1); score.text = "Je hebt " +totaalgoedpunten + " van de 5 situaties goed gekozen"; } else if (totaalgoedpunten { mc_comic.gotoAndStop(2); } else if (totaalgoedpunten { mc_comic.gotoAndStop(3); } else if (totaalgoedpunten { mc_comic.gotoAndStop(4); } else if (totaalgoedpunten { mc_comic.gotoAndStop(5); } else if (totaalgoedpunten { mc_comic.gotoAndStop(6); }
== 1) == 2) == 3) == 4) == 5)
if (uitstekendpunten >= 1) { score.text = "Je hebt " +totaalgoedpunten + " van de 5 situaties goed gekozen, waarvan " +uitstekendpunten +" uitstekend!"; } else if (uitstekendpunten >= 5) { score.text = "Je hebt " +totaalgoedpunten + " van de 5 situaties goed gekozen, waarvan alle " +uitstekendpunten +" uitstekend!"; } } function playagain(event:MouseEvent):void { playagain_btn.removeEventListener(MouseEvent.CLICK, playagain); trace("Opnieuw spelen knop is geklikt! Er wordt een nieuw spel gestart"); gotoAndPlay("init"); } } }
56