Przejdź do zawartości

Microsoft Small Basic - poradnik programowania: Różnice pomiędzy wersjami

brak opisu edycji
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.