[program]Tutorial Pascal - Lectia 4 - Titlu cu efect random

[program]Tutorial Pascal - Lectia 4 - Titlu cu efect random

Postby DarkByte » 19 Jan 2010, 09:29

Program exemplu


Lectia 4 (din tutorialele de Pascal)


Acesta este un exemplu de program (mic) care arata o parte din potentialul primelor patru tutoriale de Pascal.

Creat si testat doar pe Borland Pascal 7.0, ati fost avertizati ;))

Aici e codul:
  1. Program Text_miscator;
  2. uses crt;
  3. var N, i, start, dif1, dif2: integer;
  4.     s: String;
  5.     linii, coloane: array[1 .. 80] of byte;
  6.     SuntAranjate: Boolean;
  7. begin
  8.   ClrScr;
  9.   S := 'BitCell.info - IT forum - programare si algoritmica, hardware si altele';
  10.   N := Length(S); {Length returneaza lungimea sirului de caractere}
  11.  
  12.   Randomize; {initializeaza variabila interna RandSeed cu o valoare luata din ora sistemului}
  13.   {aceasta variabila este variabila de la care porneste generatorul de numere aleatoare}
  14.  
  15.   for i := 1 to n do
  16.     begin
  17.       linii[i] := Random(49) + 1;   {pozitii random, dar fara ultima linie / coloana}
  18.       coloane[i] := Random(79) + 1;
  19.       gotoxy(coloane[i], linii[i]);
  20.       write(s[i]);
  21.     end;
  22.  
  23.   start := 40 - (N div 2);
  24.  
  25.   repeat
  26.     SuntAranjate := True;
  27.     for i := 1 to N do
  28.       begin
  29.         if (linii[i] <> 12) or (coloane[i] <> start + i - 1) then
  30.           begin
  31.             {calculam noua pozitie}
  32.             dif1 := abs(coloane[i] - (start + i - 1)); {abs = functia modul din matematica}
  33.             dif2 := abs(linii[i] - 12);
  34.  
  35.             if ((dif1 = 0) and (dif2 = 0)) or (s[i] = ' ')
  36.               then Continue {continuam bucla FOR, cu urmatoarea valoare a lui i}
  37.               else
  38.                 begin
  39.                   GotoXY(coloane[i], linii[i]); {stergem litera din vechea pozitie}
  40.                   TextColor(Black);
  41.                   Write(s[i]);
  42.                 end;
  43.             SuntAranjate := False;
  44.  
  45.             if dif2 > dif1
  46.               then
  47.                 begin
  48.                   if linii[i] > 12
  49.                     then Dec(linii[i])
  50.                     else Inc(linii[i]);
  51.                 end
  52.               else
  53.                 begin
  54.                   if coloane[i] > (start + i - 1)
  55.                     then Dec(coloane[i])
  56.                     else Inc(coloane[i]);
  57.                 end;
  58.  
  59.             {reafisam litera in noua pozitie}
  60.             GotoXY(coloane[i], linii[i]);
  61.             TextColor(LightGray);
  62.             Write(s[i]);
  63.  
  64.           end;
  65.       end;
  66.     Delay(50); {acest interval de asteptare poate fi modificat pentru viteza}
  67.   until SuntAranjate;
  68.  
  69.   GotoXY(start, 12); {pe ecran, in modul text, sunt 80 de coloane}
  70.   Write(S); {asa ca afisam textul de la pozitia 40 minus jumatate din text}
  71.   ReadLn;
  72. end.


Niste explicatii:
  • Randomize - pregateste generatorul de numere random (aleatoare)
  • Random - genereaza un numar random, intre 0 si N - 1.
  • abs - returneaza valoarea absoluta a unui numar. abs(5) = abs(-5) = 5
  • Inc - creste valoarea variabilei folosite ca parametru cu 1 sau o valoare specificata.
  • Dec - scade valoarea variabilei folosite ca parametru cu 1 sau o valoare specificata.
  • Delay - opreste (pauzeaza) executia programului pentru un numar specificat de milisecunde.

Screenshot-uri din timpul rularii programului:
text animat

pascal text


Surse si executabil -

Sper sa va placa :)

Daca aveti intrebari sau nelamuriri, puteti intreba aici.

7 points / 1 votes
Image

If you can't learn to do something well, learn to enjoy doing it poorly !
User avatar
DarkByte
Admin
 
Joined: 29 Dec 2009
Points: 71

Return to Tutoriale Pascal

Who is online

Users browsing this forum: No registered users and 0 guests