AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Koordinaten von einer Grafik
Thema durchsuchen
Ansicht
Themen-Optionen

Koordinaten von einer Grafik

Ein Thema von Z32 · begonnen am 20. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Z32
(Gast)

n/a Beiträge
 
#1

Koordinaten von einer Grafik

  Alt 20. Mai 2006, 14:10
Hallo,

ich hätte da eine Frage:

Bei einem kleinem selbstgemachten shooter [also oben ein kasten der sich sprunghaft bewegt, nicht gleichmäßig, und unten hat man ein schiff, mit dem man auf den kasten schießen soll] hab ich das Problem wie ich abfragen soll wann der Schuss auf den kasten trifft und wann nicht.
Ich habe mit gedacht, ich lese einfach die Kooradinaten des Bildes aus und sagen dann:

If Bildkoordinate = Kastenkoordinate then showmessage('Getroffen');

Geht das ??? Und wie kann ich die Koordinaten überhupt auslesen ???

PS: Ich habe schon oft etwas mit mousmove gehört, aber damit wir in meinem Fall das schiff bewegt.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Koordinaten von einer Grafik

  Alt 20. Mai 2006, 14:17
wenn du nur einen punkt abfragst wäre das relativ sinnfrei. du solltest einen ganzen bereich abfragen! falls du images benutzen schau dir top, left, height und width an.
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#3

Re: Koordinaten von einer Grafik

  Alt 20. Mai 2006, 14:23
Ja ich benutze dafür ein Image, aber wie frage ich den ab, wo sich der Kasten und das Feuer gerade befindet ??? Also das mit Top,left,width,height ist mir klar, aber die stelle habe ich damit ja auch noch nicht gefunden, oder liege ich da falsch ?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Koordinaten von einer Grafik

  Alt 20. Mai 2006, 17:29
Hi,
also es gibt jetzt zwei Möglichkeiten, du kannst warten bis irgendwer hier zufällig richtig errät, wie dein Programm aufgebaut ist oder du könntest schon etwas mehr Infos posten.
Ich meine ist gar nicht so schwer, gehört zu Forenbeiträgen einfach dazu und erleichtert es einfach mal dir sinnvoll zu antworten.

Du hast einen hüpfenden Kasten und ein Schiff das schießt, schön. Gibt wohl um die zig-Tausend Möglichkeiten Beides zu implementieren, also:
Wie bewegst du deinen Kasten, wie dein Schiff, wie sieht dein Schuß aus? (einfach Code anhängen ist manchmal eine Idee)

Mal völlig losratend denke ich, dass sich dein Schiff nur auf einer Achse horizontal bewegt (und ein TImage ist) und der Kasten ein TImage (ging ja aus meinem Vorrater hervor ), der hüpft. Ist der Schuß nun eine orthogonal zur Bewegungsachse des Schiffs laufende Gerade? Dann müsstest du nur schauen, ob die x Koordinate des Schusses (der wenn ich richtig liege alles auf der y-Achse trifft) sich innerhalb der Ausdehnungen des Kastens (zwischen Left und Left + Width) befindet.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#5

Re: Koordinaten von einer Grafik

  Alt 20. Mai 2006, 18:43
Also...

Es tut mir ja sehr leid, wenn ich nicht genug Infos dazu geschrieben habe. Ich wusste nicht, dass ihr soviele Informationen braucht um mir zu helfen. Aber ich werde jetzt noch ein bischen zu dem Projekt schreiben.

Das Projekt:
Das Projekt ist ein kleiner Shooter für eine Person, es gibt ein Schiffchen das sich ganz unten auf der x-Achse mithilfe der Maus bewegen lässt. Klickt man auf die Linke Maustaste löst sich ein Schuss vorne aus dem Schiffchen und fliegt auf der y-Achse nach oben. Dann gibt es noch einen Kasten, der sich ganz oben auf der x-Achse bewegt, aber eben nicht gleichmäßig, sondern mal erscheint er da, mal da. Aber IMMER ganz oben auf der x-Achse.

Die Steuerung:
Das Schiffchen ist ein Image und ich steuere es mit einem Mousmove, also die Maus ist das Schiffchen und kann aber nur auf der x-Achse ganz unten bewegt werden.

Das Feuer ist auch ein Image und bleibt immer genau über dem Schiffchen, wenn man auf die Linke Muastaste drückt läd das Image das Feuerbild und bewegt sich auf der y-Achse nach oben. In der Zeit wo sich der Schuss löst, bis er aus dem Bild fährt ist dei Maus gespertt, damit man den Schuss nicht lenken kann, den wie gesagt befindet sich das Feuerimage immer über dem Schiffchen.

Der Kasten ist mit einem Timer gesteuert und auch ein Image. Der Timer erzeugt eine Zufalls Zahl und setzt den den Kasten neu. Die Zahl befindet sich natürlich immer unter 216, denn mein Form ist nur 216 Pixel breit.

Die Frage:
Wie kann ich abfragen wann das Feuerimage auf das Kastenimage trifft ???????


Also ich hoffe ich habe damit jetzt genug Infos gegeben.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Koordinaten von einer Grafik

  Alt 21. Mai 2006, 11:29
Sehen wir mal davon ab, dass du nicht gesagt hast wie sich der Schuss bewegt, hilft es auf jeden Fall deutlich weiter. Ich gehe hier einfach mal davon aus, dass du auch den Schuss über einen Timer steuerst?

An sich musst du nur schauen, was genau einen Treffer ausmacht. Treffen kannst du den Kasten nur, wenn der Schuß die richtige X- und Y-Position hat. Soweit war es dir sicherlich eh klar. Wichtig ist jetzt wann sind die richtig?
Da sich dein Kasten auf einer festen horizontalen Achse bewegt (X-Achse), ist seine verticale Position auch konstant (immer gleiche Y-Koordinate). Damit kannst du also schauen ob dein Schuss als Y-Position zwischen Kasten.Top und Kasten.Top + Kasten.Height liegt.
Für die x-Position gilt jetzt im Prinzip eigentlich das gleiche. Sobald der Schuss die richtige Y-Position hat, musst du zusätzlich prüfen, ob die x-Koordinate des Strahls im Bereich von Kasten.Left und Kasten.Left + Kasten.Width liegt. Das ist alles.
Machen musst du dass natürlich bei jeder Bewegung des Strahls (also die Abfrage), der Kasten kann ja auch während dessen weiter springen.
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#7

Re: Koordinaten von einer Grafik

  Alt 21. Mai 2006, 13:43
aha, soweit habe ich das Prinzip jetzt verstanden. Doch wie muss den jetzt diese Abfrage aussehen.
Also ich habe das so verstanden:


Delphi-Quellcode:
If Feuerimage = (kastenimage.top) and (kastenimage.left+kastenimage.height) then //y Position abfrage
begin
If Feuerimage = (kastenimage.left) and (kastenimage.left+kastenimage.width) then showmessage('Getroffen'); //x Position Abfrage
end;
Aber ich glaube, dass das so nicht stimmt, bin im Thema bewegung mit Delphi noch nicht ganz so besonders gut. Könnte mir vielleicht nochmal wer darüber schauen und gucken ob ich das richtig umgesetzt habe ?
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Koordinaten von einer Grafik

  Alt 21. Mai 2006, 14:17
Du hast ihn Falsch Verstanden! So sollte es gehen:

Delphi-Quellcode:
If (Feuerimage.top < kastenimage.top) and (Feuerimage.top > kastenimage.top+kastenimage.height) //y Position abfragen
   and (Feuerimage.Left > kastenimage.left) and (Feuerimage.Left > kastenimage.left+kastenimage.width) //x Position abfragen
      Then begin
            //Kollision
      end;
Es Gibt Glaub ich aber ne elegantere Lösung habse aber vergessen
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Z32
(Gast)

n/a Beiträge
 
#9

Re: Koordinaten von einer Grafik

  Alt 21. Mai 2006, 15:44
mhhhh...erstmal danke für das Code Beispiel.

Aber ich glaube der funst nicht. Zumindest nicht bei mir. Ich stell jetzt mal den Code von dem Timer rein, der den Schuss steuert.

Zur erklärung:


image2 = Feuerimage
image3 = Kastenimage
feuer = Variable mit Wert -5
zuruck = Variable mit Wert 1

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
BlockInput(true);
image2.Top:=image2.Top+feuer;
if (image2.top<image3.top) and(image2.top>image3.top+image2.Height)
and (image2.left>image3.left) and(image2.left>image3.left+image3.width)
then begin
showmessage('Getroffen');
end;
if image2.top<0 then
begin
repeat
image2.Top:=image2.Top+zuruck;
until image2.top=216;
image2.Picture := nil;
BlockInput(false);
timer1.Enabled:=false;
end;
end;
Vielleicht habe ich ja noch einen anderen Fehler drin, oder den Code von dem Beitrag vor mir falsch eingebaut.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Koordinaten von einer Grafik

  Alt 21. Mai 2006, 15:47
hab ein > sttat ein kleiner gemacht

Delphi-Quellcode:
If (Feuerimage.top > kastenimage.top) and (Feuerimage.top < kastenimage.top+kastenimage.height) //y Position abfragen
   and (Feuerimage.Left > kastenimage.left) and (Feuerimage.Left < kastenimage.left+kastenimage.width) //x Position abfragen
      Then begin
            //Kollision
      end;
so sollte es funzen
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:41 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