Gameprogrammeren: Keuzeopdrachten Arjan Egges Paul Bergervoet Wouter van Toll
De if-opdracht We gebruiken ‘if’ (=als) om een opdracht conditioneel uit te voeren Doe iets als een zekere voorwaarde (conditie) geldt Die conditie staat achter ‘if’, tussen haakjes: Ander voorbeeld: if (k.IsKeyDown(Keys.K)) // doe iets (Methode van KeyboardState) if (aantalPunten > 1000) Console.WriteLine("Jij bent wel heel erg goed bezig!");
if / else Algemene vorm: else-deel mag worden weggelaten else kan niet zonder if if ( conditie ) { // instructies } else // andere instructies Boolean expressie
Herhaling: Vergelijk-operatoren < kleiner dan <= kleiner dan of gelijk aan > groter dan >= groter dan of gelijk aan == gelijk aan != ongelijk aan x=5 x wordt 5 ! x==5 is x gelijk aan 5 ?
Herhaling: Expressies Expressie met een getal als waarde Expressie met een tekst als waarde Expressie met een waarheid als waarde 2 * (lengte + breedte) type int value- "Hallo " + persoon type string object- aantalLevens > 0 type bool value-
Boolean expressies Vergelijken van waarden Uitkomst is true (waar) of false (niet waar) Combineren met logische operatoren && and || or ! not Dat is een waarheid als een true x <= y George Boole (1815-1864) x<0 && y>0 ! (x==0 && y==0) x!=0 || y!=0
Voorbeeld van een if-opdracht Toetsenbordinvoer verwerken in MonoGame: protected override void Update(GameTime gameTime) { KeyboardState k = Keyboard.GetState(); if (k.isKeyDown(Keys.K)) double opposite = mouse.Y - barrelPosition.Y; double adjacent = mouse.X - barrelPosition.X; angle = (float)Math.Atan2(opposite, adjacent); } Wordt alleen uitgevoerd als de K-toets ingedrukt is!
Accolades? Bij een enkele opdracht mag je de accolades weglaten: Met een else: if (score > 1000) Console.WriteLine("Geweldig, je krijgt 100 bonuspunten!"); if (score > 1000) Console.WriteLine("Je bent goed bezig!"); else Console.WriteLine("Waardeloos…");
Meer dan 1 alternatief if (score > 1000) Console.WriteLine("Je bent goed bezig!"); else if (score > 500) Console.WriteLine("Heel netjes."); else if (score > 100) Console.WriteLine("Tsja, dat kan beter!"); else Console.WriteLine("Dat is vrij waardeloos…");
Meer dan 1 alternatief Mag je ook zo schrijven (bij uitzondering) if (score > 1000) Console.WriteLine("Je bent goed bezig!"); else if (score > 500) Console.WriteLine("Heel netjes."); else if (score > 100) Console.WriteLine("Tsja, dat kan beter!"); else Console.WriteLine("Dat is vrij waardeloos…");
Van if naar switch Het geheel kan vrij lang worden als er veel if-opdrachten zijn Alternatief: de switch-opdracht Lijkt langer, maar heeft technische voordelen if (x==1) Een(); else if (x==2) { Twee(); OokTwee(); } else if (x==3 || x==4) DrieOfVier(); else Meer();
else if (x==2) { Twee(); OokTwee(); } if (x==1) Een(); else if (x==2) { Twee(); OokTwee(); } else if (x==3 || x==4) DrieOfVier(); else Meer(); switch(x) { case 1: Een(); break; case 2: Twee(); OokTwee(); case 3: case 4: DrieOfVier(); default: Meer(); } Moet een constante zijn! Geeft het einde van de case aan Een case mag uit meerdere opdrachten bestaan Je kunt meerdere cases tegelijk behandelen door break weg te laten Een default case voor de rest van de gevallen
Syntaxdiagram switch