Advertisement
kwinto93

zegar.lua

Aug 12th, 2013
904
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.63 KB | None | 0 0
  1. --[[Stworzone przez kwinto93
  2.     Created by kwinto93
  3.     http://www.youtube.com/user/kwinto93
  4. --]]
  5.  
  6. local ArgStartowe = {...} -- argumenty startowe
  7.  
  8. local strona = ArgStartowe[1] -- strona komputera do której podłączony jest monitor
  9. local rozmiar = tonumber(ArgStartowe[2]) --[[powiekszenie wyswietlanego tekstu; od razu zamieniamy tekst na liczbę za pomoca
  10.                                         tonumber(string)
  11.                                         --]]
  12. local czy24h = ArgStartowe[3] -- czy czas ma byc wyswietlony w formacie 24h czy 12h
  13.  
  14. -- sprawdzam argumenty startowe(strona: left, right, top, rozmiar od 0.5 do 5 (takie są wymagania funkcji monitor.setTextScale(x)), czy24h: 24 lub 12)
  15. if (strona == "left" or strona == "right" or strona == "top" or strona == "back" or strona == "bottom") and (rozmiar >= 0.5 and rozmiar <= 5.0) and (czy24h == "24" or czy24h == "12") then
  16.  
  17.     -- zamieniam czy24h na wartosc logiczna (textutils.formatTime(czas, czy24h), true - wyswietla 24h, false - 12h)
  18.     if czy24h == "24" then
  19.         czy24h = true;
  20.     else
  21.         czy24h = false;
  22.     end
  23.  
  24.     -- jesli z zadanej strony komputera jest podłączone jakiekolwiek urządzenie
  25.     if peripheral.isPresent(strona) then
  26.         -- jesli z zadanej strony jest podlaczony monitor
  27.         if peripheral.getType(strona) == "monitor" then
  28.             local monitor = peripheral.wrap(strona) --[[podłącza pod zmienną "monitor", urządzenie z zadanej strony komputera
  29.                                                         http://computercraft.info/wiki/Peripheral_(API)
  30.                                                     --]]
  31.                                                    
  32.             monitor.setTextScale(rozmiar) -- ustawiamy skale tekstu
  33.  
  34.             local czas = textutils.formatTime(os.time(),czy24h) --[[zanim wyswietlisz czas, musisz skorzystac z formatowania tekstu
  35.                                                     z api textutils; standardowo czas to ilość sekund (lub milisekund)
  36.                                                     liczona od pewnego punktu w przeszłości (w dekstopie jest to
  37.                                                     umowny rok 1970); tą wielką liczbę trzeba dopiero zamienić na lata,
  38.                                                     miesiące, dni, godziny, minuty i sekundy, formatTime() robi to automatycznie;
  39.                                                     w CC czas jest zwracany przez os.time()
  40.                                                     http://computercraft.info/wiki/Textutils_(API)
  41.                                                     http://computercraft.info/wiki/OS_(API)
  42.                                                 --]]
  43.                                                
  44.             local dlugoscTekstu = string.len(czas) --[[metoda string.len(string), zwraca nam ilość znaków zapisanych w zadanej zmiennej, potrzebne nam to będzie
  45.                                                 do wyśrodkowania tekstu na ekranie (musimy wiedzieć jak on jest długi)
  46.                                                 http://www.lua.org/manual/5.1/manual.html#5.4
  47.                                                 --]]
  48.             local szerokoscEkranu, wysokoscEkranu = monitor.getSize() --[[term.getSize() zwraca nam wysokosc i szerokosc aktualnej konsoli lub monitora; aby dowiedzieć się więcej
  49.                                                 o tym jak funkcja może zwracać wiele zmiennych, obejrzyj mój tutorial o funkcjach
  50.                                                 http://computercraft.info/wiki/Term_(API)
  51.                                                 --]]
  52.                                                
  53.             local x = ((szerokoscEkranu - dlugoscTekstu) / 2) + 1 --[[wyliczamy początek drukowanego tekstu, jest to odległość od lewej krawędzi ekranu monitora, którą dopasowujemy tak,
  54.                                                             aby tekst był mniej więcej na środku; narysuj sobie na kartce dwa prostokąty, jeden duży, a drugi mniejszy w środku pierwszego;
  55.                                                             następnie zastanów się jak wyznaczyć odległość od lewej i górnej krawędzi, mając do dyspozycji długości boków małego
  56.                                                             i dużego prostokąta
  57.                                                             --]]
  58.             local y = ((wysokoscEkranu - 1) / 2) + 1 -- jak wyżej tylko, że odległość od górnej krawędzi (wysokość litery to zawsze jedna jenostka)
  59.            
  60.             -- tzw. pętla nieskończona, ponieważ warunek jest zawsze spełniony i pętla będzie się kręcić bez końca
  61.             while true do
  62.                 monitor.clear() --czyści wyświetlacz monitora, aby usunąć starą godzinę
  63.                 monitor.setCursorPos(x,y) -- ustawia kursor na właściwej, wyliczonej pozycji
  64.                
  65.                 monitor.write(czas) -- wydrukowuje aktualny czas na ekranie
  66.                
  67.                 czas = textutils.formatTime(os.time(),czy24h) -- uaktualnia czas
  68.                
  69.                 os.sleep(0) -- bez oczekiwania trwającego 0 sekund, nasza pętla nieskończona się zakończy :P i wcale to nie jest źle, lecz wręcz dobrze pomyślane ;)
  70.             end
  71.            
  72.         -- jesli z zadanej strony nie jest podlaczony monitor
  73.         else
  74.             print("Z "..strona.." strony nie jest podlaczony monitor!")
  75.            
  76.         end
  77.        
  78.     -- jesli z zadanej strony nie jest podlaczone zadne urzadzenie
  79.     else
  80.         print("Podlacz urzadzenie do "..strona.." strony komputera!")
  81.  
  82.     end
  83.  
  84. -- jesli ktorys z argumentow jest bledny...
  85. else
  86.     print("Podales bledne argumenty startowe")
  87.     print("Wlasciwy format: zegar strona(left,right,top,back,front,bottom) rozmiar(0.5-5.0) czy24h(24/12)")
  88.     print("np.: zegar left 2 24")
  89. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement