Pascal Program z gwiazdką
Rozpoczęty przez zbychok14, Mar 12 2009 19:38
7 odpowiedzi w tym temacie
#1
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
P.S Wiem jak zrobić z 2 gwiazdkami ale nie wiem jak zrobić z dziesięcioma prosze o pomoc
Napisano 25.09.2011 - 17:55
#2
Napisano 12.03.2009 - 20:18
Mógłbyś opisać to jakoś bardziej?
Nie używam winampa, a specjalnie nie będę instalował.
Pozdrawiam
Nie używam winampa, a specjalnie nie będę instalował.
Pozdrawiam
#4
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.
#5
Napisano 13.03.2009 - 21:56
Hmm... Ja bym to trochę inaczej zrobił...
Ale jak to ma być w takiej formie, to:
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.
#6
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)
#7
Napisano 15.03.2009 - 23:51
Fajnie, tylko w tym twoim programie też nie wracają do dołu, więc...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)
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 () :
co jest równe .
W twoim programie, wsłupku gwiazdka pojawiała się także w pozycji .
Współczynnik liczbowy stojący przy w wyrażeniu .
Wracając do kodu, kolejna linijka:
TextColor(i) - zmienia kolor tekstu w zależności od i.
Natępnie mamy:
WriteLn('') - wypisuje '' 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, aż 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 .
#8
Napisano 19.03.2009 - 08:21
dzieki