Forum Gry Hobby Sprzęt Rozmawiamy Archiwum Regulamin

Forum: Turbo Pascal - Pewien program prośba o pomoc

09.11.2013 19:12
gtx295xD
😊
1
gtx295xD
81
Szef Syntetycznej Mafii

Turbo Pascal - Pewien program prośba o pomoc

Witajcie. Przejdę do sedna :). Mam taki programik w turbo pascalu który powoduje że na ekranie widzi ładujący się pasek. A chce żeby u dołu pojawił się takim sam pasek i gdy ten pierwszy przejdzie cały to tego drugiego pasla np. 1/8, później jak ten pierwszy pasek drugi raz przejdzie cały to tego drugiego 2/8 i tak do końca. Próbowałem z dwoma zmiennymi ale jakoś mi nie wychodziło, proszę o pomoc.

Kod programu:

Uses Crt;
Var I: Integer;
BEGIN
ClrScr;
GoToXY(2, 12);
For I:=1 To 76 Do Write(#176);
GoToXY(2, 12);
For I:=1 To 76 Do
Begin
Write(#219);
Delay(200);
End;
ReadLn;
END.

Link do plika .PAS
http://www70.zippyshare.com/v/89846601/file.html

Proszę o pomoc :).

Z góry dziękuję.

09.11.2013 19:27
2
odpowiedz
zanonimizowany935281
0
Konsul

musisz mieć dwie zmienne by pamiętać pozycję pierwszego i drugiego paska. Pętlę zagnieżdżasz w pętli.
for i:= 1 to 8 do
/kod/ - rysuje pierwszy pasek, ten 8 częściowy)
for j:=1 to 76 do
/kod/ - rysuje ten drugi bardziej szczegółowy pasek
next j
next i

09.11.2013 20:46
gtx295xD
3
odpowiedz
gtx295xD
81
Szef Syntetycznej Mafii

Próbuję ale jakoś mi nie wychodzi. A mógłbyś to napisać a ja bym sobie wklepał? :)

09.11.2013 22:18
4
odpowiedz
zanonimizowany626335
17
Generał

Kurde już nie pamiętam Pascala, bo słabo go używałem i dawno temu. Mógłbym ci taki kod napisać w C.

09.11.2013 23:09
5
odpowiedz
Likfidator
120
Senator

W swoim kodzie wykonujesz dwie pętle for jedna po drugiej, a program robi coś takiego:
- wyczyść ekran,
- ustaw kursor w (2,12)
- napisz 76 razy znak o kodzie 176
- ustaw kursor w (2,12)
- napisz 76 razy znak o kodzie 176, lecz po każdym znaku zaczekaj 200 ms.
- wczytaj linię.

Działanie programu wygląda tak, że w drugiej linii widzisz całą linię znaków #176 i czekasz 15,2 sekundy zanim program zacznie przyjmować dane z klawiatury (readln).

Żeby to działało tak jak oczekujesz potrzebujesz dwóch pętli for, jedna zagnieżdżona w drugiej i dwóch zmiennych iteracyjnych, dodatkowo musisz wyczyścić znaki w miejscu drugiego paska:

Uses crt;
var i,j:integer;
begin
Clrscr;
For i:=2 to 77 do
begin
gotoXY(i,12);
write(#176);
gotoXY(2,13);
for j:=1 to 76 do write(#32);
gotoXY(2,13);
for j:=2 to 76 do
begin
write(#176);
delay(20);
end;
end;
readln;
end.

EDIT: tak ładnie powstawiałem wcięcia, a skrypt forum je usunął.

10.11.2013 14:23
gtx295xD
😊
6
odpowiedz
gtx295xD
81
Szef Syntetycznej Mafii

Działa! :) Dziękuję ślicznie Wszystkim a zwłaszcza Likfidator'owi za okazaną pomoc. Jeszcze raz wieeelkie dzięki.

Forum: Turbo Pascal - Pewien program prośba o pomoc