c# Snippet - Colormap

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • c# Snippet - Colormap

      Hey Abend'
      Bin gerade mit einem Anfang meiner MapEngine fertig geworden, soll eine MapEngine werden, welches grafisch wie der RPG MAKER aufgebaut ist und zum Schluss habe ich vor einen 2D Chat daraus zu basteln.

      Um mich ein wenig reinzuüben in die Materie - Zeichnen, malen & etc habe ich es direkt mit der eigentlichen Engine versucht bin aber gescheitert nun habe ich aber einen neuen Ansatz.

      Vorerst jedoch möchte ich meine Colormap vorstellen,
      Sie kreiert Kästen in ein Image (z.B. PictureBox.Image) - die Größe je Kasten ist einstellbar (ich empfehle 32x32 auf 640x480 Auflösung) - benötigt wird nur eine Colormap Datei.

      Aufbau:

      Quellcode

      1. MAX. KÄSTEN AUF X ACHSE|MAX. KÄSTEN AUF Y ACHSE|ROT,GRÜN,BLAU|ROT,GRÜN,BLAU
      Erste Beiden Werte erklären sich von selbst und die restlichen sind Kästen angeordnet nach Reihenfolge.

      Beispiel Mapdatei:
      colormap1.map

      Quellcode

      1. 20|20|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1|22,33,120|255,120,0|0,10,50|255,210,0|120,55,1
      c# Code

      Quellcode

      1. static public Image ParseColorSet(Size TileSize, String ColorMapFile)
      2. {
      3. StreamReader reader = new StreamReader(ColorMapFile);
      4. String[] MapData = reader.ReadToEnd().Split('|');
      5. reader.Close();
      6. Int32 MapWidth = Convert.ToInt32(MapData[0]) * TileSize.Width;
      7. Int32 MapHeight = Convert.ToInt32(MapData[1]) * TileSize.Height;
      8. Bitmap ReturnMap = new Bitmap(MapWidth, MapHeight);
      9. Int32 Tile = 2;
      10. for (int y = 0; y <= MapHeight - TileSize.Height; y += TileSize.Height)
      11. {
      12. for (int x = 0; x <= MapWidth - TileSize.Width; x += TileSize.Width)
      13. {
      14. if (Tile >= MapData.Length)
      15. return ReturnMap;
      16. String[] colors = MapData[Tile].Split(',');
      17. Int32 red = Convert.ToInt32(colors[0]);
      18. Int32 green = Convert.ToInt32(colors[1]);
      19. Int32 blue = Convert.ToInt32(colors[2]);
      20. Color TileColor = Color.FromArgb(red, green, blue);
      21. for (int PY = y; PY < TileSize.Height + y; PY++)
      22. {
      23. for (int PX = x; PX < TileSize.Width + x; PX++)
      24. {
      25. ReturnMap.SetPixel(PX, PY, TileColor);
      26. }
      27. }
      28. Tile++;
      29. }
      30. }
      31. return ReturnMap;
      32. }
      Alles anzeigen
      Aufrufbeispiel:

      Quellcode

      1. PictureBox1.Image = ParseColorSet(new Size(32,32),"C:\\colormap1.map");
      Ich bin für Verbesserungsvorschläge offen.
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • [FONT="Comic Sans MS"][COLOR="DeepSkyBlue"][SIZE="2"]Habs mir noch nich angeschaut, aber scheint interessant zu werden.
      Wie ist das 2D Chat zu verstehen?
      So ne Art Chat, wo man auch rumlaufen kann, also like 2D MMORPG nur halt als Chat oder wie haste gemeint?
      Denn MapEngine und Chat kann ich nich so recht verbinden ohne diesen Ansatz.
      Nun zum Code.
      Wäre evtl gut, wenn du das in ne Klasse packst und noch nen Namespace vergibst.
      So kann mans direkt in ne neue .cs Datei machen und mus sich nich selbst ne Klasse/Namespace machen^^
      Sowas ist immer besser, wenn man Snippets verteilt.
      Der Code ans sich ist eigentlich sicher auch noch verbesserungsfähig, da gibts sicher Sachen, die man noch besser machen kann, aber es geht auch so.
      Erweiterbar ist das Ding auch noch gut^^

      Jedenfalls, kannst mich ja evtl in ICQ adden, ich helf dir gerne mal aus, wenn was ist.
      Solltest mich nur nich jeden kleinen Zipfel fragen, sowas mag ich nich.
      Ich bin ja, wenn du in den XNA Bereich gesehn hast, dran, eine MapEngine bzw ein generelles RPG Studio zu coden, kannst ja mal schaun.
      Sofern mein Ansatz stimmt von MapEngine und deinem Chat, so wäre XNA durchaus ein praktisches Hilfsmittel.
      Wie gesagt, adde mich einfach mal in ICQ, sag, wer du bist und dann können wir reden[/SIZE][/COLOR][/FONT]