Autor Beitrag
zoodi
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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++
BeitragVerfasst: 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

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  Form1: TForm1;
  x:integer=-50; //-50 enspricht der breite des bildes/icon
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
inc(x);//x eins hoch zählen-->nach rechts bewegen
image1.left:=x;//->bild x zuweisen und bewegen
if x>form1.width then x:=-50; // sollte x größer als formularbreite sein dann wieder auf -50 stellen
end;


und nich vergessen "autoscroll" des formulars auf false stellen

_________________
GEIZ IST GEIL! - Ihr Sozialamt
zoodi Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 30.10.05 20:16 
Top brauchst Du nicht.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Autoscroll:=False;
  DoubleBuffered:=True; {Damits nicht so flackert}
  Timer1.Interval:=50;
  ImTigger.Left:=ImTigger.Left+5; {Bewegt sich von Links nach rechts}
  if ImTigger.Left>Form1.Width+ImTigger.Width then
  ImTigger.Left:=-ImTigger.Width;
end;
zoodi Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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... :oops:


ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 30.10.05 20:27 
oje....dankeschön Blackheart666
irgendwie versteh ichs trotzdem noch net so ganz :oops:

user profile iconBlackheart666 hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
procedure TForm1.Timer1Timer(Sender: TObject);					


Was meinst du denn mit Timer1Timer???
Was ist ein DoubleBuffered?
Was bringt dieser Timer?

lg ann :oops:
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 30.10.05 21:03 
Kann man die aufgabe auch mit "if then else" lösen?
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 30.10.05 21:10 
Hab dir mal ein Beispiel drangehängt.
Einloggen, um Attachments anzusehen!
zoodi Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 30.10.05 21:12 
Jetzt hab ichs verstanden, dankeschön!