Gameprogrammeren: Tiles in Tick Tick

Slides:



Advertisements
Verwante presentaties
Gestructureerd programmeren in C
Advertisements

Van domeinklasse tot implementatie
Hoofdstuk 6: Controle structuren
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
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
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Hoorcollege 12 Afronding Penguin Pairs & overzicht Tick Tick.
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.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Inleiding tot programmeren
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
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;
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Opbouw van het Netwerk void Lees (string filenaam ) { while ( (regel=sr.ReadLine()) != null ) { string [] r = regel.Split(" ", StringSplitOptions.RemoveEmpty.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
Informatie beoordelen If else Switch En Wiskunde.
Animatie & Game Physics
Partial Classes, Enemies, Exceptions
Game Object Structuren
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Overerving
Gameprogrammeren: Char en String
Letterfrequentie turven
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Expressies
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Afsluiting
Gameprogrammeren: Willekeurigheid (Randomness)
Gameprogrammeren: Herhalingen
Gameprogrammeren: Platform-games
Gameprogrammeren: Properties
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Game Basics
Arjan Egges & Paul Bergervoet
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Exceptions
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Survivor Steven, Jurgen, Raphael, Samuel, Willem
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Gameprogrammeren: Enemies in Tick Tick
Gameprogrammeren: Sprite sheets
Gameprogrammeren: Arrays
Transcript van de presentatie:

Gameprogrammeren: Tiles in Tick Tick Arjan Egges Paul Bergervoet Wouter van Toll

Tick Tick Resterende tijd Exit Speler Wall tile Waterdruppel Background tile Achtergrondlagen

Opbouw van de game Levels worden geladen uit een tekstbestand We hebben verschillende soorten game-objecten De speler Vijanden Waterdruppels Tiles Overlays

Levels en tiles .................... .................X.. ..........########## WWW....WWWW......... ---....####......... WWW................. ###.........WWWWW... ............#####... ....WWW............. ....###............. .1........W.W.W.W.W. #################### Eind van het level Achtergrondtile Waterdruppel Walltile Startpositie van de speler

Na het laden van het level

Levels uit een file lezen Voordelen: Levels worden onafhankelijk van de game-code geproduceerd Makkelijk nieuwe levels toe te voegen Makkelijker om te testen Nadelen: Levels kunnen door iedereen ge-edit worden (makkelijker om vals te spelen) Extra code nodig om levels uit files te lezen Misschien zelfs een speciale level-editor nodig

Levels uit een file lezen private void LoadTiles(string path) { // lees het level in List<string> tekstlines = new List<string>(); StreamReader fileReader = new StreamReader(path); string line = fileReader.ReadLine(); int width = line.Length; while (line != null) tekstlines.Add(line); line = fileReader.ReadLine(); } // maak alle tiles … Een List om alle gelezen regels in te bewaren. We gebruiken de StreamReader klasse. Lees 1 regel. Blijf lezen totdat er geen regels meer zijn.

private void LoadTiles(string path) { // lees het level in … // maak alle tiles TileField tiles = new TileField(textlines.Count - 1, width, 1, "tiles"); this.Add(tiles); tiles.CellWidth = 72; tiles.CellHeight = 55; for (int x = 0; x < width; ++x) for (int y = 0; y < textlines.Count - 1; ++y) Tile t = LoadTile(textlines[y][x], x, y); tiles.Add(t, x, y); } Subklasse van GameObjectGrid Methode die gegeven een karakter een Tile oplevert.

private Tile LoadTile(char tileType, int x, int y) { switch (tileType) { case '.': return new Tile(); case '-': return LoadBasicTile("spr_platform", TileType.Platform); case 'X': return LoadEndTile(x, y); case 'W': return LoadWaterTile(x, y); case '1': return LoadStartTile(x, y); case '#': return LoadBasicTile("spr_wall", TileType.Normal); default: }

Laden van een waterdruppel-tile private Tile LoadWaterTile(int x, int y) { GameObjectList wd = this.Find("waterdrops") as GameObjectList; GameObjectGrid tiles = this.Find("tiles") as GameObjectGrid; WaterDrop w = new WaterDrop(); w.Origin = w.Center; w.Position = new Vector2(x*tiles.CellWidth, y*tiles.CellHeight - 10); w.Position += new Vector2(tiles.CellWidth, tiles.CellHeight) / 2; wd.Add(w); return new Tile(); }