Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJoost van der Heijden Laatst gewijzigd meer dan 6 jaar geleden
1
Gameprogrammeren: Tiles in Tick Tick
Arjan Egges Paul Bergervoet Wouter van Toll
2
Tick Tick Resterende tijd Exit Speler Wall tile Waterdruppel
Background tile Achtergrondlagen
3
Opbouw van de game Levels worden geladen uit een tekstbestand
We hebben verschillende soorten game-objecten De speler Vijanden Waterdruppels Tiles Overlays
4
Levels en tiles X.. ########## #### ### WWWWW... #####... .... ....### W.W.W.W.W. #################### Eind van het level Achtergrondtile Waterdruppel Walltile Startpositie van de speler
5
Na het laden van het level
6
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
7
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.
8
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.
9
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: }
10
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(); }
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.