Borland Pascal

Marcel^

Commodore
Dabei seit
März 2006
Beiträge
5.073
Abend,
ich weiß das ComputerBase kein Hausaufgabenboard ist, aber da ich zur Zeit Borland Pascal lerne (in der Schule) wollte ich zum üben alle Übungen wiederholen. Leider harkt es bei einer Erweiterung der ersten Übung schon...
Wir sollen einen "Lauftext" erstellen, der erst links startet und dann nach rechts läuft (Grundprogramm). Dann haben wir "Erweiterungsaufgaben" dazugestelltbekommen.

In der momentanen Erweiterung geht es darum dass das Wort erst von links nach rechts, dann eine Zeile tiefer und von rechts nach links läuft.

Bei mir harkt es an der Stelle, wo er bei (x=75)stehen bleiben soll, dann eine Zeile tiefer gehen soll und dann wieder nach links.

Mein Programm ist bisher so aufgebaut: (ohne diese Erweiterung und zu der Schleifenprozedur ist zu sagen das es die vorige Erweiterung war).

PROGRAM lauftext;

USES wincrt;

VAR zaehler:longint;
x,y:BYTE;

PROCEDURE pause;
BEGIN
WHILE zaehler < 10000000 DO inc(zaehler);
END;

BEGIN
clrscr;
x:=1; y:=12;
REPEAT
zaehler:=1;
clrscr;
gotoxy(x,y);
write('Hallo');
PAUSE;
inc(x);
UNTIL (x=75);
END.


Meine Idee war, folgende Zeile:

IF (x=75) AND (y=12) THEN inc(y,1);

hinter "UNTIL (x=75);" einzubauen, was aber nicht funktionierte... (Es ging dabei erstmal nur darum, das der Cursor überhaupt zu (y=13) springt, dass er dann zurückläuft, war erstmal nicht das Problem.

Vielen Dank für jede Hilfe :)
 

pfORchT

Ensign
Dabei seit
Juli 2005
Beiträge
213
Code:
PROGRAM Laufschrift;

Uses Crt;

Const xStart = 4;						{Konstanten definieren}
Const xEnd = 20;
Const yStart = 4;
Const yEnd = 20;
Const WaitTime = 50;

VAR x, y, a : INTEGER;
VAR txt : STRING;

BEGIN
     x := xStart;						{initialisierung}
     y := yStart;
     a := 1;
     txt := 'Lauftext';

     ClrScr;
     REPEAT
           REPEAT
                 GotoXY(x - a, y);		{alten Schriftzug in scharz überschreiben, geht schneller als ClrScr}
                 TextColor(Black);
                 Write(txt);
				 
                 GotoXY(x, y);			{neuen Schriftzug in weiß zeichnen}
                 TextColor(White);
                 Write(txt);
				 
                 x := x + a;
                 Delay(WaitTime);		{wartefunktion von TP}
           UNTIL (x = xEnd) OR (x = xStart);
           GoToXY(x - a, y);			{letzten Schriftzug in der aktuellen zeile überschreiben}
           TextColor(Black);
           Write(txt);
		   
           a := a * -1;					{Laufrichtung umkehren}
           y := y + 1;					{nächste Zeile}
     UNTIL y = yEnd;

END.
Hoffe dass die Kommentare ausreichen.
 

Marcel^

Commodore
Ersteller dieses Themas
Dabei seit
März 2006
Beiträge
5.073
Danke aber es sollte eigentlich auf die obige Version aufbauen, sonst bringt es nichts.
 

pfORchT

Ensign
Dabei seit
Juli 2005
Beiträge
213
Naja. du kannst dir daraus ein eigenes zusammenpuzzeln. Ist ja denke ich ausreichend dokumentiert.

Wichtig ist, das dort zwei ineinander verschachtelte Schleifen sind.
 
Top