De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Basis Gameprogrammeren

Verwante presentaties


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

1 Basis Gameprogrammeren
Arjan Egges & Paul Bergervoet

2 Soorten programma’s Console- applicatie

3 Soorten programma’s Console- applicatie Windows- applicatie

4 Soorten programma’s Console- applicatie Windows- applicatie
Web- applicatie

5 Soorten programma’s Console- applicatie Windows- applicatie
Web- applicatie Game

6 Soorten programma’s Console- applicatie Windows- applicatie
Web- applicatie Game App

7 Opbouw broncode Opdrachten om het geheugen te veranderen
Opdrachten zijn gegroepeerd in methoden Methoden zijn gegroepeerd in klassen

8 Soorten opdrachten Toekennings -opdracht: verander het geheugen
Aanroep van een andere methode: voer eerst de opdrachten in die methode uit, en ga daarna verder waar je gebleven was en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de “waar was ik gebleven” administratie is best ingewikkeld!

9 Voorbeeld C#-programma
using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } één klasse ...met één methode ...met twee opdrachten accolades begrenzen klasse, resp. methode

10 Klasse- en methode-header
using System; class Hallo { static void Main ( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } naam: bedacht door de programmeur één van de methodes moet Main heten

11 Opdracht: methode-aanroep
using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine ( ); } opdrachten: aanroep van andere methoden klasse waaruit de methode komt altijd een punt naam van de methode overige details

12 Klasse-bibliotheken using System; library-klassen mag je gebruiken...
class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } als je ze maar aangeeft in welke library ze staan

13 Methode-header en -aanroep
using System; class Hallo { static void Main( ) { Console.WriteLine("Hallo!"); Console.ReadLine( ); } methode- header methode- aanroep

14 Syntax en semantiek Syntax: de vorm van het programma
Semantiek: wat het programma betekent

15 Syntax van toplevel-declaratie

16 De gamewereld Bestaat uit twee onderdelen:
Informatie (aantal levens, spelerpositie, de score) Staat in het geheugen Gedrag (botsingen tussen game objecten afhandelen, strategie van een vijand, andere game physics) Wordt afgehandeld door de game loop Oftewel: instructies die uitgevoerd worden door een processor

17 De game loop Belangrijkste onderdelen:
UPDATE – pas de toestand van de gamewereld aan DRAW – teken de gamewereld op het scherm Beide acties worden steeds opnieuw aangeroepen In de vorm van methoden! UPDATE DRAW

18 using Microsoft.Xna.Framework; class LeegSpel : Game {
using: welke bibliotheken gebruiken we using Microsoft.Xna.Framework; class LeegSpel : Game { static void Main() LeegSpel game = new LeegSpel(); game.Run(); } public LeegSpel() { } protected override void Update(GameTime gameTime) protected override void Draw(GameTime gameTime) Methode om de game te initializeren (constructor-methode). De Update actie De Draw actie

19 Initialiseer graphics device
Achtergrondkleur class BasicXNAGame : Game { GraphicsDeviceManager graphics; static void Main() BasicXNAGame game = new BasicXNAGame(); game.Run(); } public BasicXNAGame() graphics = new GraphicsDeviceManager(this); Constructor Initialiseer graphics device

20 Verander de achtergrondkleur
protected override void Update(GameTime gameTime) { } protected override void Draw(GameTime gameTime) GraphicsDevice.Clear(Color.Olive); Verander de achtergrondkleur

21 De gamewereld Een game wereld bestaat uit:
Informatie Gedrag Informatie wordt opgeslagen in het geheugen Hiervoor gebruiken we variabelen

22 Variabelen Variabele: geheugenplaats met een naam
Declaratie: aangifte van het type van de variabele Toekenningsopdracht: variabele krijgt waarde int x, y; x y 20 x = 20;

23 Toekenningsopdrachten
int x, y; x = 20 ; x y 20 50 25 26 Expressie aan de rechterkant mag andere variabelen gebruiken y = x + 5 ; Vorige waarde gaat verloren x = y * 2 ; y = y + 1 ;

24 Syntax van opdracht (toekenning)

25 Syntax van opdracht

26 Declaratie en toekenningen
Eén keer declarareren Mogelijk meerdere toekenningen Declaratie en eerste toekenning int x; int x = 100; x = 100; x = 100; x = 250; x = x + 1; x = 2 * x;

27 Syntax van declaratie

28 Type van variabelen int geheel getal double benadering van reëel getal
int x; double d; x 10 3 d 10.0 int geheel getal double benadering van reëel getal x = 10 ; d = ; d = 10 ; x = x / 3 ; d = d / 3 ;

29 Const declaratie const double pi = 3.1415926535897938;
Latere toekenningen verboden pi = 4.0; double straal = 2.0; double oppervlakte = pi * straal * straal;

30 Syntax van declaratie

31 Plaats van een declaratie

32 Standaardtypes gehele getallen met een decimale punt 1 byte sbyte
± 127 byte 0..255 28-1 2 bytes short ± 32767 ushort 216-1 4 bytes int ± 2 miljard uint 0..4 miljard 232-1 8 bytes long ± 1018 ulong 264-1 met een decimale punt 4 bytes float 7 cijfers, afgerond, ≤1038 8 bytes double 15 cijfers, afgerond, ≤10300 16 bytes decimal 28 cijfers, exact, ≤1028

33 Constanten geheel getal (kleinst passende) met een decimale punt
string (tekst) hexadecimaal 137 –25 0x1A 0xFF 26 255 0.5 –273.15 6.02E23 1E3 3E–11 1000 "Hallo!" "A" "" "een \"citaat\"" "\n" "\\"

34 Typering van operatoren
2 + 5 3 * 4 5 / 2 Beide argumenten geheel  resultaatwaarde geheel 0.5 * 7 10 / * 2.5 Minstens één floating  resultaatwaarde floating bij + operator ook: Minstens één string  resultaatwaarde string “ga” + “me” “€” + bedrag

35 Verschillende typen int en double zijn voorbeelden van een primitief of built-in type C# kent ook `complexere’ types Color GameTime GraphicsDevice …en nog veel meer…

36 Syntax van type

37 Kleuren Color(...) (0,255,0) (255,0,0) (0,0,255) (0,0,0) (255,255,0)
(255,255,255) (0,255,255) (255,0,255) (0,0,255) (0,0,0)

38 Variabelen van het type ‘Color’
Variabelenamen Color blueColor, greenColor, redColor, grayColor, whiteColor; blueColor = new Color(0, 0, 255); greenColor = new Color(0, 255, 0); redColor = new Color(255, 0, 0); grayColor = new Color(200, 200, 200); whiteColor = new Color(255, 255, 255); Declaraties Toekenningen We gebruiken `new’ voor niet-primitieve typen Informatie om de kleur te kunnen maken

39 Mengkleuren new Color(255, 0, 0) new Color(255, 64, 0)

40 Properties Variabelen kunnen `eigenschappen’ hebben, ook wel genoemd properties `R’ is een property van het Color type en geeft de roodwaarde aan De roodwaarde is zelf weer van het type int Dus we zouden dit kunnen doen: grayColor.R int roodwaarde; roodwaarde = grayColor.R; Type: int

41 Properties Ander voorbeeld van een property:
`TotalGameTime’ is een property van het GameTime type en geeft de totaal gepasseerde tijd aan De gepasseerde tijd heeft ook weer een type: TimeSpan En dat type heeft een property `Milliseconds’ gameTime.TotalGameTime gameTime.TotalGameTime.Milliseconds Type: int

42 Variabele om de kleur in te bewaren
Achtergrondkleur v2 class BasicXNAGame : Game { GraphicsDeviceManager graphics; Color background; static void Main() BasicXNAGame game = new BasicXNAGame(); game.Run(); } public BasicXNAGame() graphics = new GraphicsDeviceManager(this); Variabele om de kleur in te bewaren

43 Achtergrondkleur v2 Bepaal rood-waarde aan de hand van de tijd protected override void Update(GameTime gameTime) { int red = gameTime.TotalGameTime.Milliseconds; background = new Color(red, 0, 0); } protected override void Draw(GameTime gameTime) GraphicsDevice.Clear(background); Maak een nieuwe achtergrondkleur Verander de achtergrondkleur

44 Meer properties Color.Olive Maar hoe zit het met ‘Color.Olive’ dan? Sommige properties zijn geen eigenschappen van variabelen, maar van typen. Het type van `Color.Olive’ is ook weer van het type Color Property wordt `misbruikt’ voor simpeler notatie voor: new Color(128, 128, 255)

45 Properties De property `Olive’ hoort bij een 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

46 Properties Als properties niet bij een variabele horen, maar bij een type, noemen we ze static static properties: Color.Olive, Color.Black Niet-static properties: background.R, gameTime.TotalGameTime Methoden kunnen ook static zijn, bijvoorbeeld Main, of niet-static, bijvoorbeeld Update: static void Main() protected override void Update(GameTime gameTime)

47 Variabelen declareren
In een methode: kan alleen in die methode gebruikt worden In een klasse: kan in alle methoden van de klasse gebruikt worden Die variabelen noemen we dan attributen of membervariabelen De plekken waar een variabele gebruikt kan worden noemen we de scope (bereik) van een variable

48 Syntax van opdracht

49 Expressies Expressie: stukje programma met een waarde
Gebruik van expressies: Rechterkant van een toekennings-opdracht Parameter van een methode x = y+40 ; Console.WriteLine(y + 40);

50 Opbouw van expressies Constante Variabele … operator … ( … ) 5 red
x + y + 1 (y + 1) x - expressie

51 Syntax van expressies

52 bij deling van int-waarden: cijfers achter de komma worden afgekapt!
Operatoren + optellen - aftrekken * vermenigvuldigen / delen % rest bij deling bij deling van int-waarden: cijfers achter de komma worden afgekapt! 14 / 3 geeft 4 want 14 is 4*3 + 2 14 % 3 geeft 2

53 Prioriteit van operatoren
Vermenigvuldigen gaat voor optellen en delen en aftrekken 1 + 2 * 3 geeft 7 Bij gelijke prioriteit: van links naar rechts geeft 3 Wil je ’t anders: zet haakjes (1+2) * 3 geeft 9

54 Het type van een expressie
98765 "Hallo" 4 / 3 "Hallo " + naam naam.Length "Hallo " + naam.Length Color.White int string int int string int string Color

55 Het type van een expressie
Color.Black Vector2.Zero new Vector2() new Horse() new Size(100.0f, 200.0f) new GraphicsDevice(this) new Color(255, 128, 0) Color Vector2 Vector2 Horse Size GraphicsDevice Color

56 Syntax van expressies (deel 2)


Download ppt "Basis Gameprogrammeren"

Verwante presentaties


Ads door Google