IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

5. diel - Small Basic - Grafická okna

Minule sme si popísali triedy TextWindow, Network a Math. Dnes sa posunieme v seriáli ďalej a začneme tvoriť oveľa zaujímavejšie aplikácie. Uvedieme si totiž prácu s grafickými oknami.

Úvod do grafických okien

Tak teda začneme. S grafickými oknami sa dá vo Small Basicu dosť slušne hrať a toto vás bude aj baviť :) . Vždy je dobré si nastaviť farbu pozadia, to urobíte takto:

GraphicsWindow.BackgroundColor = "Black"

A vaše okno by malo vyzerať takto:

SmallBasic

Máte teda prvý grafické okno! :) Možno by to chcelo vypísať potrebné text. To nie je žiadny problém, ale je potrebné, aby sme nastavili farbu na bielu, defaultná farba je bledo modrá.

GraphicsWindow.BrushColor = "White"
GraphicsWindow.DrawText(0, 0, "Ahoj!")

Na prvom riadku sa zmení farba štetca na bielu, tzn. text a výplne tvarov a na druhom je výpis textu na 0, 0. To sú súradnice xay (ľavý horný roh okna). Asi vás zaujíma, ako zmeniť farbu obrysu u tvarov. Môžeme si to vyskúšať na elipse, stačí do kódu pridať:

GraphicsWindow.PenColor = "White"
GraphicsWindow.DrawEllipse(32, 32, 128, 128)

A aj s tým textom by to malo vyzerať nejako takto:

SmallBasic

Funguje a je to pekné, nie? :)

Ale asi sa vám nepáči nadpis okna. To možno zmeniť jednoducho ako všetko ostatné:

GraphicsWindow.Title = "Nadpis"

Tak máme nadpis. Teraz ešte nastavenia šírky a výšky okna:

GraphicsWindow.Width = 800
GraphicsWindow.Height = 600

To nastaví šírku a výšku na 800x600. To je základná práca s oknami as tými tvary sa dá slušne hrať. Teraz si naprogramujeme vlastné loading bar :)

Loading bar

Defaultný farba pozadia je biela, tak tu necháme. Štetec (výplň) nastavíme na tmavo modrú a obrys na čiernu. Veľkosť okna na 240x32, aký si dáte nadpis okna nechám na vás. Kód by mohol vyzerať takto:

GraphicsWindow.Title = "Můj Loading Bar"
GraphicsWindow.Width = 240
GraphicsWindow.Height = 32
GraphicsWindow.PenColor = "Black"
GraphicsWindow.BrushColor = "DarkBlue"

Teraz k samotnému postupnému vykresľovanie musíme vytvoriť cyklus od jednej do 120. Bude sa vykresľovať obrys obdĺžnika na súradniciach 0, 0. Vaše premenná v cykle * 2, 32, a plný obdĺžnik na rovnakých súradniciach. Teraz už chápete, prečo je okno 240x32, čo :) ? Ešte musíme vždy spomaliť kroky cyklu, aby sa obdĺžnik nevykreslil hneď. Môžete nastaviť napríklad na 30 milisekúnd, to by cyklus prebehol za 3600 milisekúnd. Tak, kód by mohol vyzerať takto:

For a = 1 To 120
    GraphicsWindow.DrawRectangle(0, 0, a * 2, 32)
    GraphicsWindow.FillRectangle(0, 0, a * 2, 32)
    Program.Delay(30)
EndFor

obrázok:

SmallBasic

Pekné, nie? :) A ešte si to môžeme trochu vylepšiť, zašpiníte kód na nastavenie výplne na tmavo modrú. Dáme do cyklu nastavenia farby výplne na náhodne zvolenú, stačí len pridať:

GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()

Vidíte ďalšie operácie z triedy GraphicsWindow, pri každom kroku zvolíme náhodnú farbu výplne.

Obdĺžniky

Skúsme si ďalší príklad. Úplne jednoduchý kód, vykreslí štvorcové, farebné pozadie na okno 600x400px.

GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
For y = 0 To GraphicsWindow.Height / 20
  For x = 0 To GraphicsWindow.Width / 20
    GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
    GraphicsWindow.FillRectangle(x * 20, y * 20, 20, 20)
  EndFor
EndFor

výsledok:

farebné pozadia - SmallBasic

Reakcie na klávesy

Nakoniec si ukážme, ako možno reagovať na stlačenie nejaké klávesy. Malú ochutnávku sme mali už v predchádzajúcich dieloch. Kód nižšie zaregistruje procedúru key_down na udalosť okná KeyDown, ktorá sa zavolá vo chvíli, keď používateľ stlačí kláves. Podmienkou zareagujeme na to, ktorá klávesa bola stlačení. Ak to bolo Escape, ukončíme program.

GraphicsWindow.KeyDown = key_down
Sub key_down
  last_key_down = GraphicsWindow.LastKey
  If last_key_down = "Escape" Then 'ESC
    Program.End()
  EndIf
EndSub

 

Predchádzajúci článok
Small Basic - Cykly, funkcie a polia
Všetky články v sekcii
SmallBasic
Článok pre vás napísal Šimon Raichl
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje hlavně tvorbě všemožných věcí v JS
Aktivity