Gameprogrammeren: Herhalingen

Slides:



Advertisements
Verwante presentaties

Advertisements

Modern programmeeronderwijs $ a.exe Tik een rij getallen en sluit af met een 0: > Het grootste getal is: 12.
Hoofdstuk 6: Controle structuren
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Algoritmiek Object-georiënteerd Programmeren
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Hoofdstuk 7 Herhaling Nieuw!. while ( x
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Declaratie en toekenningen nEén keer declarareren nMogelijk meerdere toekenningen int x; x = 100; x = 250; x = x + 1; x = 2 * x; int x = 100; x = 100;
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 2 inleveropdrachten) college Tent. 1 Tent. 2 college prakt. 1 prakt. 2 prakt.
Resources. Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { } class KompasView :
Loops en errors Array's Random try catch for loop while loop do while loop.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Game Object Structuren
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Gameprogrammeren: Variabelen, declaraties en toekenningen
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Afsluiting
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Properties
Gameprogrammeren: Game Basics
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Arjan Egges & Paul Bergervoet
Voorbeeld: Simulatie van bewegende deeltjes
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Gameprogrammeren: Recursie
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Gameprogrammeren: Abstracte klassen
Willekeurigheid en Herhaling
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Gameprogrammeren: Enemies in Tick Tick
Gameprogrammeren: Sprite sheets
Software Development fundamentals
Gameprogrammeren: Arrays
Python – For loop + strings
Transcript van de presentatie:

Gameprogrammeren: Herhalingen Arjan Egges Paul Bergervoet Wouter van Toll

Herhaling Dezelfde code een aantal keer uitvoeren, met soms kleine verschillen Bijvoorbeeld: Een aantal keer een ‘leven’- of ‘resource’-sprite tekenen Een lijst van game-objecten langslopen en daar iets mee doen Een highscore-lijst afdrukken ...

Opdrachten herhalen: while voer de volgende regel uit zolang deze voorwaarde geldig is public override void Draw(GameTime gameTime) { int x; x = 1; while ( x < 1000 ) x = 2*x; spriteBatch.Draw( sprite, new Vector2(x, 10.0f), Color.White ); } body wordt steeds opnieuw uitgevoerd x > 1000, dus de while-loop stopt X 1024 512 128 256 64 16 32 1 8 2 4

Meerdere opdrachten herhalen private static int TweeLog ( ) { int x, t; x=1; t=0; while ( x < 1000 ) x = 2*x; t = t+1; } return t; (int n) teller telt hoe vaak er wordt verdubbeld n accolades smeden twee opdrachten tot één body

Herhalen met een teller public void tekenLevens () { int t; t=0; while ( t<10 ) Vector2 pos = new Vector2(t*heart.Width, 50.0f); spriteBatch.Draw(heart, pos, Color.White ); t = t+1; } teller bepaalt het aantal herhalingen en komt goed van pas in de body

Publieksvraag Maak een methode ‘macht’ met twee parameters: grondtal (reëel getal) exponent (natuurlijk getal) Uitkomst moet zijn: de waarde van grondtalexponent

Machtsverhef-methode public double macht (double x, int n) { double result; int t; t = 0; result = 1; while ( t<n ) { result = result * x ; t = t+1 ; } return result; }

Syntax van while-opdracht

Gebruik van bool-expressies Als voorwaarde van een while-opdracht Rechts van een toekenningsopdracht Als resultaat van een methode while (x<10) ... bool b; b = x<10 ; return x<10 ;

waarheidswaarde als resultaat Publieksvraag Schrijf een methode ‘deelbaar’, die antwoordt of x deelbaar is door d waarheidswaarde als resultaat private static bool deelbaar (int x, int d) { } return ; x%d == 0

Publieksvraag Schrijf een methode ‘kleinsteDeler’, die antwoordt wat de kleinste deler is van x probeer ze één voor één public int kleinsteDeler (int x) { } int d; d = 2; while ( x%d != 0 ) d = d+1; return d;

wordt vermenigvuldigd met Variabelen aanpassen Afgekorte notaties: x = x * 2 ; nieuwe waarde wordt oude waarde wordt vermenigvuldigd met x = x * 2 ; x *= 2 ; wordt vermeerderd met x = x + 5 ; x += 5 ; wordt opgehoogd x = x + 1 ; x += 1 ; x ++ ;

Herhaling met een teller: while int t = 0; while ( t < x ) { // doe iets nuttigs met t // ... t++; }

Herhaling met een teller: for Kortere versie, omdat tellers zo vaak voorkomen for ( int t = 0; t < x; t++ ) { // doe iets nuttigs met t // ... }

for-opdracht int t ; for ( t=0 ; t<x ; t++ ) eenmalige initialisatie voorwaarde om door te gaan stap naar de volgende int t ; for ( t=0 ; t<x ; t++ ) Console.WriteLine( "Kolom: " + t ); for ( t=1 ; t<=x ; t++ ) for ( t=x ; t>=0 ; t -- ) for ( t=2 ; !deelbaar(x,t) ; t++ )

Syntax van for-opdracht

Herhaalde herhaling Body van een for-opdracht is een opdracht Dat kan zelf ook weer een for-opdracht zijn! int x, y; for (y=0; y<10; y++) for (x=0; x<10; x++) { Vector2 pos = new Vector2( heart.Width*x, heart.Height*y); spriteBatch.Draw(heart, pos, Color.White); } y

Deze opdracht komt nooit aan de beurt! Extreme gevallen Nul keer herhalen Oneindig vaak herhalen for (y=0; y<0; y++) spriteBatch.Draw(…); while (true) audio.Play(); spriteBatch.draw(...); Deze opdracht komt nooit aan de beurt!

Onbedoelde oneindigheid x=1; aantal = 0; while (aantal<10) x = x*2; aantal = aantal+1; accolades vergeten... { }

deze waarschuwing is theoretisch onmogelijk! Compiler-meldingen Foutmeldingen variabele niet gedeclareerd puntkomma vergeten ... Waarschuwingen unreachable code variable is never used while-statement doesn’t terminate deze waarschuwing is theoretisch onmogelijk!

Het Halting-problem is onoplosbaar bool stopt (string filenaam) { // check of de code in // bestand ‘filenaam’ stopt ... } Nietes! Deze methode lost het op: void gemeen (string filenaam) { while ( stopt(filenaam) ) … } Ha! En dit dan? Wat komt er dan uit: ? stopt( "Gemeen.cs" )

Het Halting-problem is onoplosbaar Stel dat “Gemeen” wél stopt ...dus stopt levert true op ...dus gemeen blijft hangen! Stel dat “Gemeen” niet stopt ...dus stopt levert false op ...dus gemeen stopt direct! tegenspraak! dus stopt kan helemaal niet bestaan

Andere Halting-achtige problemen Wordt een opdracht ooit uitgevoerd? Is een programma een virus? …en hoe werkt een virus-checker dan? óf te streng: keurt teveel af óf te coulant: laat sommige door lastig gevaarlijk