Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.

Slides:



Advertisements
Verwante presentaties
Inleiding programmeren in C++ Life Science & Technology 26 januari Universiteit Leiden.
Advertisements

Het type int Tekenen met Java operatoren

Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Numerieke Natuurkunde
Hoofdstuk 8 Objecten en klassen.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
6.1 Inleiding HOOFDSTUK 6 METHODEN
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.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
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.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
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;
Hoorcollege 3 Game assets, Invoer verwerken. Tutorlunch GroepTutorStutorZaal UPaul BergervoetBob BestBBG 001 VMarries van de HoefSander VerkuilBBG 731.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
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,
JAVA: een platformonafhankelijke taal
Hoofdstuk 3 Methoden om te tekenen.
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
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Imperatief programmeren nJeroen Fokker. Wat heb je nodig? nCollegediktaat ukopen bij A-Eskwadraat (BBG-238) uof zelf downloaden en uitprinten nSolis-id.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
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.
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.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Imperatief programmeren
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Herhalingen
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Gameprogrammeren: Properties
Gameprogrammeren: Game Basics
Game Assets, Invoer Verwerken
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Aanroep van een methode voert opdrachten uit in de body daarvan
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Enemies in Tick Tick
Software Development fundamentals
Transcript van de presentatie:

Hoorcollege 2 Basis gameprogrammeren

Soorten programma’s Console- applicatie

Soorten programma’s Console- applicatie Windows- applicatie

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

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

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

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

en dat kunnen zelf ook weer aanroepen zijn van weer andere methodes... dus de “waar was ik gebleven” administratie is best ingewikkeld! 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

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

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

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

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

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

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

Syntax van toplevel-declaratie

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

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

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) { } } De Update actie De Draw actie using: welke bibliotheken gebruiken we Methode om de game te initializeren (constructor-methode).

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

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

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

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

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

Syntax van opdracht (toekenning)

Syntax van opdracht

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

Syntax van declaratie

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

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

Syntax van declaratie

Plaats van een declaratie

Standaardtypes sbyte short int long float double decimal byte ushort uint ulong ± 2 miljard ± ± ± miljard 7 cijfers, afgerond, ≤ cijfers, afgerond, ≤ cijfers, exact, ≤10 28 gehele getallen met een decimale punt 1 byte 2 bytes 4 bytes 8 bytes 4 bytes 8 bytes 16 bytes

Constanten geheel getal (kleinst passende) met een decimale punt string (tekst) 0137–25 0.5– E231E3 "Hallo!""A""A""""een \"citaat\"""\n""\\" 0x1A0xFF 3E– hexadecimaal

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

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…

Syntax van type

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

Variabelen van het type ‘Color’ 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); TypeVariabelenamen We gebruiken `new’ voor niet-primitieve typen Informatie om de kleur te kunnen maken Declaraties Toekenningen

Mengkleuren new Color(255, 0, 0) new Color(255, 64, 0) new Color(255, 128, 0) new Color(255, 192, 0) new Color(255, 255, 0)

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

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

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

Achtergrondkleur v2 … 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); } Bepaal rood-waarde aan de hand van de tijd Maak een nieuwe achtergrondkleur Verander de achtergrondkleur

Meer properties 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: Color.Olive Maar hoe zit het met ‘Color.Olive’ dan? new Color(128, 128, 255)

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

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)

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

Syntax van opdracht

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

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

Syntax van expressies

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 geeft 2

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

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

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 Horse Size GraphicsDevice Color

Syntax van expressies (deel 2)

Tot slot De volgende keer (YALE108!): – Game assets (einde hoofdstuk 4) – Invoer verwerken (hoofdstuk 5 en 6) Practicum vandaag: PracticumgroepZaal P1 (U, V)BBG106 P2 (W, X)BBG112 P3 (Y, Z)BBG175 P4 (alfa, beta)BBG017/020