AGB  ·  Datenschutz  ·  Impressum  







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

Spezielle Frage zu TCanvas und TShape

Ein Thema von Forlan · begonnen am 9. Jan 2009 · letzter Beitrag vom 11. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#1

Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:22
Hallo zusammen!

Ich habe gerade folgendes Problem...
Zur Zeit programmiere ich ein Spiel, wobei alles wunderbar soweit funktioniert. Ich bewege eine Figur (zur Zeit erstmal nur ein Shape) auf meinem Spiel, welches ich mit TCanvas gezeichnet habe... Wenn dann aber die Figur auf ein Hinderniss trifft, (ebenfalls mit TCanvas gezeichnet) soll die Figur stehen bleiben..
Und genau da ist mein Problem... Ich finde in diesem Fall einfach keinen Ansatz... ich hab mir schon so Sachen überlegt, wie z.B. wenn das Shape.Pen.Color auf eine bestimmte Farbe halt trifft, das dann meine boolsche Variable auf False gesetzt wird...
Nur wie realisiert man das?
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:29
Du benötigst eine Kollisionsabfrage. Am Einfachsten anhand der Koordinaten einen geometischen Hülle um die Figur ( z.B. Rechteck)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:32
ok, sollte machbar sein... Auf sowas in der art bin ich auch schon gekommen, dachte aber vllt. gibt es eine einfachere Möglichkeit mit direkter Abfrage

Naja, dennoch danke!
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:35
Für Speile solltest du aus Geschwindigkeitsgründen vielleicht eher auf DirectX ( Z.B. Andorra2D) oder OpenGL setzen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:37
Es wird ja nichts Großes... Mir ist nur so eine Art Spiel in den Sinn gekommen und da hatte ich mal Lust das zu programmieren... Mit Andorra habe ich mich schon etwas befasst, werde es auch für spätere Spielideen nutzen =)
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Noedel
(Gast)

n/a Beiträge
 
#6

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 22:54
wenn der Hintergrund einfarbig ist, sollte es reichen, die Farbe des Pixels abzufragen, auf das man das Figürchen setzen will. (canvas.Pixels)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Spezielle Frage zu TCanvas und TShape

  Alt 9. Jan 2009, 23:13
Mal eine Überlegung für den einfachsten Fall (2 Rechtecke):
eine Kollision liegt dann vor, wenn
- eine Ecke des Quellrechtecks (bewegliches Objekt) innerhalb des Zielrechtecks (Hindernis) liegt oder
- eine Kante des Quellrechtecks das Zielrechteck schneidet
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Spezielle Frage zu TCanvas und TShape

  Alt 11. Jan 2009, 18:29
Ich hab versucht das mal so jetzt zu lösen, jedoch passiert etwas das nicht passieren soll....^^

Delphi-Quellcode:
  if oben then //oben ist true wenn vk_up gedrückt wird...
    begin
      if ((sPlayer.Top-5 <> iSpielfeld.Top) or (iSpielfeld.Canvas.Pixels[sPlayer.Left,sPlayer.Top-5]<>clBlue)) then
        sPlayer.Top := sPlayer.Top-1; //sPlayer :TShape
    end;
wenn ich den teil nach "or" weglasse, bleibt meine figur immerhin im feld... sobald ich den Teil nach "or" hinzufüge, kann meine figur aus dem Image hinausgehen O.o... Der Teil nach dem OR soll sein, das wenn ich in meinem hier noch am programmierenden editor hinderhisse hinzufügen will, dass die figur auch da stehen bleibt... jedoch funktioniert das leider so nicht..
jemand eine Idee?
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Spezielle Frage zu TCanvas und TShape

  Alt 11. Jan 2009, 18:32
Müsste das nicht ein and statt einem or sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#10

Re: Spezielle Frage zu TCanvas und TShape

  Alt 11. Jan 2009, 18:34
mit dem and hab ich es schon versucht, so bleibt die figur zwar in dem image, aber wenn ich etwas in clBlue färbe bleibt die figur trotzdem nicht stehen
Marcel
マルセル
www.youtube.com/beethoven1990
  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 18:14 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