![]() |
AW: Figur läuft einfach durch die Mauer
|
AW: Figur läuft einfach durch die Mauer
Punkt 1: Rapidshare ist Rapidshare und wenn du keinen Premium-Account hast, ist der Download nach 45 Tagen weg. Also besser hier im Forum hochladen.
Punkt 2: Dein Code compiliert gar nicht. Die Figur KANN also gar nicht aus irgendwelchem Rahmen laufen. Es geht hier um Zeile 75 und da muss eine Begin-End-Struktur eingebaut werden. Punkt 3: Wo ist da bitte ein Kommentar, was der wo macht? - Den Durchblick hab ich nicht. Punkt 4: Einen Rahmen würde ich durch ein Panel setzen (und dann die Rahmen ausblenden mit BevelInner und BevelOuter). Punkt 5: Die Punkte sind doch recht lustig, weil ich selbst ohne Aktion schon in ein paar Sekunden 13 habe. Punkt 6: Den Fehler wollte ich für dich eigentlich nicht finden und verbessern, er war aber zu offensichtlich:
Delphi-Quellcode:
Ich hatte schon angedeutet, dass eine Variablenverwechslung vorliegen könnte. Dabei lag ich aber falsch. Es sind 4.
procedure TForm1.Timer_SternTimer(Sender: TObject);
begin If (richtung=1) and (img_Stern.Top + img_Stern.Height + 200 > form1.Height) then Richtungstern :=2; So und dass du jetzt noch was lernst: Mit deinen Richtungsangaben kann man NULL anfangen. Du kannst allerdings ein ENUM machen und dann die Angaben etwas benennen, wie z.B. bew_LINKSHOCH, bew_LINKSRUNTER, bew_RECHTSHOCH und bew_RECHTSRUNTER. Damit hättest du auch das Problem abgedeckt. Ansonsten sollte alles funktionieren. Bernhard PS: Das soll ein Spiel werden? - Laut c't ist es dabei sinnvoller, ![]() |
AW: Figur läuft einfach durch die Mauer
das mit den Punkten habe ich behoben.
Allerdings verstehe ich meinen Fehler immer noch nicht :(
Delphi-Quellcode:
Kann mir bitte noch einen Denkanstoß geben?
If (richtung=1) and (img_Stern.Top + img_Stern.Height + 50 > form1.Height) then Richtungstern :=2;
If (richtung=2) and (img_Stern.Left + img_Stern.Width + 50 > form1.Width) then Richtungstern :=3; If (richtung=3) and (img_Stern.Top < 50) then Richtungstern := 4; If (richtung=4) and (img_Stern.Left < 50) then Richtungstern :=1; If (richtung=2) and (img_Stern.Top < 50) then Richtungstern :=1; If (richtung=1) and (img_Stern.Left + img_Stern.Width + 50 > form1.Width) then Richtungstern :=4; If (richtung=4) and (img_Stern.Top + img_Stern.Height + 50 > form1.Height) then Richtungstern := 3; If (richtung=3) and (img_Stern.Left < 50) then Richtungstern :=2; |
AW: Figur läuft einfach durch die Mauer
Jo, benutzte erst eine Richtung und lass Dir die Werte anzeigen die Du als vergleich benutzten tust! So erkennst Du ganz schnell wo der Fehler liegt.
Gruss aldold |
AW: Figur läuft einfach durch die Mauer
Dein Problem ist, dass du den Stern in abhängigkeit von dem anderen Typ die Richtung wechseln lässt. So kann der Stern den Rahmen ohne Probleme verlassen, da es deinem Programm ja gar nicht auffällt, dass was falsch ist. Also: Stern mit Sternrichtung und Böser-Typ mit Böser-Typ-Richtung.
Bernhard |
AW: Figur läuft einfach durch die Mauer
Vielen Vielen Dank
es klappt jetzt eiwandfrei :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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-2025 by Thomas Breitkreuz