| Autor |
Beitrag |
zoodi
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 17:25
Hallo!
Im Moment versuche ich ein kleines Spiel mit Delphi zu programmieren. Die Aufgabe ist in unserem Schulbuch für Delphi. Ich hab die Aufgabe unten mal abgetippt. Die Teilaufgaben a) und b) bekomme ich hin, bei c) weiß ich irgendwie nicht, wie ich das hinbekommen soll. Kann mir vielleicht jemand helfen?
Hier die Aufgabe:
Programm Auto 1
Ein Auto soll von links nach rechts durch ds Fenster fahren, indem die Lage des Fahrzeuges innerhalb des Programmfensters verändert wird. Bearbeiten Sie dazu nacheinander die folgenden Teilaufgaben:
a) Erstellen Sie im Formular ein Bildfeld mit dem Symbol Autos.ico aus dem Icon-Verzeichnis sowie eine Befehlsschaltfläche Weiter.
b) Durch das Klick-Ereignis der Schaltfläche sollen nun die Eigenschaften Top und Left des Bildelemntes so verändert werden, dass sich das Bildelement mit den beiden Autos jeweils ein Stück nach rechts im Fenster bewegt.
c) Wenn das Auto das Formular rechts verlassen hat, soll links ein neues Auto erscheinen.
Lg zoodi
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 19:09
Wie bekomme ich die Aufgabe c) hin? Kann mir keiner Helfen? Wäre echt dringend! Bitte!
lg zoodi
|
|
starsurfer
      
Beiträge: 334
Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
|
Verfasst: So 30.10.05 19:20
ich hab mir eine image komponente ausgewählt und die mit einer größe von 50*50 erzeugt, zuerst platziere ich die komponente bei x:-50, sie ist sozusagen ausserhalb des sichtbaren formular-feldes.
bei jedem klick auf den button wird der x wert erhöht. dieser wird dann dem bild zugewiesen, und da der wert größer wird bewegt sich das bild langsam nach rechts
ist der wert größer als die fensterbreite wird der wert von x wieder auf -50 gesetzt
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var Form1: TForm1; x:integer=-50; implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin inc(x);image1.left:=x;if x>form1.width then x:=-50; end; |
und nich vergessen "autoscroll" des formulars auf false stellen
_________________ GEIZ IST GEIL! - Ihr Sozialamt
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 20:05
dankeschön starsurver
Ich hab noch mal eine kleine Frage zu b) da hab ich jetzt stehen
procedure TTigger1.BtWeiterClick(Sender: TObject);
begin
ImTigger.Top := ImTigger.Top + 10;
ImTigger.Left := ImTigger.Left + 10
end;
(wie füg ich das als Code ein?)
das Bild soll sich ja nach rechts bewegen. Was muss ich dazu verändern?
Edit: Ich habs hinbekommen
lg ann
Zuletzt bearbeitet von zoodi am So 30.10.05 20:22, insgesamt 1-mal bearbeitet
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 30.10.05 20:16
Top brauchst Du nicht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Autoscroll:=False; DoubleBuffered:=True; Timer1.Interval:=50; ImTigger.Left:=ImTigger.Left+5; if ImTigger.Left>Form1.Width+ImTigger.Width then ImTigger.Left:=-ImTigger.Width; end; |
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 20:20
Hab jetzt grade versucht das Programm zu schreiben. Irgendwie mach ich bei c) immer noch was falsch...kann mir vielleicht jemand den Fehler sagen.
Sorry, dass ich so doofe Fragen schreib aber ich kenn mich noch nicht wirklich mit Delphi aus...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Tigger1: TTigger1; x:integer=-50; implementation
{$R *.dfm}
procedure TTigger1.BtWeiterClick(Sender: TObject); begin inc(x); ImTigger.left:= ImTigger.Left + 10; ImTigger.Top:= ImTigger.Top + 0; if x>Tigger1.width then x:=-50; end; |
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 20:27
oje....dankeschön Blackheart666
irgendwie versteh ichs trotzdem noch net so ganz
Blackheart666 hat folgendes geschrieben: |
Delphi-Quelltext 1:
| procedure TForm1.Timer1Timer(Sender: TObject); | |
Was meinst du denn mit Timer1Timer???
Was ist ein DoubleBuffered?
Was bringt dieser Timer?
lg ann 
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 30.10.05 20:30
Setz mal einen Timer auf die Form dann Doppelklick und in die Prozedur setz Du dann Meinen Code.
Probiers mal aus.
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: So 30.10.05 20:31
guck dir mal den crashkurs delphi an. einfach mal im forum nach dem link suchen. das ist wohl das angebrachtest.
thx.
ps: nen timer ist ne komponente der vcl, doublebuffered ist ne eigenschaft von verschiedenen komponenten wie z.b. der form.
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 21:03
Kann man die aufgabe auch mit "if then else" lösen?
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 30.10.05 21:10
Hab dir mal ein Beispiel drangehängt.
Einloggen, um Attachments anzusehen!
|
|
zoodi 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 30.10.05 21:12
Jetzt hab ichs verstanden, dankeschön!
|
|