AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Map erstellen

Ein Thema von devnull · begonnen am 21. Okt 2005 · letzter Beitrag vom 23. Okt 2005
Antwort Antwort
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#1

Map erstellen

  Alt 21. Okt 2005, 20:17
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
-- Never change a running system --
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#2

Re: Map erstellen

  Alt 21. Okt 2005, 20:55
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.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#3

Re: Map erstellen

  Alt 21. Okt 2005, 21:01
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?!
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#4

Re: Map erstellen

  Alt 21. Okt 2005, 22:19
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
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#5

Re: Map erstellen

  Alt 21. Okt 2005, 22:36
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?
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Map erstellen

  Alt 21. Okt 2005, 22:56
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...)
Angehängte Dateien
Dateityp: zip voxel_199.zip (272,0 KB, 29x aufgerufen)
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#7

Re: Map erstellen

  Alt 22. Okt 2005, 10:19
Hi, ich kann das Projekt nicht starten, weil die voxel1.pas fehlt - oder mach ich da was falsch?
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#8

Re: Map erstellen

  Alt 22. Okt 2005, 18:52
Moin, nochmal was mit Sprites // Martin
Angehängte Dateien
Dateityp: zip sprites_589.zip (307,2 KB, 17x aufgerufen)
Martin Schaefer
  Mit Zitat antworten Zitat
Spoon

Registriert seit: 26. Apr 2003
39 Beiträge
 
#9

Re: Map erstellen

  Alt 22. Okt 2005, 18:58
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..
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#10

Re: Map erstellen

  Alt 23. Okt 2005, 08:48
Moin martin, in den Beispielen werden leider nicht "DelphiX-Komponenten" verwendet


Zitat von Spoon:
Beispiel:
Du erstellst eine Karte der größe 10.000 x 10.000 Pixel. [...] Die einzelnen Objekte (Bäume,Leute,Gebäude etc) werden Pixelgenau mit Koordinaten von 0|0 bis 10.000|10.000 plaziert.
Das is ja mein Problem: Wenn ein Objekt eine Größe von 30*30 Pixel hat, dann ist doch die Karte
insgesamt 333x333 Spielfelder groß. Folglich kann ich genau 333x333 Grasflächen zeichnen?!
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;
-- Never change a running system --
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz