Feedback

C# - Tilemap aus Datei entnehmen (Laden)

Veröffentlicht von am 11.08.2013
(0 Bewertungen)
Hey!
Hier ist ein recht einfaches Beispiel wie Ihr eine Tilemap, bestehend aus Zahlen, laden und zeichnen könnt!

Die Seite wird geupdatet um neue Funktionen
zu veranschaulichen.

"Materialien"
Texturen(Wand/Boden)
Eine Tilemap, zB:
1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 0 0 0 0 1
1 0 0 0 0 0 0 1 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1
(Tile1.map)

Code
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
//Zunächst implementieren wir die IO-Namespace.
using System.IO;
public class Form1
{
	//Deklaration und das Laden!
	private string MapPath = "Tile1.map";
	//Einen StreamReader der den MapPath als Konstruktorfülle inne ist.
	private StreamReader ReadFile_Length = new StreamReader(MapPath);
	private string Map;
	//Ein Array um den "Pointer" eine Zeile dazu zu addieren
	private string[] StringBuffer_Y = File.ReadAllLines(MapPath);
	//Mapinformationen
	//---Tile data--- 
	private int MapX;
	private int MapY;

	private string Map_Y_LineInString;
	//Rectangles

	//---Tiles---
	private Rectangle Wand;

	private Rectangle Boden;
	//1 = Wand
	//0 = Boden

	//---TileTexturen---
	private Bitmap WandTexture = new Bitmap("Textures\\wand.png");

	private Bitmap BodenTexture = new Bitmap("Textures\\boden.png");


	private void Form1_Load(object sender, EventArgs e)
	{
		DoubleBuffered = true;
		//Und die Map in den String laden!
		Map = ReadFile_Length.ReadToEnd();
	}

	//das Zeichnen

	private void DrawTile(object sender, PaintEventArgs e)
	{
		try {
			//Alle Zeilen durchlaufen
			for (y = 0; y <= Map.Length; y++) {
				Map_Y_LineInString = StringBuffer_Y[y];
				for (x = 0; x <= Map_Y_LineInString.Length / 2; x++) {
					//Jedes Zeichen durchlaufen
					//Und bei " " splitten!
					string[] ConvertMap = Map_Y_LineInString.Split(' ');
					//Stück für Stück,Zeichen für Zeichen, ein Rectangle setzen.
					switch (ConvertMap[Convert.ToInt32(x)]) {

						case "0":
							//Die Koordinaten auslesen.
							MapX = Convert.ToInt32(x * 20);
							MapY = y * 20;
							Boden = new Rectangle(MapX, MapY, 20, 20);
							e.Graphics.DrawImage(BodenTexture, Boden);
							break;
						case "1":
							MapX = Convert.ToInt32(x * 20);
							MapY = y * 20;
							Wand = new Rectangle(MapX, MapY, 20, 20);
							e.Graphics.DrawImage(WandTexture, Wand);
							break;
					}

				}
			}
		//Fertig!
		} catch {
		}
	}
	public Form1()
	{
		
	Load += Form1_Load;
        Paint += DrawTile;
	}
}
Abgelegt unter Tilemap, C#, 2d.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!