AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "Kollidieren" von drei Objekten verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

"Kollidieren" von drei Objekten verhindern

Ein Thema von Luis · begonnen am 26. Dez 2018 · letzter Beitrag vom 2. Jan 2019
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: "Kollidieren" von drei Objekten verhindern

  Alt 27. Dez 2018, 17:34
Hallo,
Augenkrebs

Rücke bitte richtig ein und benutze (hier) immer begin end
Ab Kiste k4 wirst Du mächtig Probleme bekommen,
wenn Du nicht wie vorgeschlagen alle Kisten in eine Liste packst.

Du musst dann nur eine Prüfung auf 2 Kisten machen,
benutzt aber die Schleife.

Ausserdem würde ich mit einer virtuellen Kiste arbeiten,
die die Ziel-Position der bewegten Kiste enthält, als ob es keine anderen Kisten gibt.

k_Ziel:= k1; // Daten von Kiste 1 holen
K_Ziel.Top:= K_Ziel.Top-50;

Jetzt k_Ziel mit kx (k2-k10) prüfen, ob es eine Überlappung gibt.

Bei der Überlappung würde ich nicht auf Überlappung, sondern auf Nicht-Überlappung testen.
Das ist einfacher, Bsp:

Frage: Liegt ky von der Höhe überlappend auf kx?
ky.Top<kx.Top+kx.Height

Und das gleiche für links, rechts, oben unten.
Am besten mal auf Quadrat-Papier aufmalen oder 2 Kisten ausschneiden und übereinanderlegen.
Heiko

Geändert von hoika (27. Dez 2018 um 17:39 Uhr)
  Mit Zitat antworten Zitat
Luis

Registriert seit: 26. Dez 2018
7 Beiträge
 
#2

AW: "Kollidieren" von drei Objekten verhindern

  Alt 27. Dez 2018, 21:54
Danke erstmal für die Antwort!
Was mich jetzt etwas verwirrt, ist die Tatsache, dass sich bei deinem Vorschlag doch wenig am Aufbau ändert (wenn ich jetzt nichts falsch verstanden habe, wovon ich ausgehe).
Somit sollte sich doch auch wenig an meinem Problem, dass die Kisten nun gern zwei Felder (also 100 statt den gewünschten 50 Pixeln) springen, ändern, oder?

Ich würde den Lösungsansatz mit besagter Liste ja gern nachvollziehen können, nur fällt mir das schwer und Google hat da auch nicht den besten Job gemacht. :/
Bitte steinigt mich nicht für dieses wahrscheinlich simple Problem, bin halt noch am Anfang.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: "Kollidieren" von drei Objekten verhindern

  Alt 27. Dez 2018, 22:41
Also Deinen Lösungsansatz habe ich jetzt nicht im Detail nachvollzogen. Dafür ist er etwas unübersichtlich.

Aber das ist letztlich kein Problem.
Dein Code erledigt ja offenbar alles, was er soll, bis auf einen Sprung.

Dann setze Dir einen Breakpoint und verfolge den Programmablauf schrittweise incl. Kontrolle der Variableninhalte.
Dann wirst Du den Grund für den fehlerhaften Sprung schon finden.

Hilfreich ist dafür, jede Verzweigung (nach "then", "else" und "do" in begin...end zu setzen.
Dadurch lässt sich der Code besser debuggen.

Das mit den Schleifen lernst Du sicher auch noch später.

Hast Du selbst Interesse am programmieren oder willst Du eher nur Deine Aufgabe erledigen?
Bei einem ernsthaften Interesse musst Du Dich sicher auf eine gewisse Lernkurve einstellen aber wenn man dran bleibt macht man dann schon bald Fortschritte. Das hat jeder hier durchgemacht.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: "Kollidieren" von drei Objekten verhindern

  Alt 28. Dez 2018, 05:24
Hallo,
F5-Breakpoint = Haltepunkt
F7-einen Programmschritt weiter, steht der Cursor auf einer Prozedur, gehe in diese rein
F8-einen Programmschritt weiter, steht der Cursor auf einer Prozedur, überspringe diese

Du musst als erstes herausfinden, wann die Kiste zu weit läuft.
Das ist das schwierigste.

Danach geht es mit F5 und F8 los.

Kleiner Tipp: Zu schnell getippt?
Heiko

Geändert von hoika (28. Dez 2018 um 06:54 Uhr)
  Mit Zitat antworten Zitat
Luis

Registriert seit: 26. Dez 2018
7 Beiträge
 
#5

AW: "Kollidieren" von drei Objekten verhindern

  Alt 2. Jan 2019, 13:20
Danke für die Antworten! Das werde ich machen, sobald ich wieder in der Heimat bin, auf jeden Fall Dankeschön!
@stahli ich besitze generell Interesse am Programmieren, werde auch dieses Jahr (hoffentlich) ins Informatik Studium einsteigen, dass mein Wissen dafür natürlich noch ziemlich gering ist, ist mir bewusst.. Nur ich muss sagen, dass es bezüglich Delphi online ziemlich schwierig ist irgendwas zu finden.
Liebe Grüße und ein Frohes Neues
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: "Kollidieren" von drei Objekten verhindern

  Alt 2. Jan 2019, 14:33
Dir auch ein erfolgreiches neues Jahr - incl. Studienstart

Ob an Unis Delphi eingesetzt wird weiß ich nicht. Aber eigentlich ist die Sprache und IDE relativ egal.
Im Grunde ist das alles ähnlich. Wenn Du Erfahrungen in Delphi sammelst ist es auf keinen Fall umsonst.

Zu meiner Zeit gab es noch gar kein "online". Da habe ich (und viele andere hier) fette Bücher gelesen und versucht, das Ganze dann irgendwie nachzuvollziehen...

Also viel Spaß dann mit Delphi und/oder anderen Spachen!
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 07:24 Uhr.
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 by Thomas Breitkreuz