16 164
edycje
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 980: | Linia 980: | ||
http://i.imgur.com/mw8lofA.png | http://i.imgur.com/mw8lofA.png | ||
== DUŻY PRZYKŁAD: Tworzenie fal w oknie tekstowym == | |||
=== Czym jest "duży przykład"? === | |||
Duży przykład stanowi swego rodzaju podsumowanie tego, czego się dotychczas nauczyliśmy. Ma pokazać zastosowanie zdobytej wiedzy w większych projektach. | |||
=== Działanie przykładu === | |||
http://i.imgur.com/Ac1Csmc.png | |||
Program na początku prosi użytkownika o podanie wysokości czubka fali, później ilość fal. Następnie wyświetla listę kolorów do wyboru i prosi o wybór użytkownika. | |||
Gdy to zostanie zrobione, program rysuje fale, które rosną do długości czubka, a potem maleją do długości jednej spacji. | |||
=== Kod programu === | |||
<code> | |||
{{Spoiler|<poem> | |||
TextWindow.Title = "Tworzenie fal w oknie tekstowym" | |||
'Etykieta "start" | |||
start: | |||
'Parametry ustalane przez użytkownika | |||
TextWindow.Write("Podaj wysokość czubka: ") | |||
czubek = TextWindow.ReadNumber() | |||
TextWindow.Write("Podaj ilość fal: ") | |||
fale = TextWindow.ReadNumber() | |||
'Wyświetlanie listy dostępnych kolorów: | |||
TextWindow.WriteLine("") | |||
TextWindow.WriteLine("Dostępne kolory:") | |||
For k = 1 To 15 | |||
'Ustawianie koloru tła. "DarkGray" dla tych, które są słabo widoczne na czarnym tle. | |||
If k = 1 Or k = 4 Or k = 5 Or k = 9 Then | |||
TextWindow.BackgroundColor = "darkgray" | |||
Else | |||
TextWindow.BackgroundColor = "black" | |||
EndIf | |||
'Wyświetlanie koloru o danym numerze | |||
TextWindow.ForegroundColor = k | |||
TextWindow.Write(k + " ") | |||
EndFor | |||
TextWindow.ForegroundColor = "Gray" | |||
'Ustawianie koloru fali przez użytkownika | |||
TextWindow.WriteLine("") | |||
TextWindow.WriteLine("") | |||
TextWindow.WriteLine("Podaj kolor piramidy: ") | |||
TextWindow.BackgroundColor = TextWindow.Read() | |||
'Początek pętli powielającej fale | |||
For i = 1 To fale | |||
p = " " | |||
'Początek pętli rysującej rosnącą część fali | |||
For f = 1 To czubek | |||
TextWindow.WriteLine(p) | |||
p = p + " " | |||
EndFor | |||
'Początek pętli rysującej malejącą część fali. Ignoruje ostatnią literę zmiennej "p". | |||
For f = czubek - 1 To 2 Step -1 | |||
p = Text.GetSubText(p,1,f) | |||
TextWindow.WriteLine(p) | |||
EndFor | |||
EndFor | |||
'Zakończenie | |||
TextWindow.WriteLine(" ") | |||
TextWindow.WriteLine("") | |||
'Przywracanie czarnego tła | |||
TextWindow.BackgroundColor = "black" | |||
'Informacja o tym, że można stworzyć kolejną piramidę | |||
TextWindow.WriteLine("NOWA PIRAMIDA:") | |||
'Skok do początku | |||
Goto start | |||
</poem>}} | |||
</code> | |||
=== Omówienie fragmentów kodu === | |||
==== Lista kolorów ==== | |||
Program wyświetla listę dostępnych kolorów dzięki pętli: | |||
<code> | |||
<poem> | |||
For k = 1 To 15 | |||
'Ustawianie koloru tła. "DarkGray" dla tych, które są słabo widoczne na czarnym tle. | |||
If k = 1 Or k = 4 Or k = 5 Or k = 9 Then | |||
TextWindow.BackgroundColor = "darkgray" | |||
Else | |||
TextWindow.BackgroundColor = "black" | |||
EndIf | |||
'Wyświetlanie koloru o danym numerze | |||
TextWindow.ForegroundColor = k | |||
TextWindow.Write(k + " ") | |||
EndFor | |||
</poem> | |||
</code> | |||
W oknie tekstowym kolory mają przypisany numer, dlatego możemy łatwo wyświetlić listę dzięki pętli dodającej 1. | |||
* <code>k</code> to numer koloru | |||
* Kolory 1, 4, 5 i 9 są słabo widoczne na czarnym tle. Dlatego one są wyświetlane na jaśniejszym tle. | |||
* Pozostałe kolory (Else) są na czarnym. | |||
* Po ustaleniu koloru tekstu (<code>k</code>), program ustawia wybrany kolor i wyświetla jego numer. Dodaje na końcu spację, by numer kolejnego koloru był wyświetlony z odstępem. | |||
* Powyższy kod działa jako część programu, ale nie wymaga go. Możesz go wykorzystać w innych celach. | |||
==== Pętla powielająca fale ==== | |||
<code>For i = 1 To fale</code><br> | |||
[Tworzenie piramidy]<br> | |||
<code>EndFor</code><br> | |||
Pętla powtarza tworzenie fali, aż osiągnie wartość ustawioną wcześniej przez użytkownika. | |||
==== Rosnąca część fali ==== | |||
Za rosnącą część fali odpowiada poniższa pętla: | |||
<code> | |||
<poem> | |||
For f = 1 To czubek | |||
TextWindow.WriteLine(p) | |||
p = p + " " | |||
EndFor | |||
</poem> | |||
</code> | |||
Powyższa pętla pisze linię o ilości spacji odpowiadającej danemu szczeblowi fali. Następnie zwiększa ilość spacji dodając do zmiennej <code>p</code> pustą spację za pomocą <code>" "</code>, by kolejny szczebel był wyższy. | |||
==== Malejąca część fali ==== | |||
Za malejącą część fali odpowiada poniższa pętla: | |||
<code> | |||
<poem> | |||
For f = czubek - 1 To 2 Step -1 | |||
p = Text.GetSubText(p,1,f) | |||
TextWindow.WriteLine(p) | |||
EndFor | |||
</poem> | |||
</code> | |||
* <code>Text.GetSubText</code> - Podaje zadany fragment dłuższego tekstu. | |||
Za pomocą polecenia <code>Text.GetSubText(p,1,f)</code> program pobiera treść zawartości zmiennej <code>p</code> do litery o numerze <code>f</code>, która ciągle maleje o 1. |