Gameprogrammeren: Exceptions

Slides:



Advertisements
Verwante presentaties
OOS Object geOrienteerd Software-ontwerp - 3
Advertisements

Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Exceptions Hoofdstuk 17 Hoofdstuk 17.
Bestanden Hoofdstuk 18 Hoofdstuk 18.
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
The art of game design Hoofdstuk 20 en 21.
Workshop PHP Een productencatalogus. Case Uitgever van software wil webpagina met productgegevens publiceren op basis van catalogus. Het gaat momenteel.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  geen nieuwe opgave Voorbeeld tentamen:
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
OOS Object geOrienteerd Software-ontwerp - 2
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Visual Basic.NETPag.1 Hoofdstuk 8 – Fout afhandeling Inleiding Structured Exception Handling Hoe fouten opvangen Geen foutafhandeling Alle fouten opvangen.
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;
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Inlezen en uitlezen van txt bestanden
Java Objectgeoriënteerd Programmeren in Java met BlueJ
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Loops en errors Array's Random try catch for loop while loop do while loop.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
Informatie beoordelen If else Switch En Wiskunde.
Partial Classes, Enemies, Exceptions
Game Object Structuren
ISensorEventListener
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Introductie
Gameprogrammeren: Overerving
Gameprogrammeren: Char en String
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
vandaag èn vrijdag deadline maandag 12 dec.
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Afsluiting
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Herhalingen
Gameprogrammeren: Platform-games
Gameprogrammeren: Properties
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Game Basics
Arjan Egges & Paul Bergervoet
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Implementatie Zoekboom
Object Communication (Jewel Jam)
Gameprogrammeren: Enemies in Tick Tick
Gameprogrammeren: Sprite sheets
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

Gameprogrammeren: Exceptions Arjan Egges Paul Bergervoet Wouter van Toll

Game development Van prototype naar commercieel product Meer levels, uitgebreider game ontwerp Professioneel ontworpen assets Goed opgezette programmacode Hoge mate van robuustheid

Robuustheid Goed ontwerp van je code is cruciaal Duidelijke afspraken voor gedrag van methoden/klassen Zoveel mogelijk bugs verwijderen Zoveel mogelijk verschillende gevallen/problemen ondervangen Testen, testen, testen!

Software testen Verschillende soorten tests: Handmatig Automatisch (unit tests) Verschillende niveaus van testen: Alpha test Intern Meestal alleen developers Beta test Extern Grotere groep spelers

Excepties Voorbeeld: StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); // oops… the file test.txt doesn’t exist… Wat nu?

Excepties Zijn een manier om robuustheid van games te vergroten Excepties gebruik je om externe problemen op te lossen: Er mist een bestand De internetverbinding wordt verbroken Een andere speler gaat plotseling off-line …

Excepties Dit soort gevallen kun je afhandelen met exceptions (“uitzonderingen”) try { StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); } catch (FileNotFoundException e) Console.WriteLine(“The file was not found”);

Excepties Meerdere catch-gedeelten voor verschillende soorten excepties try { StreamReader r = new StreamReader("test.txt"); string t = r.ReadToEnd(); } catch (FileNotFoundException e) Console.WriteLine("The file was not found"); catch (IOException e) Console.WriteLine("IOException during file read");

Excepties Exceptie-klassen zijn georganiseerd in een hierarchie Bovenaan die hierarchie: de Exception-klasse Dus de volgende catch handelt alle mogelijke excepties af: catch (Exception e) { Console.WriteLine("Unknown exception occurred"); }

Excepties Je kunt zelf ook een exceptie “werpen”: private Tile LoadTile(char tileType, int x, int y) { switch (tileType) case '.': return new Tile(); … default: throw new IOException("Unknown tile type"); }

Vertaalt exceptie naar string Excepties En die kun je ergens anders weer afhandelen try { char c = textlines[i][j]; tiles[i,j] = LoadTile(c, i, j); } catch (IOException e) Console.WriteLine("Exception: " + e.ToString()); Vertaalt exceptie naar string