Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Figur läuft einfach durch die Mauer (https://www.delphipraxis.net/160154-figur-laeuft-einfach-durch-die-mauer.html)

Coxy 1. Mai 2011 14:47

AW: Figur läuft einfach durch die Mauer
 
ich habs mal hochgeladen:
https://rapidshare.com/files/4600775...hi_Project.rar

gruß

rollstuhlfahrer 1. Mai 2011 19:11

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:
procedure TForm1.Timer_SternTimer(Sender: TObject);
begin
If (richtung=1) and (img_Stern.Top + img_Stern.Height + 200 > form1.Height) then Richtungstern :=2;
Ich hatte schon angedeutet, dass eine Variablenverwechslung vorliegen könnte. Dabei lag ich aber falsch. Es sind 4.

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, MSDN-Library durchsuchenGetAsyncKeyState() zu verwenden.

Coxy 4. Mai 2011 16:26

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:
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;
Kann mir bitte noch einen Denkanstoß geben?

alfold 4. Mai 2011 16:42

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

rollstuhlfahrer 4. Mai 2011 16:45

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

Coxy 4. Mai 2011 17:41

AW: Figur läuft einfach durch die Mauer
 
Vielen Vielen Dank
es klappt jetzt eiwandfrei :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.
Seite 2 von 2     12   

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