Gameprogrammeren: Properties

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

OOS Object geOrienteerd Software-ontwerp - 3
Van domeinklasse tot implementatie
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Hoofdstuk 2 Hallo, C# !.
Klassen schrijven Hoofdstuk 10. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe schrijf je een klasse Constructormethodes Public methoden Variabelen.
Hoofdstuk 8 Objecten en klassen.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
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.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
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,
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
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.
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)
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Game Object Structuren
Objectgeoriënteerd Programmeren (2)
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
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Afsluiting
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Herhalingen
Gameprogrammeren: Game Basics
Game Assets, Invoer Verwerken
Arjan Egges & Paul Bergervoet
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Exceptions
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
Implementatie Zoekboom
Object Communication (Jewel Jam)
Software Development fundamentals
Gameprogrammeren: Enemies in Tick Tick
Gameprogrammeren: Sprite sheets
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

Gameprogrammeren: Properties Arjan Egges Paul Bergervoet Wouter van Toll

Motivatie Stel we willen de positie van een Player veranderen van buitenaf Optie 1: public membervariabele public class Player { public Vector2 position; ... } Player player = new Player(); player.position = new Vector(10,10); player.position.X = 20;

Mag niet: Player.position is private Motivatie Maar wat als we checks willen toevoegen? Bijvoorbeeld: positie moet in het level passen Optie 2: private variabele, public methodes public class Player { private Vector2 position; ... public void SetPosition(Vector2 p) { position = p; if (position.X < 0) { ... } } public Vector2 GetPosition() { return position; Player player = new Player(); player.position = new Vector(10,10); player.SetPosition(new Vector(10,10)); Vector2 p = Player.GetPosition(); Mag niet: Player.position is private

Properties Dit ‘getten’ en ‘setten’ komt zo vaak voor dat C# er een alternatief voor heeft: Optie 3: properties public class Player { public Vector2 Position { get; set { Position = value; if (Position.X < 0) { ... } } ... Vector2 p = player.Position; Player.Position = new Vector2(10,10); (Conventie: properties met hoofdletter) In plaats van GetPosition() In plaats van SetPosition(…) Speciaal keyword binnen set: de waarde die de aanroeper meegeeft Roept de getter aan Roept de setter aan, met al z’n checks

Properties Property = een eigenschap van een object die je kunt getten en (optioneel) setten Heeft vaak te maken met een membervariabele die je niet direct mag inzien Je kunt extra gedrag inbouwen in get/set

Voorbeeld, uitgebreid Private membervariabele, public property public class Player { private Vector2 position; public Vector2 Position get return position; } set position = value; if (position.X < 0) { ... }

get en set Sommige properties mag je alleen lezen (get) String.Length Viewport.Width Sommige properties mag je ook schrijven (set) Vector2.X Content.RootDirectory Cannon.Color

Properties vs membervariabelen Properties hoeven niet altijd direct met een waarde van een membervariabele te corresponderen (Zulke properties hebben vaak alleen een getter) public Vector2 Center { get return new Vector2(sprite.Width, sprite.Height) / 2; }

Properties in properties Ander voorbeeld van een property: `TotalGameTime’ is een property van een GameTime-object en geeft de totaal gepasseerde tijd aan De gepasseerde tijd heeft zelf het type TimeSpan En een TimeSpan-object heeft weer een property `Milliseconds’ gameTime.TotalGameTime gameTime.TotalGameTime.Milliseconds Type: int

Static properties Net als een methode kan een property static zijn Dit is geen property van een specifiek object, maar van de gehele klasse van objecten (Anders gezegd: hoort bij een type, en niet bij een variabele van een type) Voorbeeld in MonoGame: Color.Olive (en andere ingebouwde kleuren) Roept stiekem een get-methode aan die creëert: Werkt als een soort constante new Color(128, 128, 255)

Static en niet-static properties De property `Olive’ hoort bij het type `Color’ De property `TotalGameTime’ hoort bij een variabele van het type `GameTime’ De property `R’ hoort ook bij een variabele van het type `Color’ Dus dit mag niet: Color.Olive gameTime.TotalGameTime Color.R

Property, public variabele, of get/set-methodes? Officieel kan het allemaal: je mag zelf kiezen Een property staat “netter” dan direct een variabele bewerken Handige shorthand voor als je iets niet wilt opslaan, maar alleen soms opvragen Zoals het Center-voorbeeld Een klasse wordt netter met een getter of setter