Skocz do zawartości

  •  
  • Mini kompendium
  • MimeTeX
  • Regulamin

Zdjęcie

Pascal Program z gwiazdką


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 zbychok14

zbychok14

    Wymierny

  • Użytkownik
  • 68 postów
1
Neutralny
  • Płeć:Mężczyzna

Napisano 12.03.2009 - 19:38

Napisz program w którym jest 10 gwiazdek i tworzą słupki i latają nierównomiernie(tak jak w winampie).
P.S Wiem jak zrobić z 2 gwiazdkami ale nie wiem jak zrobić z dziesięcioma prosze o pomoc
  • 0

Afroman

    Kombinator

  • Użytkownik
3
  • Płeć:Kobieta

Napisano 25.09.2011 - 17:55

#2 bziomek

bziomek

    Ziomalek... ;).

  • $Jr Admin
  • 984 postów
244
Pomocnik III
  • Płeć:Mężczyzna

Napisano 12.03.2009 - 20:18

Mógłbyś opisać to jakoś bardziej?
Nie używam winampa, a specjalnie nie będę instalował.

Pozdrawiam ;)
  • 0

#3 matma4u

matma4u

    Admin Wszechmocny :)

  • Administrator
  • Redaktor
  • 1224 postów
441
Instruktor II
  • Płeć:Mężczyzna

Napisano 12.03.2009 - 20:24

Albo zrób zrzut ekranu (z winampa) jak to wygląda.
  • 0

Regulamin

.

MimeTeX

.

Możesz dać innemu użytkownikowi pochwałę klikając na znak Dołączona grafika przy jego poście.


#4 zbychok14

zbychok14

    Wymierny

  • Użytkownik
  • 68 postów
1
Neutralny
  • Płeć:Mężczyzna

Napisano 13.03.2009 - 16:39

To jest program w którym są 2 słupki a trzeba 10 słupków
program winamp;
uses crt;
var i:integer;
repeat
for i:=1 random(10)do
begin
gotoxy(10,10-i);
textcolor(i);
writeln('*');
delay(75);
end;
for i:=1 random(10)do
begin
gotoxy(7,10-i);
textcolor(i);
writeln('*');
delay(75);
end;
until keypressed;
end.

  • 0

#5 bziomek

bziomek

    Ziomalek... ;).

  • $Jr Admin
  • 984 postów
244
Pomocnik III
  • Płeć:Mężczyzna

Napisano 13.03.2009 - 21:56

Hmm... Ja bym to trochę inaczej zrobił...
Ale jak to ma być w takiej formie, to:
Program Winamp;

Uses Crt;

Var
  i, j : Integer;

Begin
  ClrScr;
  Repeat
	For j:=1 To 10 Do
	  Begin
		 For i:=1 To Random(10) Do
			Begin
			   GotoXY(7+3*j,10-i);
			   TextColor(i);
			   WriteLn('*');
			   Delay(75);
			End;
	  End;
  Until KeyPressed;
End.

  • 0

#6 zbychok14

zbychok14

    Wymierny

  • Użytkownik
  • 68 postów
1
Neutralny
  • Płeć:Mężczyzna

Napisano 15.03.2009 - 17:20

no fajnie tylko gwiazdki mają też wracać do dołu i jeszcze jedno mozesz mi wytłumaczyć po co dwie zmienne i,j i dlaczego w gotoxy jest(7+3*j,10-i)
  • 0

#7 bziomek

bziomek

    Ziomalek... ;).

  • $Jr Admin
  • 984 postów
244
Pomocnik III
  • Płeć:Mężczyzna

Napisano 15.03.2009 - 23:51

no fajnie tylko gwiazdki mają też wracać do dołu i jeszcze jedno mozesz mi wytłumaczyć po co dwie zmienne i,j i dlaczego w gotoxy jest(7+3*j,10-i)

Fajnie, tylko w tym twoim programie też nie wracają do dołu, więc...
A dwie zmienne są po to, żeby kod programu trochę skrócić.
Zauważ, że mój kod zajmuje tyle samo, co twój (nie mówiąc już o przejrzystości i zjadaniu przez ciebie liter),
natomiast wypisuje 10 słupków, a twój tylko 2.

Dobra, może coś wyjaśnię:
For j:=1 To 10 Do - znaczy to w tym programie tyle, co 'dla każdego słupka j(jot) od 1 do 10 zrób'
Czyli zapewne wiesz już, że zmienna j jest od ilości słupków.

Natomiast:
For i:=1 To Random(10) Do - 'dla każdej gwiazdki i od 1 do liczby (pseudo)losowej z zakresu od 0-9 zrób'.

GotoXY(7+3*j,10-i) - idź do(ustaw kursor w) pozycji X (odsuniętej od lewej strony o) 7+3*j i do pozycji Y (odsuniętej od góry o) 10-i.

Czyli gwiazdki (ile ich będzie zależy od (pseudo)losowości) zaczną pojawiać się od dołu w słupku j dla przykładu w pierwszym (j=1) :
(x;y)=(7+3\cdot1;10-i) co jest równe (10;10-i).
W twoim programie, wsłupku gwiazdka pojawiała się także w pozycji (10,10-i).

Współczynnik liczbowy stojący przy j w wyrażeniu 3.

Wracając do kodu, kolejna linijka:
TextColor(i) - zmienia kolor tekstu w zależności od i.

Natępnie mamy:
WriteLn('\gr *') - wypisuje '\gr *' poczym przechodzi do nowej lini.
To przejście do nowej linii jest tu nie potrzebne, można było użyć samego Write.

Jedziemy dalej:
Delay(75) - opóźnia program o 75 milisekund
Opóźnienie programu w tym przypadku jest potrzebne, aby był jakiś odstęp między wypisywaniem znaku,
tak, żeby nie wypisywano '*' jedna za drugą, tylko np. co 0,075 sekundy (tak, jak w naszym przypadku).
Inaczej wypisywanie '*' nie byłoby tak widoczne, a nawet mogłoby to wyglądać nienajlepiej.

Wykonuje się to w petli:
Repeat
instrukcje, które wcześniej omówiłem
Until KeyPressed

Powtarzaj instrukcje, nie zostanie wciśnięty jakiś klawisz
Instrukcje będą wykonywać się tak długo, aż użytkownik naciśnie jakiś przycisk.

No i ode mnie to tyle...

Zamieszczam jeszcze kod, w którym gwiazdki wracają również do dołu
Program Winamp;

Uses Crt;

Var
  i, j : Integer;

Begin
  ClrScr;
  Randomize;
  Repeat
  Begin
	For j:=1 To 10 Do
	  Begin
		 For i:=1 To Random(10) Do
			Begin
			   GotoXY(3*j,10-i);
			   TextColor(i);
			   Write('*');
			   Delay(30);
			End;
	  End;
	For j:=1 To 10 Do
	  Begin
		 For i:=1 To Random(10) Do
			Begin
			   GotoXY(3*j,i);
			   TextColor(i);
			   WriteLn(' ');
			   Delay(30);
			End;
	  End;
   End;
   Until KeyPressed;
End.
Ale tego już ci nie omówię, bo praktycznie nie ma co...
Wszytko już wcześniej zostało napisane, teraz tylko musisz to przeanalizować.

Pozdrawiam :thumbsdown:.
  • 0

#8 zbychok14

zbychok14

    Wymierny

  • Użytkownik
  • 68 postów
1
Neutralny
  • Płeć:Mężczyzna

Napisano 19.03.2009 - 08:21

dzieki
  • 0