Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Brauche ein "Map-System" oder sowas für ein spiel... (https://www.delphipraxis.net/39284-brauche-ein-map-system-oder-sowas-fuer-ein-spiel.html)

Khabarakh 4. Feb 2005 17:39

Re: Brauche ein "Map-System" oder sowas für ein sp
 
Dazu bräuchte der Record noch ein weiteres Feld:

Delphi-Quellcode:
TFeld = record
x: Integer; //X-Koordinate
y: Integer; //Y-Koordinate
Textur : String; //Texturpfad für das Feld
TexturPos: TPoint; //Position der Textur in der Textur-Datei
Jetzt lädst du die Textur-Datei in ein zusätzliches Bitmap und fügst dann den entsprechenden Bereich ein. Mal ein Beispiel mit BitBlt (ohne Scrollen):
Delphi-Quellcode:
begin
  for i:=0 to 99 do
    for ii:=0 to 99 do
      BitBlt(MainBit.Canvas.Handle, Feld[i,ii].x*32, Feld[i,ii].y*32, 32, 32,
             TexturBit.Canvas.Handle, Feld[i,ii].TexturPos.x*32, Feld[i,ii].TexturPos.y*32, SRCCOPY);
end;
Links oben in der Datei ist 0,0

[EDIT] Das Texturpfadfeld im Record kannst du ja dann weglassen, da du wohl nur eine Texturdatei hast.

Jens Schumann 4. Feb 2005 18:04

Re: Brauche ein "Map-System" oder sowas für ein sp
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
es hört sich so an, als ob doe Karte statisch ist. D.h. sie ändert sich nicht in der Größe.
Und es handelt sich um eine Bitmap. Dann habe ich evt etwas für Dich. Vor langer Zeit habe ich mir mal eine maussensitive Komponente auf Basis von TImage gebastelt. Man braucht dafür eine Bitmap und das Programm clickimg (ist im Anhang). In dieses Programm lädt man die Bitmap. Dann kann man in der linken Bitmap mit der Maus rechteckige Bereiche festlegen. Jeder Bereich bekommt eine ID. Darüber kann man den Bereich im Spiel erkennen. Wenn Du auf Aktualisierung klickst kannst Du in der rechten Hälft die Sache schon mal testen.

Nach dem Du alles mit Pfadangaben entpackt hast starte mal clickimg.exe (steckt in ..\bin) und öffne mal die Bitmap aus dem Verzeichnis ..\Beispiel und anschließend über "Öffne Buttondatei" im Menu die Datei tastatur.btd. Dann klicke mal auf Aktualisieren. Nun klicke mal auf der rechten Bitmap rum. Das Beispiel im Verzeichnis ..\Beispiel zeigt die Verwendung der Komponente.

Master_RC 5. Feb 2005 11:49

Re: Brauche ein "Map-System" oder sowas für ein sp
 
wenn das jetzt nen bitmap ist...
wie lege ich dann fest, ob ich das nächste tile (beim weitergehen) jetzt z.b. betreten kann oder nicht?

Khabarakh 5. Feb 2005 12:34

Re: Brauche ein "Map-System" oder sowas für ein sp
 
Was hat das mit dem Bitmap zu tun? Für die Bewegungen usw. greifst du auf deine TFeld-Variable zu:
Delphi-Quellcode:
if Key=VK_Left then
  if (Spieler.x>0) and Feld[Spieler.x-1,Spieler.y].Begehbar then
  begin
    Spieler.x:=Spieler.x-1;
    //usw.
  end
  else
    //Bewegung nicht möglich
  end;
[EDIT]
Jetzt versteh ich es, du hast dich die Bitmap-Datei von Jens Schumann bezogen :oops: . In der Bitmap hast du jedes Texturviereck einmal vorhanden, die Positionen der Texturen stehen aber in der TFeld-Variable.

Tipp: Du kannst den Record ganz einfach mit
Delphi-Quellcode:
var FeldFile: File of TFeld
speichern und laden (auch mehrere in derselben Datei).

Master_RC 6. Feb 2005 11:07

Re: Brauche ein "Map-System" oder sowas für ein sp
 
ach gotteles....
ich werd immer mehr verwirrter :|

ich mein halt, wie ich das jetzt mache, dass die ganze karte um 1 tile nach links oder so weiterrutscht...

kann mir da jemand evtl. mal ein beispiel machen?
wäre sehr nett!

Master_RC 8. Feb 2005 11:53

Re: Brauche ein "Map-System" oder sowas für ein sp
 
nochmal hi leutz!

kann hier denn keiner helfen...

außerdem möchte ich noch Maa83 dran erinnern ;)

naja...
kann denn keiner wenigstens nur ein klitzekleines beispiel uploaden... büdde... :)

DP-Maintenance 8. Feb 2005 12:01

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Sonstige Fragen zu Delphi" nach "Multimedia" verschoben.

Airblader 8. Feb 2005 17:28

Re: Brauche ein "Map-System" oder sowas für ein sp
 
Zitat:

Zitat von Maa83
also wenn ich dich richtig verstehe möchtest du eine Karte von sagen wir mal 100x100 Feldern erstellen bei der jedes Feld Eigenschaften besitzen kann. Dazu überlegen wir uns folgendes:

Ein Feld hat verschiedene Eigenschaften, also:

Delphi-Quellcode:
TFeld = record
 x: Integer; //X-Koordinate
 y: Integer; //Y-Koordinate
 Textur : String; //Texturpfad für das Feld
 Begehbar : boolean; //Kann man auf dem Feld laufen oder nicht
 Teleport : TPos; //Datentyp der die X,Y Koordinate enthält auf welches
                  //Feld teleportiert wird (0/0) für kein Teleportfeld
 //... kannst zum Beispiel noch Waffen auf dem Feld liegen haben oder Ressourcen.
end;
als nächstes brauchen wir dann die Karte:

Delphi-Quellcode:
map : array[0..100,0..100] of TFeld; //Kannst das natürlich auch dynamisch machen
Nun kannst du einfach eine doppelte for Schleife durchlaufen und die Karte nach den Texturen füllen. Das abspeichern in eine Datei sollte nun keine allzu große Herausforderung darstellen.

Ich hoffe das ich das Problem richtig verstanden habe...

Sorry, ist etwas spät, aber eine Korrektur eines kleines Logikfehlers:

wenn du array[0..100,0..100] machst, hast du als erstes feld ja [0,0]

Aber wenn du bei Teleport 0/0 für "kein Feld" (=nicht telportierbar) nimmst, kannst du nicht auf das 1. feld teleportieren..

also entweder array[1..101,1..101] oder für nicht teleport (-1/-1)

air

Master_RC 10. Feb 2005 14:52

Re: Brauche ein "Map-System" oder sowas für ein sp
 
danke! :)

aber weiß ich immernoch nicht, wie ich die karte anzeigen soll, bzw. wie ich dann meinen charakter bewegen kann und zar so, dass er eben das "begehbar", bzw. "teleport" beachtet....

ttrotzdm danke!

Master_RC 13. Feb 2005 11:55

Re: Brauche ein "Map-System" oder sowas für ein sp
 
jud, ich hab jetzt einfach 25 images reingehaun und die eben dann immer ausgelesen und bild gealden, etc. würde jetzt auch klappen ;)

nur wenn jemand etwas besseres hat, wäre es ja doch nett, es mir biezutragen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 Uhr.
Seite 2 von 4     12 34      

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-2025 by Thomas Breitkreuz