Katolickie Gimnazjum i Liceum Ogólnokształcące im. Jana Pawła II w Łodzi

Microsoft Small Basic

Translated by Anna Wilk (klasa 2a 2009/2010)

Wstęp

Small Basic i programowanie

Programowanie komputerowe jest zdefiniowane jako proces tworzenia oprogramowania komputerowego używającego języki programowania. Tylko jak mówimy i rozumiemy Anglików albo Hiszpana albo Francuzów, komputery mogą zrozumieć programy napisane w pewnych językach. To tzw. języki programowania. Na początku było niewiele takich języków, były proste i zrozumiałe. Z czasem oprogramowanie i komputery stały się bardziej skomplikowane i wyszukane, więc języki programowania również musiały ewaluować. W efekcie są to trudne do zrozumienia metody programowania, szczególnie dla początkujących. Small Basic przedstawia programowanie w przyjemny, niezwykle łatwy i ciekawy sposób, usuwa bariery, by każdy mógł wkroczyć w świat programowania.

Small Basic - Środowisko

Zacznijmy od przedstawienia interfejsu Small Basic’a i poruszania się w nim. Po pierwszym uruchomieniu zobaczycie właśnie takie okno:

Obrazek 1 To jest Small Basic Środowisko, gdzie napiszemy nasze programy. Opiszemy każdy element zaznaczony numerem. 1. Edytor(1) to miejsce, w którym piszemy program. Otwierając przykładowy program lub poprzednio zapisany, pojawi się on w tym oknie. Możesz otworzyć i korzystać z kilku edytorów na raz. 2. Pasek narzędzi(2) nadaje komendy w edytorze. O różnych zadaniach nauczymy się później. 3. Powierchnia pod edytorem (3) to obszar na wszystkie okna edycji.

Nasz pierwszy Program

Już znasz podstawy, więc zacznijmy programować. Wpiszmy poniższą linijkę do edytora.

TextWindow.WriteLine(„Hello World”)

Jeżeli wszystko zostało wpisane poprawnie, to ujżymy coś takiego:

Pierwszy Program Teraz, kiedy już napisaliśmy nasz pierwszy program, włączmy go. Możemy to zrobić klikajać na przycisk RUN w pasku narzędzi lub naciskając F5. Jeżeli wykonaliśmy wszystko poprawnie, ujrzymy to:

Obrazek 2

Gratulacje! Właśnie napisałeś I uruchomiłeś swój pierwszy program. Chociaż to prosty I mały program, to jest to pierwszy poważny krok dla każdego nowego programisty. Jeszcze tylko jeden szczegół przed rozpoczęciem prawdziwego programowania. Musismy zrozumieć co zrobiliśmy i jak komputer zrozumiał nasze polecenie. W następnym dziale przeanalizujemy tę małą operację.

Zapisywanie programu Jeżeli chcesz zakończyć pisanie programu i wrócić do niego później, musisz go zapisać. Możesz to zrobić klikając na SAVE lub używając skrótu ‘ctrl+s’.

Rozdział 2

Nasz pierwszy program Co to naprawdę jest komputerowy program? Program jest kompletem instrukcji dla komputera. Te instrukcje mówią komputerowi dokładnie czemu, by zrobić i komputer zawsze idzie za tymi instrukcjami. Tylko jak ludzie, komputery mogą tylko pójść za instrukcjami, jeśli wyszczególniony w języku, że oni mogą zrozumieć. Te są zawołane zaprogramowywanie języków. Są bardzo wiele języków, które komputer może zrozumieć i Small Basic ma jednego lat. Wyobraź sobie rozmowę zdarzającą między tobą i twoim przyjacielem. Ty i twoi przyjaciele użyłybyście słów, zorganizowanych jako zdania, by przewieźć informację tam i z powrotem. Podobnie, programujące języki zawierają zbiory słów, które mogą zostać zorganizowane do zdań, które przewożą informacje do komputera. I programy są zasadniczo jest wiele języków, które komputer kompletami zdań (czasami tylko mało i może zrozumieć. Jawa, ++, czasami tysiące dużo) że razem mieć sens dla Python, VB, etc. jest wszystkimi zarówno programisty i komputera podobnie. potężnymi nowoczesnymi językami Small Basic Programs komputera, które są użyte, by rozwinąć się prostymi do złożonych Typowy Small program Basic składa się z programów oprogramowania. wiązki stwierdzeń. Każda linia programu reprezentuje stwierdzenie i każde stwierdzenie jest instrukcją dla komputera. Kiedy prosimy komputer wykonać Small program Basic, to bierze program i czyta pierwszy stwierdzenie. To rozumie co próbujemy powiedzieć i wtedy wykonuje nasza instrukcja. Raz to jest zrobione wykonywanie naszego pierwszy stwierdzenia, to wraca do program i czyta i wykonuje drugi linię. To kontynuuje zrobić tak, aż to dociera do końca programu. Właśnie wtedy nasze końce programu. Tylny do Our First Program Tutaj jest pierwszy program, który napisaliśmy:

TextWindow.WriteLine(„Hello World”)

To jest bardzo prosty program, który składa się z jednego stwierdzenia. To stwierdzenie każe komputerowi, by napisać linii o tekście, który jest Hello World, do Window Text. To dosłownie tłumaczy w umyśle komputera do:

Write Hello World

Mógłbyś już zauważyć, że stwierdzenie może w domu obrócić się być częściowe do mniejsze segmenty dużo jak zdania mogą być częściowe do słów. W pierwszy stwierdzeniu mamy 3 odmiennych segmentów: a) TextWindow b) WriteLine c) “Hello World”

Kropka, parentheses i cytaty są wszystkimi interpunkcjami, które są musiane, by zostać umieszczona w odpowiednich pozycjach w stwierdzeniu, dla komputera, by zrozumieć nasz zamiar.

Mógłbyś zapamiętać czarne okno, które ukazało się kiedy prowadziliśmy nasz pierwszy program. To czarne okno jest zawołane TextWindow albo czasami zwany Console. Właśnie tam skutek tego programu idzie. TextWindow, w naszym programie, jest zawołany przedmiot. Jest pewna liczba takich przedmiotów dostępnych, ponieważ nas, by użyć w naszych programach. Możemy wykonać kilka różnych operacji na tych przedmiotach. Już użyliśmy WriteLine operacja w naszym Interpunkcje takie jak cytaty, przestrzenie i programie. Mógłbyś też zauważyć nawias są bardzo ważne w komputerowym że WriteLine operacja jest poszły programie. Oparty na ich pozycji i rachunku, za około Hello World wewnątrz oni mogą zmienić znaczenie czego jest cytaty. Ten tekst jest uszły za wyrażany. wejścia do WriteLine operacja, którą to wtedy drukuje się użytkownikowi. To jest zawołane wejście do operacji. Jakieś operacje biorą jednego albo więcej danych wejściowych kiedy inni nie biorą jakiegoś. Nasz Second Program Teraz, że zrozumiałeś nasz pierwszy program, chodziłeś i zrobiłeś to fantastyczny przez dodawanie jakichś kolorów.

TextWindow.ForegroundColor = “Yellow” TextWindow.WriteLine(“Hello World”)

Obrazek 4

Kiedy prowadzisz powyższy program, zauważysz, że to drukuje to sam „Hello World ” fraza wewnątrz TextWindow, ale ten raz to drukuje to w żółtym zamiast z szary, że to zrobiło wcześniejszy

.

Zgadza się 6 - Hello World w Yellow Zauważ nowe stwierdzenie, które dodaliśmy do naszego oryginalnego programu. To używa nowego słowa, ForegroundColor, którego zrównaliśmy do wartości „Żółty.” This sposób, który wyznaczyliśmy „Żółty ” do ForegroundColor. Teraz, różnica między ForegroundColor i operacją WriteLine jest, że ForegroundColor nie wziął jakichś wejść ani to potrzebowało jakiś nawias. Zamiast to zostało poszły za przez równa się, by symbol i słowo. Definiujemy ForegroundColor jako Property TextWindow. Tutaj jest lista wartości, które obowiązują dla własności ForegroundColor. Spróbuj zastępowanie „Żółty ” z jednym z tych i zobacz skutki - nie zapominaj cytatów, oni są wymagani interpunkcjami.

Black Blue Cyan Gray Green Magenta Red White Yellow DarkBlue DarkCyan DarkGray DarkGreen DarkMagenta DarkRed DarkYellow

Rozdział 3

Wprowadzając Variables Używając Zmienne w naszym programie To nie byłoby miłe, jeśli nasz program może właciwie powiedzieć „Hello ” z użytkownikami nazywają zamiast mówienia ogólnego „Hello World?” Żeby zrobić, że musimy po pierwsze poprosić użytkownika o jego / jej imię i wtedy zgromadzić to gdzieś i wtedy drukujemy się „Cześć ” z imieniem użytkownika. Zobaczmy jak możemy zrobić że:

TextWindow.Write(„Enter your Name: „) name = TextWindow.Read() TextWindow.WriteLine(“Hello “ + name)

Kiedy piszesz i wykonujesz ten program, będziesz widział, jak produkcja lubi następować:

Zgadza się 7 - Ask imię użytkownika I kiedy wprowadzasz twoje imię i uderzasz WEJŚĆ, będziesz widział poszły za produkcją:

Zgadza się 8 - Warm Hello Teraz, jeśli prowadzisz program znów, będziesz spytany to sam pytanie znów. Możesz wprowadzić różne imię i komputer przywita się z tym imieniem. Analiza programu W programie tylko biegłeś, linia, która mogłaby złapać twoją uwagę jest ta:

name = TextWindow.Read()

Read()spogląda tylko jak

WriteLine(),ale z żadnymi wejściami. To jest operacja i zasadniczo to każe komputerowi, by zaczekać na użytkownika wprowadzić coś i uderza klawisze Enter. Raz użytkownik uderza klawisze Enter, to coś co użytkownik napisał bierze i zwraca to do programu. Interesujący punkt jest, że jakikolwiek, który użytkownik napisał teraz jest wprowadzony do pamięci zmienną zawołaną imię. Zmienna jest zdefiniowana jako miejsce, gdzie możesz zgromadzić wartości chwilowo i używasz ich później. W linii powyższej, imię zostało zgromadzone imię użytkownika. Następna linia też interesuje:

TextWindow.WriteLine(„Hello „ + name)

To jest miejsce, gdzie używamy wartości wprowadzonej naszą zmienną do pamięci, imię. Bierzemy wartość w imieniu i dodajemy to by „Cześć ” i napisz to TextWindow. Raz zmienna jest ustawiona, możesz odwołanie to dowolna ilość czasów. Na przykład , możesz zrobić co następować:

TextWindow.Write(„Enter your Name: „) name = TextWindow.Read() TextWindow.Write(“Hello “ + name + “. “) TextWindow.WriteLine(“How are you doing “ + name + “?”)

I będziesz widział poszły za produkcją:

Zgadza się 9 - Reusing Variable Reguły dla nazywania Variables [TODO] Bawiąc się Numbers Właśnie zobaczyliśmy jak możesz użyć zmiennych, by zgromadzić imię użytkownika. W kilku programach, będziemy widzieli jak możemy zgromadzić i zmanipulować numerami w zmiennych. Rozpocznijmy od naprawdę prostego programu:

number1 = 10 number2 = 20 number3 = number1 + number2 TextWindow.WriteLine(number3)

Kiedy prowadzisz ten program, który dostaniesz czemu następuje jako produkcja:

Notice that the numbers don’t have quotes around them. For numbers, quotes are not Obrazek 5 necessary. You need quotes only when you’re using text. W pierwszej linijce programu przydzielasz zmiennej number1 wartość 10. W drugiej linijce, wyznaczasz zmiennej number2 wartość 20 . W trzeciej linijce, dodaj number1 i number2 a potem

wyznacz wynik tego dla number3. W tym wypadku, number3 będzie miał wartość 30. To właśnie wprowadziliśmy do okna tekstowego. Teraz zmodyfikujmy program delikatnie I zobaczmy rezultat:

number1 = 10 number2 = 20 number3 = number1 * number2 TextWindow.WriteLine(number3)

Program powyżej podzieli number1 z number2 i przechowa wynik w number3. Możesz zobaczyć to w wyniku z program poniżej.

Obrazek 6

Podobnie możesz odejmować i dzielić numery. To jest przykład odejmowania:

number3 = number1 - number2

Symbolem dzielenia jest ‘/’. Program będzie wyglądał tak:

number3 = number1 / number2

Wynikiem tego dzielenia będzie:

Obrazek 7 Prosty konwerter temperatury Dla następnego programu użyjemy formuły by przeliczyć temperaturę z Fahrenheita na stopnie Celsjusza. Najpierw, przechowamy temperaturę w Fahrenheitach w zmiennej. Jest taka specjalna komenda, która umożliwia nam czytanie numerów: TextWindow.ReadNumber.

TextWindow.Write(„Enter temperature in Fahrenheit: „) fahr = TextWindow.ReadNumber() celsius = 5 * (fahr - 32) / 9

Jeżeli już mamy temperaturę w Fahrenhaitach w zmiennej możemy ją zamienić na stopnie Celsjusza. Nawiasy mówią komputerowi, by wyliczył temperaturę fahr – 32 (część pierwszą)a potem przetworzył resztę. Składając wszystko razem otrzymujemy:

TextWindow.Write(“Enter temperature in Fahrenheit: “) fahr = TextWindow.ReadNumber() celsius = 5 * (fahr - 32) / 9 TextWindow.WriteLine(“Temperature in Celsius is “ + celsius)

Rezultat:

Obrazek 8

Rozdział 4

Conditions and Branching Wracając do pierwszego programu, czy nie byłoby fajnie mówić zamiast podstawowego Hello World - Good Morning World, lub Good Evening World w zależności od pory dnia? W następnym porgramie, ustawimy by komputer ‘mówił’ Good Morning World jeżeli jest wcześniej niż 12 w południe i Good Evening jeżli jest później niż 12.

If (Clock.Hour < 12) Then TextWindow.WriteLine(“Good Morning World”) EndIf If (Clock.Hour >= 12) Then TextWindow.WriteLine(“Good Evening World”) EndIf

W zależnośći kiedy włączasz program będziesz widział jedno z tych przywitań:

Obrazek 9

Obrazek 10

Przeanalizujmy teraz trzy pierwsze linijki In Small Basic, you can use the Clock object to programu. Widać, że pierwsza lininja access the current date and time. It also wzkazuje, że gdy Clock.Hour jest provides you a bunch of properties that allow mniejsza niż godzina 12., to wyświetli you to get the current Day, Month, Year, Hour, się Good Morning World. Słowa If, Minutes, Seconds separately. Then i EndIf są specjalnymi słowami które są zrozumiałe przez komputer gdy program jest włączony. Po słowie If występuje zawsze warunek, w tym przypadku (Clock.Hour < 12). Pamiętaj, że nawiasy są konieczne, by komputer zrozumiał twoje zamiary. Po tej sekwencji występuje then i zadanie zostaje wykonane. Na samym końcu wpisujemy EndIf,co informuje komputer o zakończeniu naszych działań.

Pomiędzy then i EndIf, może być więcej niż jedna operacja,a komputer wykona ją, jeżeli będzie wpisana poprawnie. Na przykład,możesz napisać coś takiego:

If (Clock.Hour < 12) Then TextWindow.Write(“Good Morning. “) TextWindow.WriteLine(“How was breakfast?”) EndIf

Else Na początku tego rozdziału mogłeś zauważyć, że drugi warunek jest nieco zbyteczny. Wartość Clock.Hour mogłaby być mniejsza od 12 lub nie. Możemy skrócić if..then.. do jednego słowa, else. Przepisując ten program z użyciem else wygląda to tak:

If (Clock.Hour < 12) Then TextWindow.WriteLine(“Good Morning World”) Else TextWindow.WriteLine(“Good Evening World”) EndIf

Stanie się dokładnie to samo co we wcześniejszym przypadku,to pokazuje nam bardzo ważną rzecz w programowaniu: W programowaniu, jest zwykle wiele sposobów na zrobienie jednej rzeczy. Czasami jedna metoda jest dużo lepsza od innych. Wybór należy do osoby programującej. Z czasem, gdy masz już dużo doświadczenia, “ będziesz zauważał te różne metody, ich wady i zalety. Akapit We wszystkich przykładach możesz zauważyć jak zdania pomiędzy If, Else and EndIf zaczynają się od akapitów. Nie jest to konieczne. Komputer zrozumie program bez tego. Jednakże, one pomagają nam zobaczyć strukturę programu i łatwiej go zrozumieć. Stąd, używanie akapitów to dobra metoda nauki i doskonalenia się w programowaniu. Liczby parzyste i nieparzyste Teraz, kiedy znamy wyrażenia If..Then..Else..EndIf, napiszmy program, który określi czy podana liczba jest przysta czy też nie.

TextWindow.Write(“Enter a number: “) num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine(“The number is Even”) Else TextWindow.WriteLine(“The number is Odd”) EndIf

Po włączeniu programu zobaczysz:

Obrazek11

W tym programieprzedstawiliśmy również nową i przydatną funkcję, Math.Remainder. Math.Remainder podzieli pierwszą liczbę przez drugą i otrzymamy resztę. Branching Pamiętaj, w drugim rozdziale nauczyłeś się że, komputer przetwarza jednocześnie jedną linijke programu, w kolejności od góry do dołu. Jednakże, jest specjalna komenda która spowoduje, że komputer przeskoczy z jednego polecenia do drugiego. Spójrzmy na kolejny program.

i = 1 start: TextWindow.WriteLine(i) i = i + 1 If (i < 25) Then Goto start EndIf

Obrazek 12

W programie powyżej, ustawiamy wartość od 1 do jakiej chcemy. Potem dodajemy nowe zdanie zakończone dwukropkiem(:)

start:

Nazywamy to etykietką. Etykietki są jak zakładki, które komputer rozpoznaje. Możesz nazwać zakładkę jak chcesz I dodać tyle etykietek ile chcesz, jeżeli każda będzie miała inną nazwę.

Kolejna interesująca komenda:

i = i + 1

Rozkazuje ona komputerowi by dodał 1 do różnorodnej i I zmienił znowu do i. Więc jeżeli wartością i była 1przed tą komendą to zamieni się to na 2. W końcu,

If (i < 25) Then Goto start EndIf

To jest część która rozkazuje komputerowi, by w przypadku gdy wartość i jest mniejsza od 25, zaczął wykonywać zadania od zakładki start. Niekończący się proces Używanie Goto powoduje, że komputer powtarza coś tyle razy ile chcesz. Na przykład, weźmy programy Even lub Odd i zmodyfikujmy jak poniżej, wtedy program będzie działał w nieskończoność. Można go zatrzymać klikając przycisk X w prawym górnym rogu okna.

begin: TextWindow.Write(“Enter a number: “) num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine(“The number is Even”) Else TextWindow.WriteLine(“The number is Odd”) EndIf Goto begin

Obrazek 13 Rozdział 5

Pętle Pętla For

Użyjmy programu, który napisaliśmy w poprzednim rozdziale.

i = 1 start: TextWindow.WriteLine(i) i = i + 1 If (i < 25) Then Goto start EndIf

Ten program wyświetla liczby od 1 do 24. Ten process wzrastania zmiennej jest popularny dla programowania i jego języka. Można to zrobić prościej. Powyższy program jest taki sam jak ten poniżej.

For i = 1 To 24 TextWindow.WriteLine(i) EndFor

Rezultat:

Obrazek 14

Zauważ, że zredukawiliśmy osiem linijek do 4, a program działa identycznie! Wcześniej wspomnieliśmy, że zwykle jest dużo sposobów na robienie jedniej rzeczy, to był właśnie idealny przykład. For..EndFor jest nazywane pętlą. Pozwala Ci wziąć zmienną, nadać jej nazwę i końcową wartość, a komputer powiększy zmienną za Ciebie. Za każdy razem, gdy komputer będzie powiększał zmienną, użyje zdań między For i EndFor. Jednak jeżeli chcesz by zmienna powiększyła się o 2 a nie 1, wymagane będzie by wyświetlone zostały wszystkie liczby nieparzyste od 1 do 24. Pętla zrobi to za Ciebie.

For i = 1 To 24 Step 2 TextWindow.WriteLine(i) EndFor

Obrazek 15

Step 2 , czyli druga cześć zdań z For mówi komputerowi by zwiększył wartość i o 2. Używając Step sprecyzujesz każde powiększenie jakie chcesz. Możesz nawet określić ujemną wartość, przez co komputer będzie liczył do tyłu.

For i = 10 To 1 Step -1 TextWindow.WriteLine(i) EndFor

Obrazek 16 Pętla While Pętla While to kolejna metoda zapętlania, szczególnie użyteczna gdy nie znamy ilości wykonanych pętli. W przeciwieństwie do pętli For, której ilość znamy, pętla While działa dopóki dany warunek nie okaże się prawdą. W przykładzie poniżej dzielimy liczbę, póki jej wartość nie będzie większa niż 1.

number = 100 While (number > 1) TextWindow.WriteLine(number) number = number / 2 EndWhile

Obrazek 17

W programie powyżej przydzielamy wartość 100 do number i włączamy pętla tak długo, aż liczba będzie większa od jedynki. W środku pętli wpisujemy liczbę, nastepnie dzielimy przez 2. Tak jak się spodziewaliśmy, wynik programu jest liczbą, która progresywnie dzieli się w kółko. Byłoby trudno napisać ten program z pętlą For, ponieważ nie wiemy ile razy pętla ma działać. Z While jest to proste, zawsze można sprawdzić stan i zatrzymać bądź zupełnią wyłączyć program. Zauważmy, że każda pętla while może być rozwinięta do zdania If..Then. Na przykład, program powyżej może być napisany jak ten poniżej bez żadnej zmiany.

number = 100 startLabel: TextWindow.WriteLine(number) number = number / 2

If (number > 1) Then Goto startLabel EndIf

Komputer wewnętrznie przepisuje każdą pętlę While w zdanie z użyciem If..Then ze komendą Goto.

Rozdział 6

Grafika-początki Dotychczas we wszystkich przykładach używaliśmy TextWindow, by wytłumaczyć podstawy Small Basic. Jednak ten program zawiera ogromne zaplacze graficzne, o którym napiszemy w tym rozdziale. GraphicsWindow-przedstawienie Mieliśmy TextWindow, które umożliwiało nam pracowanie z tekstem i liczbami, teraz mamy doczynienia z GraphicsWindow, dzięki któremu rysujemy. Zacznijmy od początku wpisując GraphicsWindow.

GraphicsWindow.Show()

Po włączeniu programu zauważysz, że zamiast zwykłego czarnego okna, mamy białe. Jest to podstawa naszej pracy z grafiką.

Obrazek 18 Ustawienia To okno można ustawić wedle własnych preferencji. Można zmienić tytuł, tło, rozmiar.

GraphicsWindow.BackgroundColor = “SteelBlue” GraphicsWindow.Title = “My Graphics Window” GraphicsWindow.Width = 320 GraphicsWindow.Height = 200 GraphicsWindow.Show()

Tak wygląda to okno po zmianach.

Figure 1 - A Custom Graphics Window Rysowanie lini Gdy już otworzymy GraphicsWindow, możemy rysować figury. Zacznijmy od najprostszych rzeczy. Oto program rysujący proste linie.

GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.DrawLine(10, 100, 100, 10)

Obrazek 20

Pierwsze dwie linijki ustawiają okno, dwie kolejne rysują skrzyżowane linie. Pierwsze dwie liczby po DrawLine określają początkowe współrzędne x I y, a pozostałe dwie to końcowe współrzędne. Interesującą rzeczą w grafice komputerowej jest to, że współrzędne (0,0) mieszczą się w lewym górnym rogu okna. W efekcie przestrzeń współrzędnych w okienku jest uznawane ze drugą ćwiartkę. [TODO: Insert picture of quadrant]

Zamiast używania nazw kolorów można skorzystać z takiego oznakowania (#RRGGBB). Na przykład, #FF0000 to kolor czerwony, #FFFF00 żółty.

Obrazek 21

Small Basic umożliwia modyfikowanie lini, np. pod względem koloru czy grubości. Najpierw spróbujmy zmienić kolor.

GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.PenColor = “Green” GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.PenColor = “Gold” GraphicsWindow.DrawLine(10, 100, 100, 10)

Obrazek 22

Teraz zmieńmy również rozmiar. Poniżej, zmieniamy szerokość(width) do 10, a nie do 1.

GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.PenWidth = 10 GraphicsWindow.PenColor = “Green” GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.PenColor = “Gold” GraphicsWindow.DrawLine(10, 100, 100, 10)

Obrazek 23

PenWidth i PenColor modyfikują ołówek, którym są rysowane linie. Nie tylko ma to wpływ na linie, lecz również na każdą figurę, która jest rysowana po uaktualnieniu właściwości. Używając pętli możemy łatwo napisać program rysujący wiele lini o powiększającej się grubości.

GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.Width = 200 GraphicsWindow.Height = 160 GraphicsWindow.PenColor = “Blue”

For i = 1 To 10 GraphicsWindow.PenWidth = i GraphicsWindow.DrawLine(20, i * 15, 180, i * 15) endfor

Obrazek 24

Interesującą częścią tego programu jest pętla, w której zwiększamy PenWidth za każdym razem i rysujemy nową linię pod tą starą. Rysowanie i wypełnianie Wyróżnia się dwie operacje dla każdego sposobu rysowania figur: Draw i Fill. Operacja Draw rysuje kontur figury, Fill zamalowuje przy użyciu pędzla. W przykładzie poniżej widać, że kontur zaznaczono czerwonym kolorem a wypełnienie zielonym.

GraphicsWindow.Width = 400 GraphicsWindow.Height = 300

GraphicsWindow.PenColor = “Red” GraphicsWindow.DrawRectangle(20, 20, 300, 60)

GraphicsWindow.BrushColor = “Green” GraphicsWindow.FillRectangle(60, 100, 300, 60)

Obrazek 25

Aby wykonać tę operację potrzeba 4 numerów. Pierwsze dwa reprezentują współrzędne X i Y dla lewego górnego rogu prostokąta. Trzeci określa szerokość protokąta, czwarty jego wysokość. Identyczne wymagania występują w przypadku elipsy.

GraphicsWindow.Width = 400 GraphicsWindow.Height = 300

GraphicsWindow.PenColor = “Red” GraphicsWindow.DrawEllipse(20, 20, 300, 60)

GraphicsWindow.BrushColor = “Green” GraphicsWindow.FillEllipse(60, 100, 300, 60)

Obrazek 26

Elipsa jest podstawą koła. Jeżeli chcesz narysować koło, musisz określić takie same parametry.

GraphicsWindow.Width = 400 GraphicsWindow.Height = 300

GraphicsWindow.PenColor = “Red” GraphicsWindow.DrawEllipse(20, 20, 100, 100)

GraphicsWindow.BrushColor = “Green” GraphicsWindow.FillEllipse(100, 100, 100, 100)

Obrazek 27

Rozdział 7 Zabawa z figurami Pobawimy się teraz tym, czego nauczyliśmy się wcześniej. Ten rozdział zawiera przykłady interesujących metod kombinacji rzeczy, których już się nauczyliśmy i tworzenia fajnie wyglądających programów. Prostokąty W tym przykładzie rysujemy kilka prostokątów o zwiększających się rozmiarach.

GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.PenColor = “LightBlue” GraphicsWindow.Width = 200 GraphicsWindow.Height = 200

For i = 1 To 100 Step 5 GraphicsWindow.DrawRectangle(100 - i, 100 - i, i * 2, i * 2) EndFor

Obrazek 28 Koła Wariant następnego programu umożliwia narysowanie kół zamiast kwadratów.

GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.PenColor = “LightGreen”

GraphicsWindow.Width = 200 GraphicsWindow.Height = 200

For i = 1 To 100 Step 5 GraphicsWindow.DrawEllipse(100 - i, 100 - i, i * 2, i * 2) EndFor

Obrazek 29 Losowo Ten program używa operacji GraphicsWindow.GetRandomColor by ustawić dowolny kolor pędzla, następnie używa Math.GetRandomNumber by ustawić współrzędne x i y dla koła. Te dwie operacje pozwalają uzyskać interesujący efekt za każdym razem gdy ponownie włączamy program.

GraphicsWindow.BackgroundColor = “Black” For i = 1 To 1000 GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() x = Math.GetRandomNumber(640) y = Math.GetRandomNumber(480) GraphicsWindow.FillEllipse(x, y, 10, 10) EndFor

Obrazek 30 Fraktale Kolejny program rysuje prosty, trójkątny fractal używając losowych numerów. Fraktal jest figurą geometryczną, która może być podzielona na mniejsze części. Każda taka część przypomina macierzystą figurę. W tym przypadku program rysuje setki trójkątów, które wyglądają jak ich początkowy trójkąt. Program wykonuje zadanie przez pare sekund, więc można dokładnie zobaczyć formowanie się trójkątów ze zwykłych kropek.

GraphicsWindow.BackgroundColor = “Black” x = 100 y = 100

For i = 1 To 100000 = Math.GetRandomNumber(3) ux = 150 uy = 30 If (r = 1) then ux = 30 uy = 1000 EndIf

If (r = 2) Then ux = 1000 uy = 1000 EndIf x = (x + ux) / 2 y = (y + uy) / 2

GraphicsWindow.SetPixel(x, y, “LightGreen”)

EndFor

Obrazek 31

Jeżeli naprawdę chcesz zobaczyć kropki powoli formujące fractal, musisz włączyć opóźnienie pętli wpisując Program.Delay . Ta operacja używa numeru określającego milisekundy opóźnienia. Oto zmodyfikowany program, pogrubione zdanie to właśnie wprowadzona zmiana.

GraphicsWindow.BackgroundColor = “Black” x = 100 y = 100

For i = 1 To 100000 r = Math.GetRandomNumber(3) ux = 150 uy = 30 If (r = 1) then ux = 30 uy = 1000 EndIf

If (r = 2) Then ux = 1000 uy = 1000 EndIf x = (x + ux) / 2 y = (y + uy) / 2

GraphicsWindow.SetPixel(x, y, “LightGreen”) Program.Delay(2)

EndFor

Zwiększenie opóźnienia spowoduje spowolnienie programu. Poeksperymentuj z numerami, zobacz co pasuje Ci najbardziej. Inną modyfikacją, którą możemy zastosować w tym programie to zastąpienie tej linijki:

GraphicsWindow.SetPixel(x, y, “LightGreen”)

Tą:

color = GraphicsWindow.GetRandomColor() GraphicsWindow.SetPixel(x, y, color)

Ta zmiana wprowadzi rysowanie pikseli trójkąta używając losowych kolorów.

Rozdział 8 Żółw Logo W latach 70. XX wieku, był bardzo prosty ale skuteczny język programowania - Logo. Do czasu gdy ktoś dodał coś co nazywa się Grafiką żółwia i tym samym udostępnił ‘żółwia’ który był widoczny na ekranie i odpowiadał na polecenia typu: przejdź do przodu, skręc w prawo itp. Używając żółwia,ludzie mogli rysować interesujące kształty na ekranie. To spowodowało, że język był przystępny dla ludzi w każdym wieku. Small łączy się z żółwiem wieloma poleceniami. W tym rozdziale użyjemy żółwia do rysowanie grafik na ekranie. Żółw Aby zacząć musimy wpisać polecenie, by żółw pojawił się.

Turtle.Show()

Kiedy włączysz program zauważysz białe okienko, takie jak w poprzednim rozdziale,tylko że to będzie zawierało żółwia. To on będzie wykonywał nasze polecenia i rysował to co chcemy.

Obrazek 32 Poruszanie i rysowanie Jedną z komend, które rozumie żółw jest Move. Należy użyć numerów. Dzięki nim żółw będzie wiedział o ile ma się poruszyć. W przykładzie poniżej rozkażemy, by żółw poruszył się o 100 pikseli.

Turtle.Move(100)

Po włączeniu programu można zauważyć, że żółw porusza się powoli o 100 pikseli do góry. Podczas tego ruchu, widać linię kreśloną za nim. Gdy żółw skończy, rezultat będzie wyglądał tak jak poniżej.

Gdy używamy żółwia nie musimy zawsze wpisywać Show(). Żółw automatycznie się pojawi podczas każdej operacji z jego zastosowaniem.

Obrazek 33 Rysowanie kwadratu Kwadrat ma 4 boki, dwa pionowe i dwa poziome. By narysować kwadrat musimy rozkazać żółwiowi by nakreślił linię, odwrócił się w prawo, narysował kolejną i tak dalej aż uzyskamy kwadrat.

Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight()

Poniżej widać efekt.

Obrazek 34

Można zauważyć, że powtarzamy dwie instrukcje cztery razy. Wcześniej nauczyliśmy się, że takie powtarzające się komendy można zastosować używając pętli. Program powyżej można zmodyfikować z zastosowaniem pętli For..EndFor, to dużo łatwiejsze rozwiązanie.

For i = 1 To 4 Turtle.Move(100) Turtle.TurnRight() EndFor

Zmiana barwy Żółw rysuje w GraphicsWindow, takim samym jak wcześniej opisywaliśmy. To znaczy, że wszystkie poznane operacje są użyteczne i w tym przypadku. Następna komenda narysuje kwadrat, którego każdy bok będzie innego koloru.

For i = 1 To 4 GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor() Turtle.Move(100) Turtle.TurnRight() EndFor

Obrazek 35 Rysowanie bardziej złożonych kształtów Żółw oprócz TurnRight i TurnLeft ma również komendę Turn. Ta operacja wykorzystuje jedną daną określającą kąt rotacji. Tym sposobem narysujemy dowolny wielokąt. Następujący program rysuje sześciokąt.

For i = 1 To 6 Turtle.Move(100) Turtle.Turn(60) EndFor

Wypróbujmy, by zobaczyć czy naprawdę da się narysować sześciokąt. Skoro kąt między bokami wynosi 60 stopni, to napiszemy Turn(60). Dla takiego wielokąta, którego boki sa równe, kąt ten można łatwo otrzymać dzieląc 360 przez numer boków. Uzbrojeni w takie informacje i możliwości możemy już napisać solidny program generujący dowolny wielokąt.

sides = 12 length = 400 / sides angle = 360 / sides

For i = 1 To sides Turtle.Move(length) Turtle.Turn(angle) EndFor

Używając tego programu można narysować każdy wielokąt, wystarczy tylko zmodyfikować zmienne ścian. Napisanie 4 tutaj dałoby nam kwadrat. Wstawiając wystarczająco dużą wartość, np. 50, spowoduje coś nierozróżnialnego od koła.

W programie poniżej przyspieszyliśmy żółwia ustawiając wartość Speed na 9. Możesz ustawić szybkość od 1 do 10, w zależności od swojej woli.

Obrazek 36

Używając tej techniki nauczyliśmy się rozkazywać żółwiowi, by rysował wiele kół, za każdym razem z małą zmianą.

sides = 50 length = 400 / sides angle = 360 / sides

Turtle.Speed = 9 For j = 1 To 20 For i = 1 To sides Turtle.Move(length) Turtle.Turn(angle) EndFor Turtle.Turn(18) EndFor

Program powyżej ma dwie pętle For..EndFor. Wewnętrzna pętla (i = 1 to sides)jest podobna do programu z wielokątami I odpowiada za rysowanie kół. Zewnętrzna pętla (j = 1 to 20) odpowiada za przesuwanie żółwia o kawałek po każdym narysowanym kole. W przykładzie jest rozkaz narysowania 20 kół. Wszystko to połączone razem tworzy interesujący wzór.

Obrazek 37 Poruszanie Jeżeli chcesz by żółw się poruszył bez rysowania za sobą linii, użyj komendy PenUp. Żółw przeniesie się wszędzie gdzie chcesz, ale nie narysuje niczego. Wpisanie PenDown spowoduje, że żółw znowu zacznie rysować przy poruszaniu. Ta opcja może być wykorzystana by np. narysować przerywaną linię. Oto program umożliwiający narysowanie wielokąta o przerywanym konturze.

sides = 6 length = 400 / sides angle = 360 / sides

For i = 1 To sides For j = 1 To 6 Turtle.Move(length / 12) Turtle.PenUp() Turtle.Move(length / 12) Turtle.PenDown() EndFor Turtle.Turn(angle) EndFor

W tym programie wyróżniamy dwie pętle – jedna rysuje przerywaną linię, druga określa ilość tych linii. W naszym przykładzie, wykorzystaliśmy 6 dla zmiennej ścian, stąd wyszedł wielokąt taki jak poniżej.

Obrazek 38

Rozdział 9 Podprogram Bardzo często podczas pisanie programu spotkamy się z koniecznością wykorzystywania tych samym sentencji jak poprzednio. W tych przypadkach nie ma sensu wciąż przepisywać tego samego. Wtedy podprogramy bardzo się przydają. Podprogram to porcja kodu z większej komendy, która zwykle robi coś specjalnego i może być wywołana w różnych miejscach w programie. Podprogramy są identyfikowane przez słowo poprzedzone wyrażeniem Sub i kończą się wyrazem EndSub. Na przykład, następujący skrawek reprezentuje podprogram PrintTime, który wyświetla aktualny czas w TextWindow.

Sub PrintTime TextWindow.WriteLine(Clock.Time) EndSub

Poniżej widzimy program zawierający podprogram, który jest przywoływany w różnych momentach.

PrintTime() TextWindow.Write(“Enter your name: “) name = TextWindow.Read() TextWindow.Write(name + “, the time now is: “) PrintTime()

Sub PrintTime TextWindow.WriteLine(Clock.Time) EndSub

Obrazek 39

Wykonujesz podprogram wpisując SubroutineName(). Zwykle nawiasy są potrzebne, by powiedzieć komputerowi, że chcesz wywołać podprogram.

Zalety korzystania z podprogramu Powyżej widzimy, że podprogramy pomagają skrócić ilość kodu, który musimy wpisać. Po wpisaniu raz komendy PrintTime, możesz ją przywołać w każdym momencie. Na dodatek, podprogramy podzielą złożone problemy na prostsze części. Jeżeli mamy do rozwiązania trudne równanie, możemy je rozpisać na kilka podprogramów, każdy rozwiązujący poszczególną część. Na końcu wystarcz złożyć wszystko razem i otrzymamy wynik całego równania. Podprogramy również ulepszają czytelność programu. W przypadku klarownie rozpisanych podprogramów łatwo nam przejrzyście zrozumieć cały program. To ważne, gdy chcesz przeanalizować dzieło innego programisty lub by to właśnie twoja praca była czytelna.

Używanie zmiennych Możesz udostepnić i użyć każdą zmienną przez podprogram. As an example, the following program accepts two numbers and prints out the Pamietaj, w SmallBasic możesz Remember, you larger of the two. Zauważmy, że zmienna max jest can only call a SmallBasic from użyta wewnątrz i na zewnątrz podprogramu. within the same program. You cannot call a subroutine from within another program.

TextWindow.Write(“Enter first number: “) num1 = TextWindow.ReadNumber() TextWindow.Write(“Enter second number: “) num2 = TextWindow.ReadNumber()

FindMax() TextWindow.WriteLine(“Maximum number is: “ + max)

Sub FindMax If (num1 > num2) Then max = num1 Else max = num2 EndIf EndSub

Oto rezultat:

Obrazek 40

Spójrzmy na następny przykład wykorzystania podprogramu. Tym razem użyjemy programu graficznego, który oblicza różne punkty zapisane w zmiennych x I y. Wywoływany jest podprogram DrawCircleUsingCenter, który odpowiada za rysowanie koła używając x i y za środek.

GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.PenColor = “LightBlue” GraphicsWindow.Width = 480 For i = 0 To 6.4 Step 0.17 x = Math.Sin(i) * 100 + 200 y = Math.Cos(i) * 100 + 200

DrawCircleUsingCenter() EndFor Sub DrawCircleUsingCenter startX = x - 40 startY = y - 40

GraphicsWindow.DrawEllipse(startX, startY, 120, 120) EndSub

Obrazek 41

Podprogramy w pętlach Czasami podprogram jest używany w pętli, w której wykorzystuje się te same komendy, tylko że z innymi wartościami. Na przykład, podprogram PrimeCheck i ten podprogram określają czy liczba jest pierwsza. Możesz napisać program, który pozwala użytkownikowi wpisać dowolną wartość i dowiedzieć się czy liczba jest pierwsza za pomocą podprogramu . Poniżej znajduje się wzór.

TextWindow.Write(“Enter a number: “) i = TextWindow.ReadNumber() isPrime = “True” PrimeCheck() If (isPrime = “True”) Then TextWindow.WriteLine(i + “ is a prime number”) Else TextWindow.WriteLine(i + “ is not a prime number”) EndIf Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = “False” Goto EndLoop EndIf Endfor EndLoop: EndSub

Podprogram PrimeCheck bierze daną wartość i I próbuje ją podzielić przez mniejsze liczby. Jeżeli nie uzyskujemy żadnej reszty, wtedy i nie jest liczbą pierwszą. W takim momencie podprogram ustawia wartość isPrime na fałsz(False) i kończy operację. Jeżeli liczba była niepodzielna przez mniejsze liczby, wtedy wartością isPrime jest prawda(True).

Obrazek 42

Skoro już mamy podprogram sprawdzający liczby pierwsze, możemy stworzyć listę liczb pierwszych mniejszych od 100. Bardzo łatwo można zmodyfikować program poniżej, by wyświetlał takie liczby przez pętlę. Ten program rozkazuje obliczanie różnych wartości przy każdym włączeniu pętli. Spójrzmy na przykład poniżej.

For i = 3 To 100 isPrime = “True” PrimeCheck() If (isPrime = “True”) Then TextWindow.WriteLine(i) EndIf EndFor Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = “False” Goto EndLoop EndIf Endfor EndLoop:

EndSub

Widzimy, że wartość i jest uaktualniona po każdym włączeniu pętli. W środku wywoływana jest komenda PrimeChec. PrimeCheck bierze wartość i i oblicza czy jest liczbą pierwszą. Wynik jest przechowany w isPrime, a następnie dostępny na zewnątrz pętli. Wartość i jest potem wyświetlana jeżeli okaże się liczbą pierwszą. Skoro pętla zaczyna od 3 i idzie do 100, otrzymujemy listę wszystkich liczb pierwszych z tego przedziału. Oto wynik:

Obrazek 43

Rozdział 10 Events and Interactivity

In the first two chapters, we introduced objects that have Properties and Operations. In addition to properties and operations, some objects have what are called Events. Events are like signals that are raised, for example, in response to user actions, like moving the mouse or clicking it. In some sense events are the opposite of operations. In the case of operation, you as a call it to make the computer do something; whereas in the case of events, the computer lets you know when something interesting has happened.

How are events useful? Events are central to introducing interactivity in a program. If you want to allow a user to interact with your program, events are what you’ll use. Say, you’re writing a Tic-Tac-Toe game. You’ll want to allow the user to choose his/her play, right? That’s where events come in - you receive user input from within your program using events. If this seems hard to grasp, don’t worry, we’ll take a look at a very simple example that will help you understand what events are and how they can be used. Below is a very simple program that has just one statement and one subroutine. The subroutine uses the ShowMessage operation on the GraphicsWindow object to display a message box to the user.

GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown GraphicsWindow.ShowMessage(“You Clicked.”, “Hello”) EndSub

The interesting part to note in the program above is the line where we assign the subroutine name to the MouseDown of GraphicsWindow object. You’ll notice that MouseDown looks very much like a property – except that instead of assigning some value, we’re assigning the subroutine OnMouseDown to it. That’s what is special about events – when the event happens, the subroutine is called automatically. In this case, the subroutine OnMouseDown is called every time the user clicks using the mouse, on the GraphicsWindow. Go ahead, run the program and try it out. Anytime you click on the GraphicsWindow with your mouse, you’ll see a message box just like the one shown in the picture below.

Figure 2 - Response to an event

This kind of event handling is very powerful and allows for very creative and interesting programs. Programs written in this fashion are often called event-driven programs. You can modify the OnMouseDown subroutine to do other things than popup a message box. For instance, like in the program below, you can draw big blue dots where the user clicks the mouse.

GraphicsWindow.BrushColor = “Blue” GraphicsWindow.MouseDown = OnMouseDown

Sub OnMouseDown x = GraphicsWindow.MouseX - 10 y = GraphicsWindow.MouseY - 10 GraphicsWindow.FillEllipse(x, y, 20, 20) EndSub

Figure 3 - Handling Mouse Down Event

Notice that in the program above, we used MouseX and MouseY to get the mouse co-ordinates. We then use this to draw a circle using the mouse co-ordinates as the center of the circle.

Handling multiple events There are really no limits to how many events you want to handle. You can even have one subroutine handle multiple events. However, you can handle an event only once. If you try to assign two to the same event, the second one wins. To illustrate this, let’s take the previous example and add a subroutine that handles key presses. Also, let’s make this new subroutine change the color of the brush, so that when you click your mouse, you’ll get a different colored dot.

GraphicsWindow.BrushColor = “Blue” GraphicsWindow.MouseDown = OnMouseDown GraphicsWindow.KeyDown = OnKeyDown

Sub OnKeyDown GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() EndSub Sub OnMouseDown x = GraphicsWindow.MouseX - 10 y = GraphicsWindow.MouseY - 10 GraphicsWindow.FillEllipse(x, y, 20, 20) EndSub

Figure 4 - Handling multiple events

If you ran this program and clicked on the window, you’ll get a blue dot. Now, if you press any key once and click again, you’ll get a different colored dot. What’s happening when you press a key is that the subroutine OnKeyDown gets executed which changes the brush color to a random color. After that when you click the mouse, a circle is drawn using the newly set color – giving the random color dots.

A paint program Armed with events and subroutines, we can now write a program that lets users draw on the window. It’s surprisingly easy to write such a program, provided we break down the problem into smaller bits. As a first step, let’s write a program that will allow users to move the mouse anywhere on the graphics window, leaving a trail wherever they move the mouse.

GraphicsWindow.MouseMove = OnMouseMove Sub OnMouseMove x = GraphicsWindow.MouseX y = GraphicsWindow.MouseY GraphicsWindow.DrawLine(prevX, prevY, x, y) prevX = x prevY = y EndSub

However, when you run this program, the first line always starts from the top left edge of the window (0, 0). We can fix this problem by handling the MouseDown event and capture the prevX and prevY values when that event comes. Also, we really only need the trail when the user has the mouse button down. Other times, we shouldn’t draw the line. In order to get this behavior, we’ll use the IsLeftButtonDown property on the Mouse object. This property tells whether the Left button is being held down or not. If this value is true, then we’ll draw the line, if not we’ll skip the line.

GraphicsWindow.MouseMove = OnMouseMove GraphicsWindow.MouseDown = OnMouseDown

Sub OnMouseDown prevX = GraphicsWindow.MouseX prevY = GraphicsWindow.MouseY EndSub Sub OnMouseMove x = GraphicsWindow.MouseX y = GraphicsWindow.MouseY If (Mouse.IsLeftButtonDown) Then GraphicsWindow.DrawLine(prevX, prevY, x, y) EndIf prevX = x prevY = y EndSub

(Pending completion)

Dodatek A Przykłady

Żółw rysujący fraktal

Figure 5 - Turtle drawing a tree fractal

angle = 30 delta = 10 distance = 60 Turtle.Speed = 9 GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.PenColor = “LightGreen” DrawTree()

Sub DrawTree If (distance > 0) Then Turtle.Move(distance) Turtle.Turn(angle)

Stack.PushValue(« distance », distance) distance = distance - delta DrawTree() Turtle.Turn(-angle * 2) DrawTree() Turtle.Turn(angle) distance = Stack.PopValue(“distance”)

Turtle.Move(-distance) EndIf EndSub

Zdjęcia z Flickr

Figure 6 - Retrieving pictures from Flickr

GraphicsWindow.BackgroundColor = “Black” GraphicsWindow.MouseDown = OnMouseDown

Sub OnMouseDown pic = Flickr.GetRandomPicture(“mountains, river”) GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480) EndSub

Dynamiczna tapeta na pulpicie

For i = 1 To 10 pic = Flickr.GetRandomPicture(“mountains”) Desktop.SetWallPaper(pic) Program.Delay(10000) EndFor

Gra z rakietką

Figure 7 - Paddle Game

GraphicsWindow.BackgroundColor = “DarkBlue” paddle = Shapes.AddRectangle(120, 12) ball = Shapes.AddEllipse(16, 16) GraphicsWindow.MouseMove = OnMouseMove

x = 0 y = 0 deltaX = 1 deltaY = 1

RunLoop: x = x + deltaX y = y + deltaY

gw = GraphicsWindow.Width gh = GraphicsWindow.Height If (x >= gw - 16 or x <= 0) Then deltaX = -deltaX

EndIf If (y <= 0) Then deltaY = -deltaY EndIf padX = Shapes.GetLeft (paddle) If (y = gh - 28 and x >= padX and x <= padX + 120) Then deltaY = -deltaY EndIf Shapes.Move(ball, x, y) Program.Delay(5)

If (y < gh) Then Goto RunLoop EndIf GraphicsWindow.ShowMessage(“You Lose”, “Paddle”) Sub OnMouseMove paddleX = GraphicsWindow.MouseX Shapes.Move(paddle, paddleX - 60, GraphicsWindow.Height - 12) EndSub

Dodatek B Kolory

TODO: Describe colors + hex

Oto lista nazw kolorów, które mogą być użyte przy korzystaniu z programu Small Basic. Są uporządkowane według głównego koloru.

Czerowne Pomarańczowe IndianRed #CD5C5C LightSalmon #FFA07A LightCoral #F08080 Coral #FF7F50 Salmon #FA8072 Tomato #FF6347 DarkSalmon #E9967A OrangeRed #FF4500 LightSalmon #FFA07A DarkOrange #FF8C00 Crimson #DC143C Orange #FFA500 Red #FF0000 Żółte FireBrick #B22222 Gold #FFD700 DarkRed #8B0000 Yellow #FFFF00 Różowe LightYellow #FFFFE0 Pink #FFC0CB LemonChiffon #FFFACD LightPink #FFB6C1 LightGoldenrodYellow #FAFAD2 HotPink #FF69B4 PapayaWhip #FFEFD5 DeepPink #FF1493 Moccasin #FFE4B5 MediumVioletRed #C71585 PeachPuff #FFDAB9 PaleVioletRed #DB7093 PaleGoldenrod #EEE8AA

Khaki #F0E68C SpringGreen #00FF7F DarkKhaki #BDB76B MediumSeaGreen #3CB371 SeaGreen #2E8B57 Fioletowe ForestGreen #228B22 Lavender #E6E6FA Green #008000 Thistle #D8BFD8 DarkGreen #006400 Plum #DDA0DD YellowGreen #9ACD32 Violet #EE82EE OliveDrab #6B8E23 Orchid #DA70D6 Olive #808000 Fuchsia #FF00FF DarkOliveGreen #556B2F Magenta #FF00FF MediumAquamarine #66CDAA MediumOrchid #BA55D3 DarkSeaGreen #8FBC8F MediumPurple #9370DB LightSeaGreen #20B2AA BlueViolet #8A2BE2 DarkCyan #008B8B DarkViolet #9400D3 Teal #008080 DarkOrchid #9932CC DarkMagenta #8B008B Niebieskie Purple #800080 Aqua #00FFFF Indigo #4B0082 Cyan #00FFFF SlateBlue #6A5ACD LightCyan #E0FFFF DarkSlateBlue #483D8B PaleTurquoise #AFEEEE MediumSlateBlue #7B68EE Aquamarine #7FFFD4 Turquoise #40E0D0 Zielone MediumTurquoise #48D1CC GreenYellow #ADFF2F DarkTurquoise #00CED1 Chartreuse #7FFF00 CadetBlue #5F9EA0 LawnGreen #7CFC00 SteelBlue #4682B4 Lime #00FF00 LightSteelBlue #B0C4DE LimeGreen #32CD32 PowderBlue #B0E0E6 PaleGreen #98FB98 LightBlue #ADD8E6 LightGreen #90EE90 SkyBlue #87CEEB MediumSpringGreen #00FA9A LightSkyBlue #87CEFA

DeepSkyBlue #00BFFF Białe DodgerBlue #1E90FF White #FFFFFF CornflowerBlue #6495ED Snow #FFFAFA MediumSlateBlue #7B68EE Honeydew #F0FFF0 RoyalBlue #4169E1 MintCream #F5FFFA Blue #0000FF Azure #F0FFFF MediumBlue #0000CD AliceBlue #F0F8FF DarkBlue #00008B GhostWhite #F8F8FF Navy #000080 WhiteSmoke #F5F5F5 MidnightBlue #191970 Seashell #FFF5EE Beige #F5F5DC Brązowe OldLace #FDF5E6 Cornsilk #FFF8DC FloralWhite #FFFAF0 BlanchedAlmond #FFEBCD Ivory #FFFFF0 Bisque #FFE4C4 AntiqueWhite #FAEBD7 NavajoWhite #FFDEAD Linen #FAF0E6 Wheat #F5DEB3 LavenderBlush #FFF0F5 BurlyWood #DEB887 MistyRose #FFE4E1 Tan #D2B48C RosyBrown #BC8F8F Szare SandyBrown #F4A460 Gainsboro #DCDCDC Goldenrod #DAA520 LightGray #D3D3D3 DarkGoldenrod #B8860B Silver #C0C0C0 Peru #CD853F DarkGray #A9A9A9 Chocolate #D2691E Gray #808080 SaddleBrown #8B4513 DimGray #696969 Sienna #A0522D LightSlateGray #778899 Brown #A52A2A SlateGray #708090 Maroon #800000 DarkSlateGray #2F4F4F Black #000000