Gameprogrammeren: Methoden

Slides:



Advertisements
Verwante presentaties
Het type int Tekenen met Java operatoren
Advertisements

Klassen en objecten.
Hoofdstuk 2 Hallo, C# !.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
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.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Hoorcollege 3 Game assets, Invoer verwerken. Tutorlunch GroepTutorStutorZaal UPaul BergervoetBob BestBBG 001 VMarries van de HoefSander VerkuilBBG 731.
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,
Hoofdstuk 3 Tekenen en rekenen.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Animatie & Game Physics
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Game Object Structuren
Activity Bij het starten van een app:
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Overerving
Gameprogrammeren: Char en String
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Animatie
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Herhalingen
Gameprogrammeren: Platform-games
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Gameprogrammeren: Properties
Tinpro015b-les6 Templates.
Gameprogrammeren: Game Basics
Game Assets, Invoer Verwerken
Arjan Egges & Paul Bergervoet
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Abstracte klassen
Willekeurigheid en Herhaling
Gameprogrammeren: Interfaces
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)
Gameprogrammeren: Enemies in Tick Tick
Gameprogrammeren: Sprite sheets
Gameprogrammeren: Arrays
Transcript van de presentatie:

Gameprogrammeren: Methoden Arjan Egges Paul Bergervoet Wouter van Toll

Herhaling: Klassen versus objecten Een klasse is een blauwdruk voor objecten Een object is een instantie van een klasse Voorbeeld: Een Enemy-klasse die beschrijft wat vijanden zijn/doen (in het algemeen) Een game die meerdere Enemy-objecten bevat (= instanties van de Enemy-klasse) (= objecten van het type Enemy) Variabelen + methoden

Herhaling: Inhoud van een klasse class BasicXNAGame : Game { Color background; BasicXNAGame() background = Color.White; ... } ... Update(...) int red = gameTime…/…; background = new Color(red, 0,0); ... Draw(...) GraphicsDevice.Clear(background); Onderdelen: Opsomming van methoden Opsommingen van variabelen die een object omschrijven Methoden bewerken variabelen

Eigen methode toevoegen class Painter : Game { public void HandleInput() … } protected override void Update(GameTime gameTime) HandleInput(); Eigen bedachte methode!

De ‘HandleInput’-methode public void HandleInput() { prevMS = currMS; prevKS = currKS; currMS = Mouse.GetState(); currKS = Keyboard.GetState(); if (currKS.IsKeyDown(Keys.R) && prevKS.IsKeyUp(Keys.R)) cannonColor = Color.Red; else if (currKS.IsKeyDown(Keys.G) && prevKS.IsKeyUp(Keys.G)) cannonColor = Color.Green; else if (currKS.IsKeyDown(Keys.B) && prevKS.IsKeyUp(Keys.B)) cannonColor = Color.Blue; }

Verschillende soorten methoden Methoden met een resultaat-object: Methoden zonder een resultaat-object: Methoden met parameters: Methoden zonder parameters: currMS = Mouse.GetState(); GraphicsDevice.Clear(Color.Olive); currKS.IsKeyDown(Keys.G) spriteBatch.Begin();

Verschillende soorten methoden Sommige methoden bewerken objecten Sommige methoden bewerken geen objecten (maar horen wel bij een klasse) Deze methoden noemen we static In de methode-header kun je zien wat voor soort methode het is! spriteBatch.Begin(); Console.WriteLine("Hallo");

Methode-headers public static void Main() { … } public void HandleInput() protected override void Update(GameTime gameTime) static methode (bewerkt geen object) methode zonder parameters methode zonder resultaatobject methode met 1 parameter

Methoden met resultaat Vergelijkbaar met wiskundige functie f(x) = x2; In het gebruik: ...en we leveren een float op. public float CalculateSquare(float x) { return x*x; } We stoppen er een float in... Met return geven we aan wat opgeleverd wordt. float f = CalculateSquare(10.0f);

Methoden met resultaat Na een return stopt de methode Daar kunnen we gebruik van maken! public int SomeMethod() { return 12; int tmp = 45; } Wordt nooit uitgevoerd! public float SquareRoot(float f) { if (f < 0.0f) return 0.0f; // Hier weten we nu zeker dat altijd geldt dat f >= 0, // dus geen “else” nodig }

Methoden met resultaat Return-waarde kun je in een variabele bewaren: Maar dat hoeft niet! float f = CalculateSquare(10.0f); if (CalculateSquare(10.0f) != 100.0f) Console.WriteLine("Your processor is broken");

Tekenen of opleveren? Resultaat meteen op het scherm tonen: Console.WriteLine(x, ...) spriteBatch.Draw(cannon, Vector2.Zero,...) Resultaat teruggeven aan de aanroeper: return x; Aanroeper kan zelf beslissen wat-ie ermee doet

Declaraties vs. parameters Lijken erg op elkaar public float SquareRoot(float f) { if (f < 0.0f) return 0.0f; … } Gebruiken we als lokale variabele protected override void Update(GameTime gameTime) { int red; red = gameTime.TotalGameTime.Milliseconds; … } Lokale variabele Gebruiken we als lokale variabele

public, protected, private Aangeven hoe toegankelijk een methode is public methode mag je van overal aanroepen private methode mag alleen vanuit objecten met hetzelfde type protected mag alleen vanuit objecten met hetzelfde type, of objecten die daarvan overerven (komt later) “Alles public maken” is een makkelijk begin... ...maar denk na over wat je wel/niet wilt kunnen aanpassen van buitenaf Anders kan je programma een chaos worden!

static Aangeven of een methode op een specifiek object werkt, of op de gehele klasse waar dat object bij hoort class Cannon { … public void Update() { … } public static int X() { … } // doet niets met een specifiek object } ... cannon.Update(); // werkt op een specifiek Cannon-object int x = cannon.X(); // mag niet! int x = Cannon.X(); // mag wel: nu gebruik je de algemene klasse Cannon

static Meest voorkomende voorbeeld: de Main()-methode van elke applicatie! Op dat moment is er nog geen specifiek object Het allereerste ding moet je dus wel in een static methode aanmaken public static void Main() { MyGame game = new MyGame(); ... }

Hoeveelheid parameters Hoe meer parameters, des te flexibeler de methode Veel parameters? Vaak een teken dat je je code moet her-ontwerpen Bijvoorbeeld een hulp-object public void Draw(Texture2D sprite, Vector2 position, Color col, float rotation, float scale, bool mirror, float transparency, Rectangle part, Vector2 origin, Rectangle destination, …) { … en des te lastiger aan te roepen...