Autor Beitrag
Waldkauz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mi 03.06.09 01:25 
Ich suche jetzt schon ewig nach dem Fehler, kann ihn aber nicht finden.
Bei Kollision treten bei Image1,...,Image7 die erwünschten Parameter ein, bei Image8 aber nicht. Fehlermeldung wird keine angezeigt, aber irgendwo muss ein Fehler sein...

für dieses Image funktionierts z.B.:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
    if (PtInRect(FirstImgRect, SiebenImgRect.TopLeft) and (Image7.Visible)) 
    or (PtInRect(FirstImgRect, Point(SiebenImgRect.Right, SiebenImgRect.Top)) and  (Image7.Visible))  
    or (PtInRect(FirstImgRect, Point(SiebenImgRect.Left, SiebenImgRect.Bottom)) and (Image7.Visible)) 
    or (PtInRect(FirstImgRect, SiebenImgRect.BottomRight) and (Image7.Visible))
    then  begin
    Timer4.Enabled:=false;
    Timer1.Enabled:=false;
    Timer5.Enabled:=false;
    ShowMessage('Game Over!');
    Edit1.Text:='0';
    Button7.Click;
    end;


für dieses seltsamerweise nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
      if (PtInRect(FirstImgRect, AchtImgRect.TopLeft) and (Image8.Visible)) 
    or (PtInRect(FirstImgRect, Point(AchtImgRect.Right, AchtImgRect.Top)) and  (Image8.Visible))  
    or (PtInRect(FirstImgRect, Point(AchtImgRect.Left, AchtImgRect.Bottom)) and (Image8.Visible)) // bottom left
    or (PtInRect(FirstImgRect, AchtImgRect.BottomRight) and (Image8.Visible)) 
    then  begin
    Timer4.Enabled:=false;
    Timer1.Enabled:=false;
    Timer5.Enabled:=false;
    ShowMessage('Game Over!');
    Edit1.Text:='0';
    Button7.Click;
    end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 03.06.09 01:37 
Statt den Code tausendmal zu kopieren solltest du die Abfragen lieber in eine Funktion auslagern, der du die beiden Bilder zum Prüfen übergibst.

Was passieren kann ist auch das was in dem anderen Thread auch bereits erwähnt wurde: Dass nämlich ein kleineres Bild durch eine Wand wandert und dabei die vier getesteten Ecken außerhalb des kleineren Bildes bleiben.

Das musst du also auch noch prüfen. Notfalls indem du einfach umgekehrt prüfst, ob die Ecken des gerade als Rechteck betrachteten Bildes im anderen liegen.
Waldkauz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102



BeitragVerfasst: Mi 03.06.09 01:44 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Okay, ich verschiebs mal in die Funktion.
Hab inzwischen, als provisorische Lösung, das Image8 etwas kleiner gemacht, es funktioniert..