Autor |
Beitrag |
Delphi-Zone
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 20:36
So,
Wie kriege ich es hin das wenn ein images fällt, nicht über mein bildschirm rand fällt, und nicht mehr zu sehen ist.
Also das ein anderes images es aufhält.
Danke im Vorraus!
gruß tom
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 24.09.10 20:43
Wie meinst du das?
_________________ Markus Kinzler.
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 20:48
Also...
Ich hab ein image, das ist ein mensch.
und wenn du taste oben ückst, denn springt er hoch.
und denn lass ich ihn mit dem TTimer wieder runterfallen,
aber er stoppt nicht. er fällt bis unter den bildschirmrand, obwohl er er auf dem boden stoppen soll.
Wie verhinder ich das?
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 24.09.10 20:50
Im Timer die Position mit der des Bodens abgleichen
_________________ Markus Kinzler.
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 20:56
Wie genau mach ich das?
Ich bin relativ neu beim programmieren.
Wäre cool wenn ihr mir das genauer erklärt.
Gruß tom!
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 24.09.10 20:58
Na dein Image hat ja eine Postion (Left = Linker Rand; Top = Oberer Rand).
Du musst also überprüfen ob der untere Rand tiefer als der obere Rand des Bodens ist (Unter Rand = oberer Rand + Höhe)
_________________ Markus Kinzler.
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 21:06
Sry, irgendwie versteh ich das nicht, mit der höhe und so ja, ist ja left und top und -1 und +1 und so.
Aber wie man das andere macht.
Am besten wären befehle.
danke
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 24.09.10 21:13
Die Figur soll ja stoppen, wenn die Füpsse den Boden berühren und nicht der Kopf. Deshalb musdst du zu Top die Höhe hinzuzählen um den unteren Rand des Images zu ermitteln.
Und zu den Befehlen: Ist ja ein einfacher Vergleich
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| if <Boden>.Top > <Figur>.Top + <Figur>.Height then begin <Figur>.Top := <Figur>.Top + <DeltaY>; ... end else <Figur>.Top := <Boden>.Top - <Figur>.Height; ... end; |
_________________ Markus Kinzler.
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 21:32
So, ich hab jetzt das geschrieben und es geht immer noch nicht...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit feld1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg;
type TForm1 = class(TForm) Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Timer1: TTimer; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm} procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT: begin Image7.Left := Image7.Left - 5; image8.left := image7.Left - 5; image7.Visible := false; image8.Visible := true; Key := 0; end; VK_RIGHT: begin Image7.Left := Image7.Left + 5; image8.left := image7.Left + 5; image7.Visible := true; image8.Visible := false; Key := 0; end; VK_UP: begin Image7.Top := image7.Top - 50; Image8.Top := image8.Top - 50; end; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Image7.Top := image7.Top + 10; Image8.Top := image8.Top + 10; if image2.Top > image8.Top + image8.Height then begin image8.Top := image8.Top + 520Y; ... end else image8.Top := image2.Top - image9.Height; ... end; end;
end. |
Moderiert von Martok: Delphi-Tags gesetzt
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 21:51
oh man  ich krieg das einfach nicht hin
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Fr 24.09.10 21:55
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Timer1Timer(Sender: TObject); begin if image2.Top > image8.Top + image8.Height then begin image8.Top := image8.Top + 10; end else begin image8.Top := image2.Top - image8.Height; end; end; |
_________________ Markus Kinzler.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 24.09.10 21:56
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Fr 24.09.10 23:37
Das ist jetzt schon der 3. Thread wo ich sehe das es dir massiv an Grundlagen mangelt. Da noch keiner dir es empfohlen hat, hol ich das hier mal nach: Bitte lern dir Grundlagen. Dazu gibt es das Delphi-Wikibook und Christian's Crashkurs.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Delphi-Zone 
      
Beiträge: 45
Win 7
Delphi 7.0 Prof
|
Verfasst: Fr 24.09.10 23:55
ja, ich werde mir das nochmal durch lesen.
|
|