Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kollision zwischen 2 Bildern in DelphiX (https://www.delphipraxis.net/11860-kollision-zwischen-2-bildern-delphix.html)

ISAS 19. Nov 2003 11:56

Re: Kollision zwischen 2 Bildern in DelphiX
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke mal für deine Antwort, aber leider muss ich dich entäuschen.
Das was du mir programmiert hast, habe ich auch schon selber mal programmiert.

Es handelt sich um das Bewegen.
Es soll sich nicht der Spieler bewegen, sondern die Umgebung. Der Spieler soll im Mittelpunkt befestigt sein und sich nicht vom Platz bewegen.

Ich hab schon vieles probiert, komme aber nicht auf die Lösung.

Habe hier ein Bild, wie ich das meine. (Bei meinem Spiel, was ich da oben mitgeschickt habe, ist es auch so)

ISAS 19. Nov 2003 11:59

Re: Kollision zwischen 2 Bildern in DelphiX
 
Zitat:

Zitat von ISAS
Naja, 5 mal wurde es schon heruntergeladen. Hat schon jemand eine Idee??
:gruebel:


Wenn ich die Kollision habe und das Spiel ruckelfrei geht, dann ises schon fast fertig.
Gegner sind dann ein Kinderspiel (Hab ich schon gemacht). Nur das Inventar (Maus in DelphiX) wird mir noch einige Probleme bereiten.

Also, helft mir bitte, bitte, bitte so schnell, viel und gut wie möglich

Ups, naja, wollte nur ändern, dass es 5 mal downgeloadet wurde, aber hab aus versehen auf den Button Zitat geklickt

ATwardz 19. Nov 2003 17:44

Re: Kollision zwischen 2 Bildern in DelphiX
 
Liste der Anhänge anzeigen (Anzahl: 1)
So , ich hoffe das dir dieses Beispiel weiter hilft!
Ich hatte noch keine Zeit für deine (Ich geh um die Büsche Kollision)!
Aber sonst funkst alles ruckelfrei!

Eins noch, da die Büsche jetzt keine VAriablen sind, kannst du sie nur mit Itemindex von der Spriteengine oder per finspriteat(x,y) anwählen!

Wenn es immernoch nicht das ist was du suchst , habe ich wohl grundlegend was falsch verstanden!


ATwardz!

ISAS 20. Nov 2003 19:07

Re: Kollision zwischen 2 Bildern in DelphiX
 
Danke, das hat mir gefehlt. Mille grazie!!!

Hab das Tgegenstand.create immer anders gemacht :stupid: . Das wird der Grund gewesen sein, wieso ich nur 1 Bild für Tgegenstand deklarieren konnte :idea: . Habe gerade deinen Quellcode Delphi4 tauglich gemacht :corky: (Hab nur Delphi4 und deswegen kann ich die neueren Versionen nicht öffnen, weil da immer ein Error kommt. Ich kann halt nur den Quellcode lesen, das Fenster, wo Labels, Buttons etc reinkommen, dass ladet der nicht.) :|

Bin im Moment gerade dabei, das Laden einzufügen, was ich aber sicher gleich haben werde. :-D

ATwardz 20. Nov 2003 22:01

Re: Kollision zwischen 2 Bildern in DelphiX
 
Freud mich das ich helfen konnte!
Viel Erfolg noch!

ATwardz

ISAS 29. Nov 2003 12:29

Re: Kollision zwischen 2 Bildern in DelphiX
 
So, bin erst jetzt zum Erläutern meines Problems gekommen. :?:

Ich öffne das Projekt. Das Öffnen-Fenster von Windows öffnet sich auch. Ich such die Textdatei, welche den Code für das Level enthält heraus und öffne sie. Es funktoniert alles perfekt, ausser eines. :x

Die Version, die ich von ATwardz erhalten habe, funktioniert ruckelfrei. Mein Level aber nicht. Es ist auch nicht grösser oder enthält mehr Sachen. 10 Büsche, 1 Player und der Rest ist Gras.
Also kann es nur am Laden liegen. Ich lade die Textdatei nämlich so:

Delphi-Quellcode:
if opendialog1.execute then
 Data:=TIniFile.Create(opendialog1.Filename);

for i:=0 to Maxx do
begin
 for j:=0 to Maxy do
  begin
    steine[i,j].visible := Data.readBool(IntToStr(i)+'_'+IntToStr(j),'visible',True);
    steine[i,j].typ    := Data.readInteger(IntToStr(i)+'_'+IntToStr(j),'typ',0);
  end;
end;
data.free;

muster:=Timage.create(self);

for i:=0 to Maxx do
begin
for j:=0 to Maxy do
begin

  With TGegenstand.Create(DXSpriteEngine1.Engine) do
  Begin
    if steine[i,j].typ=2 then begin
    {Image:=form1.DXImageList1.Items[0];}
    X:=j*32;
    Y:=i*32;
    end;
  end;
end;
end;
muster.free;
end;
Und die Textdatei schaut so aus:

[1_1]
visible=1
typ=2
[3_5]
visible=1
typ=3
[4_8]
visible=1
typ=2
...

Und dann wird das nie wieder verwendet. :gruebel:

ATwardz 29. Nov 2003 22:06

zu viele Bilder eingeladen!
 
Hi,

ich bin es wieder! Welche Werte werden MaxX und Maxy zugeweiden?
Ich rate dir hiermit immernoch das du mit Sprites arbeites, da diese wesntlich effektiver sind.

Dein Problkem ist glaube ich, das du alle Bitmaps lädst und anzeigst(Ach diese, die nicht im Surface deines Fensters angeziegt werden! So muss der Rechner überflüßiges berechnen!
Vorteile von Sprites sind, dass nur immer diese berechnet werden die angezeigt man sehen kann, jeder sprite greift auf deine Imagelist zu und nimmt das bild bei jeder berechnung neu aus der Liste!So ist deine Version viel Speicherfressender,da zu bei 100 Büschen 100 mal die Bitmap/JPG einliesst!(Schau dir mal im Taskmanager den verwendeten Speicher an, ich glaube der wird enorm sein!

An deiner Stelle würde ich echt auf Sprites umsteigen!
So muss du es folgendermassen anstellen!
- Images erstellen wenn sie ins Bild rücken!
- Images freigeben wenn sie aus dem Bild rücken!
- Die SaveTXT muss desswegen noch Koordinaten erhalten!

So ich denke einer von beiden wegen, wobei die Spritesvariante echt die entschieden bessere ist :zwinker: , müsste hinhauen!

ISAS 30. Nov 2003 13:03

Re: Kollision zwischen 2 Bildern in DelphiX
 
Es sind Sprites, die ich für die Büsche verwende.
Es besteht alles aus Sprites, seitdem du mir das Projekt geschickt hast. :wink:

Habe gerade MaxX und MaxY nachgeschaut. 30 war bei beiden eingestellt, aber jetzt hab ich 16/14 eingetippt und jetzt bewegt sich der Spieler (genauer gesagt die Büsche) nicht mehr. Irgendwie komisch. Dann hab ich es wieder auf 30 umgestellt, aber das hat auch nicht funktioniert. :gruebel:

Dann hab ich nachgeschaut, wo sich das DoMove befindet und hab gsehn, dass da gar nichts drin steht. :idea:
Hab dann was reingschriem und nun funkts flüssig. Aber jetzt hab ich ein Problem, weil du gefragt hast, wieviel ich bei MaxX und MaxY eingegeben habe. wenn ich 100 nimm, dann ruckelts. Es kommt dann ja auf die Grösse des Levels an, welches MaxX und MaxY ich verwende, oder??

Aja, die TXT-Datei enthält ja die Koordinaten zB. [1_1] oder [4_8].

- Images erstellen wenn sie ins Bild rücken!
- Images freigeben wenn sie aus dem Bild rücken!

Wie ich das machen kann, weiss ich nicht.

ATwardz 30. Nov 2003 15:23

Re: Kollision zwischen 2 Bildern in DelphiX
 
Ja, dann ist ja eigentlich alles klar, hatte mich dann verlesen im Bezug auf die Koordinaten und so!

Nja das mit dem erstellen und wieder freigeben ist recht simpel!
Du bekommst ja im DXdraw immer einem bestimmten Teil deines Levels angezeigt!
Nun schreibts du einfach deine Leveleinlesemethode in die OnMove Methode!
Nun überprüfst du immer ob einer deiner Büsche eingelsen werden muss wenn du deine Person bewegst!(Dazu musst du aufgrund der Performance dein Level vorher in eine Liste schreiben die du erstellst, sonst muss der rechner ja jedesmal auf die Datei zugreifen,das verlangsam das ganze!) :lol:

Nun musst Du nur noch in deine OnMove Procedure schreiben, ungefähr so!

IF bewegung = Rechts
Then
Begin

For i:=0 to Büschanzahl
If BuschRandkoordinaten = FormRandkoordinaten
then
Sprite.create;

If Sprite.x=Form1.width+Sprite.width then
Sprite.dead;

end;

Hoffe du verstehst was ich meine sonst frag einfach!

@wardz


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Seite 2 von 2     12   

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