![]() |
Map erstellen
Hiho,
wie erstellt man eine Map, auf der Objekte (wie Bäume usw) nicht in gleichmäßig angeordneten Feldern stehen sollen. Die einzelnen Spielfiguren sollen sich jeweils pixelweise bewegen, also nicht von Feld zu Feld "springen"... Wenn man das mit Arrays regelt, wie macht man das denn dann? Ein Objekt (Baum) hat die Standardgröße von 30x30 Pixeln. Das Array bei einer 200x200 großen Map sieht doch dann so aus: map : array [1..200,1..200] of smallint; Problem: Jetzt hat man doch wieder "einzelne Felder"... Ich hoffe, dass irgendjemand mein Problem nachvollziehen kann *g* mfg devnull |
Re: Map erstellen
Ich würde die Map zeichnen und darauf die Bäume plazieren.
Die Bäume werden in einem Array gespeichert und bei jedem steht die genaue Position dabei. Du musst unbedingt einen Algorithmus implementieren der verhindert dass zwei Bäume übereinander stehen (falls sie zufällig erzeugt werden). Daran solls aber nicht scheitern. |
Re: Map erstellen
Ja, aber wie macht man das? Speichert man die x/y-Koordinaten des Objekts
(also benutzt man doch die einzelnen Pixel)? Später muss man ja zum Beispiel bei einem Kampf die Entfernung zwischen den Einheiten berechnen... Andernfalls würde man ja wieder die einzelnen Felder verwenden?! |
Re: Map erstellen
N´abend
Irgenwo hatten wir das schon mal. Bau Dein Modell mit Records auf (Naja oder mit Objectlisten) und speichere in den Records die Position und den Status der Figuren. Dann läßt Du die Figuren auf dem Spielfeld im Canvas zeichnen. Versuche keinesfalls über die Pixel zu gehen. Sowas hängt ja an der Bildschirmauflösung. Spieleentwicklung ist leider nich mein Spezialgebiet, aber obige Hinweise sind solide. Grüße // Martin |
Re: Map erstellen
Ich habe einige Beiträge zu diesem Thema schon in der Suche gefunden. Aber
keines beantwortet mir meine Frage... Mir ist schon klar, dass ich das mit Records bzw. Objectlisten machen muss. Ich möchte praktisch so etwas wie bei Age of Empires erreichen, bei dem die Einheiten auch nicht von Feld zu Feld springen... Ich weiß nicht, wie ich die Map zeichnen kann, auf der Bäume usw. unregelmäßig verteilt sind und sich auch noch Einheiten bewegen sollen. Ich nehme an, dass bei AoE die Karte auch nicht in viele kleine Felder unterteilt ist, oder? |
Re: Map erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Ok
Wie das in dem Spiel gemacht ist habe ich keine Ahnung! Mein Spezialgebeit sind Datenbanken. Trotzdem würde ich das folgend angehen. Das Spielfeld ist zunächst eine Bitmap, sagen abgelegt in einer Imagelist. Die Figuren sind dann sogenannte Overlaybitmaps, also Sprites (Such mal nach Sprite-Komponenten, das hilft Dir bestimmt weiter). Bei einem Spielstand würde ich zunächst das Spielfeld auf den Canvas einer Scrollbox Zeichnen und dann die Sprites darüber zeichnen. Möglicherweise melden sich ja die Spieleentwickler noch... Bis morgen // Martin PS: Moment habe da noch was im Anhang (tiefe Fundgrube...) |
Re: Map erstellen
Hi, ich kann das Projekt nicht starten, weil die voxel1.pas fehlt - oder mach ich da was falsch?
|
Re: Map erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, nochmal was mit Sprites // Martin
|
Re: Map erstellen
Wenn du das Spiel wirklich ohne Tiles & Felder aufbauen willst, dann brauchst du doch auch kein array mit eben diesen Feldern, oder?
Beispiel: Du erstellst eine Karte der größe 10.000 x 10.000 Pixel. Den Boden baust du evtl aus Tiles auf. Die einzelnen Objekte (Bäume,Leute,Gebäude etc) werden Pixelgenau mit Koordinaten von 0|0 bis 10.000|10.000 plaziert. Zu jedem Objekt gehören dann noch Höhen- und Breitenangaben, die eine "tote Zone" markieren (evtl. auch per Radius dieses Gebiet definieren). Wenn sich die Figuren bewegen muss dann eben darauf geachtet werden, dass sich der von den Figuren benötigt Platz nicht überschneidet. Btw. soweit ich mich erinnere wurde in AoE die Karte doch auch in Felder aufgeteilt, zumindest war doch im Leveleditor dieses Raster.. :gruebel: |
Re: Map erstellen
Moin martin, in den Beispielen werden leider nicht "DelphiX-Komponenten" verwendet :(
Zitat:
insgesamt 333x333 Spielfelder groß. Folglich kann ich genau 333x333 Grasflächen zeichnen?! :arrow: Wobei ich wieder im Raster wäre :( Ich versuchs jetzt mal so: Ich erstelle eine Karte mit 200x200 Feldern à 30x30 Pixeln. Der Hintergrund wird dann mit Map[x,y] ermittelt und abhängig der Position auf der Karte (in Pixeln) gezeichnet.
Delphi-Quellcode:
type
TObjekt = class(TImageSprite) private public XMap, YMap : integer; //Pixelgenaue Standortangabe akt_leben, max_leben : smallint; Klasse : byte; Klasse_str : string[25]; Info : string[255]; end; var Objekt : array [1..200] of TObjekt; Map[200,200] : array of byte; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz