Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - TTimer und Shape!!!


strossus - Di 13.01.04 22:07
Titel: TTimer und Shape!!!
Hallo!
Erstmal möchte ich sagen, dass ich neu bin!!! :D

Mein Problem ist folgendes: Seit einiger Zeit arbeiten wir in der Schule mit Delphi 4. Leider habe ich keine Ahnung davon und ich bitte euch mir bei einer Aufgabe zu helfen. Wir haben den Befehl TTimer neu in den unterricht eingeführt und nun habe ich folgende Aufgabe:

"Ein Shape namens Shape1 soll von ganz links bis 6oo nach rechts laufen, dann wieder nach links und so weiter."

Ich muss zugeben, dass ich mit dieser Aufgabe überfordert bin :cry: und deshalb bräuchte ich Hilfe von erfahrenen wie euch. Es wäre nett wenn ihr mir einen Lösungsvorschlag unterbreiten könntet.

Danke schonmal im Voraus
Gruß Xerox

Moderiert von user profile iconPeter Lustig: Topic Verschoben


bug0815 - Di 13.01.04 22:36

Hallo,

ich will Dir hier ja nicht gleich Deine Hausaufgaben machen.

TTimer löst alle in Interval festgelegten Millisekunden das Ereignis OnTimer aus. In diesem Ereignis kannst Du dann...

- den Wert eine Variable manipulieren (Inc oder Dec)
- diese Variable zur Positionierung des Shapes verwenden
- die Position des Shapes verändern

Das sollte Dir für's Erste helfen!!


strossus - Di 13.01.04 22:41

Hallo!

@ bug: Das mit dem Interval weiß ich auch aber ich weiß nicht wie ich die shapefigur richtig positioniere.

Das muuss irgendwas mit "moveto" und "lineto" sein. Dann muss man noch die Koordinaten angeben. Ich habe aber leider keine Ahnung wie.

Bitte helft mir!
Ich shcreibe am Freitag ne Klausur über dieses thema und ich will das endlich verstehen. :evil:

Gruß Xerox


Seniman - Di 13.01.04 22:48

Hallo Strossus,

die Prozeduren "moveto" und "lineto" braucht man nicht, wenn man Shapes verwendet. "moveto" und "lineto" sind dafür da, um Linien auf die Form oder ein Bild oder sonstetwas zu zeichen, aber das brauchst du ja nicht.
Probier mal folgendes:
deklariere eine globale Variable vom Typ boolean

Delphi-Quelltext
1:
var rechts: boolean;                    


In die Prozedur vom Timer setzt du folgendes:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if rechts then
  Shape1.Left:=Shape1.Left+1
else
  Shape1.Left:=Shape1.Left-1;

if Shape1.Left=0 then rechts:=true;
if Shape1.Left=600 then rechts:=false;


Der Timer überprüft, ob er das Shape nach rechts oder links bewegen soll und tut das dann. Danach überprüft er noch ob das Shape am Rand ist, wenn ja, dann dreht er die Bewegungsrichtung um.


strossus - Di 13.01.04 23:11

Hallo!

@Seniman: Danke für die Hilfe. Ich hoffe, dass ich euch mal helfen kann!!!

Bleib auf jeden Fall hier in diesem Forum!
Schnelle hilfe. So etwas sieht man gerne. :D
Danke

Gruß Xerox