De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Gameprogrammeren: Methoden

Verwante presentaties


Presentatie over: "Gameprogrammeren: Methoden"— Transcript van de presentatie:

1 Gameprogrammeren: Methoden
Arjan Egges Paul Bergervoet Wouter van Toll

2 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

3 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

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

5 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; }

6 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();

7 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");

8 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

9 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);

10 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 }

11 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");

12 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

13 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

14 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!

15 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

16 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(); ... }

17 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...


Download ppt "Gameprogrammeren: Methoden"

Verwante presentaties


Ads door Google