2D-Karteneditor; Isometrie; Rollenspiel

Moderatoren: crack, Marwin, Krüsty

Beitragvon Dark Rain » Donnerstag 19. August 2004, 22:28

Guten Tag,

Ich möchte gerne einen Karteneditor (isometrische Karte) für ein 2-dimensionales Rollenspiel mit Visual Basic 6.0 programmieren.

Mein Problem ist die Isometrie: Wenn es eine ganz normale quadratische Karte im Stil von Schiffe versenken gewesen wäre, dann würde Ich einfach immer wieder Images bzw. Pictures in Reihe anordnen. Das sähe dann so aus:

Bild

Nur jetzt möchte Ich gerne eine Karte mit isometrischer Ansicht. Wenn ich ganz einfach quadratische Images bzw. Pictures in VB anordnen würde, sähe das so aus:

Bild

Nur das sieht nicht besonders schön aus, wenn an den Rändern solche Ecken sind. Ich möchte die Ränder gerne glatt haben. Außerdem soll die Spitze der Karte (oben) auch spitz sein, und nicht flach. Die beste Lösung ist nun, dass Ich anstatt Quadrate einfach karoförmige Images nehme. Weiß einer, wie Ich karoförmige Images in Visual Basic 6.0 erstellen kann?

Jedenfalls möchte Ich, dass die Karte im Leveleditor später so aussieht:

Bild

Das Problem ist, wie ich schon angesprochen habe, das ich solche Images oder Picture-Boxen schlecht mit Visual Basic erstellen kann.

Eine andere Alternative wäre, dass Ich die Images wie in Bild 2 anordne und dann halt jeweils die "Ränder" abschneide d.h. dass ich die Ränder in den Hintergrund verdränge, durch ein anderes Objekt. Dazu nehme Ich dann am besten ein Linie, die Ich schräg mache und die dazu noch sehr breit ist, sodass sie die ganzen "Ränder" verdecken kann, Ich hoffe, ihr könnt mir folgen :wink: .

Beide Methoden wären möglich, nur ganz einfach sind sie beide nicht.

Meine Fragen
1) Wie erstelle Ich karoförmige Images/Pictures in Microsoft Visual Basic 6.0 ?
2) Welche der beiden beschriebenen Methoden würdest du benutzen?

MfG
Dark Rain
Dark Rain
Newbie
 
Beiträge: 3
Registriert: Donnerstag 19. August 2004, 22:22

Beitragvon Marwin » Freitag 20. August 2004, 23:02

Da die einzigst mögliche Fensterform der PictureBoxen die rechteckige ist, kannst du nicht direkt andersförmige Fenster/Kacheln erzeugen. Wenn du aber mit Grafikformaten arbeitest, die Transparenz unterstützen, dann kannst mit den Image-Controls ohne große Probleme beliebig-förmige Kacheln erstellen.

In dem Screenshoot im Anhang habe ich zwei Dreieckskacheln übereinander gelegt und die Abmessungen zur jeweils mit einem Rahmen gekennzeichnet. Mit karoförmigen Kacheln ist es genau das selbe Prinzip, nur dass du dort eben die Positionen der einzelnen Image-Controls anders berechnen musst als bei Dreiecken.

Grüße, Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Dark Rain » Samstag 21. August 2004, 00:30

Guten Tag,

Wenn du aber mit Grafikformaten arbeitest, die Transparenz unterstützen, dann kannst mit den Image-Controls ohne große Probleme beliebig-förmige Kacheln erstellen.


Ich hatte eigentlich vor, dass Ich eine einzige, große Picture-Box als "Karte" nehme. Das Raster erstelle ich dann über eine Schleifen-Funktion, die mir dann das Raster zeichnet. Ich hatte nicht vor, das Raster mit Hilfe von *.gif-Images zu erstellen. Nicht böse gemeint... :rolleyes:

In dem Screenshoot im Anhang habe ich zwei Dreieckskacheln übereinander gelegt und die Abmessungen zur jeweils mit einem Rahmen gekennzeichnet. Mit karoförmigen Kacheln ist es genau das selbe Prinzip, nur dass du dort eben die Positionen der einzelnen Image-Controls anders berechnen musst als bei Dreiecken.


Ich frage mich noch, wie Ich die Positionen überhaupt berechnen soll?!? Ich meine, auf der VB-Picture-Box gibt es ja für jedes Pixel eine Position. Dann muss Ich halt für jedes Objekt die genaue Pixel-Position speichern. Nur was bringen mir dann die Iso-Karos? Nur damit sich der Anwender orientieren kann, oder .....(?)

Danke für deine Antwort!

MfG
Dark Rain
Dark Rain
Newbie
 
Beiträge: 3
Registriert: Donnerstag 19. August 2004, 22:22

Beitragvon Marwin » Samstag 21. August 2004, 23:33

Hallo

Ich hatte nicht vor, das Raster mit Hilfe von *.gif-Images zu erstellen.

Das sollte auch nicht für das Raster, sondern für das Anzeigen der Kachelinhalte (Texturen oder was auch immer) gedacht sein. Ich dachte dir geht es darum, den Inhalt jeder Kachel anzuzeigen. Jedenfalls hast du von dem Anordnen von karoförmigen Images geschrieben. Wenn du lediglich ein Karomuster erzeugen möchtest, dann brauchst du dich um die Form von Images ja nicht kümmern, da du das einfach mit den VB-Grafikmethoden realisieren kannst.

Grüße, Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland

Beitragvon Dark Rain » Sonntag 22. August 2004, 00:57

Guten Tag,

Jedenfalls hast du von dem Anordnen von karoförmigen Images geschrieben. Wenn du lediglich ein Karomuster erzeugen möchtest, dann brauchst du dich um die Form von Images ja nicht kümmern, da du das einfach mit den VB-Grafikmethoden realisieren kannst.


Genau das habe Ich jetzt auch gemacht, sodass mein Programm jetzt so aussieht:

Bild

Das sollte auch nicht für das Raster, sondern für das Anzeigen der Kachelinhalte (Texturen oder was auch immer) gedacht sein. Ich dachte dir geht es darum, den Inhalt jeder Kachel anzuzeigen.


Richtig, das ist jetzt der nächste Schritt. Ich möchte jetzt gerne Objekte, d.h. Kachelinhalte auf meinem Picture in meinem Programm anordnen. Wenn du willst kann Ich dir mal den Source Code geben, damit du etwas mehr bescheid weißt, die Ich da was mache. Oder Ich könnte den Source posten. Ich möchte dir keine Arbeit aufdrängen, sondern Ich möchte nur wissen, wie ich bei dem Programm jetzt weitermachen soll. Wie könnte Ich z.B. die Tiles farbig machen? Oder wie kann Ich Objekte platzieren und dessen Position in der Level-Datei vermerken? Weißt du, ich verstehe jetzt noch nicht ganz, was jetzt der nächste Schritt ist, d.h. wie es jetzt weitergeht. Ich bin dir für deine Hilfe natürlich sehr dankbar! :)

MfG
Dark Rain
Dark Rain
Newbie
 
Beiträge: 3
Registriert: Donnerstag 19. August 2004, 22:22

Beitragvon Marwin » Sonntag 22. August 2004, 11:18

Hallo,

wenn du mit Tiles farbig machen das färben in einer einzigen Farbe meinst, dann kannst du doch sicher einfach die Paint-Methode verwenden.
Deine Objekte hast du sicherlich in Grafikdateien gespeichert. Wenn das der Fall ist, dann kannst du die Objekte folgendermaßen auf deiner PictureBox platzieren:
Du erstellst ein Image-Control, weißt diesem als Picture die entsprechende Grafikdatei zu, setzt Border-Style auf 0-None, und positionierst das Image-Control dann an die jeweiligen Koordinaten. Deine Grafiken sollten außerhalb des Karos transparent sein, und schon sieht es so aus, als ob die Images wirklich Karos wären.

Speichern kannst du das eigentlich auch relativ einfach. Stell dir die Map als Datenfeld vor, wie unten gezeigt. Beim Speichern könntest du dann im einfachsten Falle den Name der Grafikdatei für jedes Element des Datenfeldes nacheinander in die Datei schreiben. Zusätzlich vermerkst du in der Datei noch, wie breit und hoch das Feld ist, so dass du beim Auslesen weiß, zu welchem Feld welche Grafikdatei gehört.

Grüße, Marwin
Benutzeravatar
Marwin
Moderator
 
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland


Zurück zu VB/VBA/VBS

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron