Pascal-spadające gwiazdki


(Kosior6) #1

Witam. Mam napisać program w pascalu, który będzie zrzucał gwiazki, tworząc z nich stos(stos ma zawierać liczbę gwiazdek podaną przez użytkownika). Ma być widać tor zjechania każdej gwiazdki, aż do momentu ustania na swoim miejscu.

Napisałem program, ale pojawiają mi się od razu wszystkie gwiazdki i nie wiem jak zrobić efekt spadania.

mam tyle:

program nazwa;

uses crt;

var i,n :byte;

begin

     writeln('podaj mi liczbe gwiazdek');

     readln(n);

     for i:=1 to (n) do

     begin

     gotoxy(50,20+n);




writeln('x');


     end;

     end.

([alex]) #2

Ponieważ od razu ich umieszczasz w odpowiednim miejscu.

Masz najpierw wypisać jedną gwiazdkę w pozycji 50,1 potem odczekać trochę np Sleep(100); potem w pozycji 50,1 narysować spację a gwiazdkę narysować w pozycji 50,2 i tak dalej aż do 50,25- i.

Potem następna gwiazdka też zaczyna się od 50,1 i też się kończy na 50,25- i z tym że i będzie już większe.


(Kosior6) #3

Może uzupełnienie w kodzie, bo nie bardzo rozumiem ;/


(Jakub625) #4

Hmmm... ja to bym rozwiązał w następujący sposób:

Uses Crt;


Var

  Licznik,Gwiazdki,Grunt,Poziom,Pion:Byte;


Begin

  Clrscr;

  Write('Podaj liczbe gwiazdek: ');

  ReadLN(Gwiazdki);


  // Opadanie gwiazdek...

  Grunt := 24; // Ustawienie poziomu do ktorego maja zjechac gwiazdki...

  Licznik := 0; // Licznik zlicza juz opadniete gwiazdki...

  Repeat

    Licznik := Licznik + 1; // Przypisanie do licznika liczby gwiazdek za kazdym zapetleniem nastepna...

    GotoXY(40,3); // Ustawienie na poczatek spadania...

    Write('*'); // Rysowanie gwiazdki...

    Poziom := 40; // Przypisanie wartosci poziomu...

    Pion := 3; // Przypisanie wartosci pionu...

    Repeat // Petla "animacji" gwiazdki...

      Gotoxy(Poziom,Pion); // Miejsce ostatniej gwiazdki...

      Write(' '); // wymazanie ostatniej gwiazdki...

      Pion := Pion + 1; // Przypisanie nowej wysokosci gwiazdki...

      Gotoxy(Poziom,Pion); // Przejscie na nowe miejsce...

      Write('*'); // Rysowanie gwiazdki...

      Delay(100); // Opoznienie 100 ms = 0,1 sekundy...

    Until Pion = Grunt; // Wyjscie z petli jezeli gwiazdka osiagnie grunt lub stanie na innej gwiazdce...

    Grunt := Grunt - 1; // Odjecie jednej wartosci powoduje ze gwizdki nie wchodza na siebie...

  Until Licznik = Gwiazdki; // Porownanie czy liczba gwizdek zgadza sie z liczba podana przez urzytkownika...

  ReadKey;

End.

Doczytałem się u Ciebie że ma tworzyć stos ma on być w postaci pionowej linii czy piramidy bo też tak da się zrobić, daj znać... ;]

PS. Ciekawy problem do "rozkminienia" na kilka minut... ;] Pozdrawiam.