Stránka sa načítava, prosím čakajte…
© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 4. 5. 2024.
Dátum: 1. 2. 2013, pred viacerými rokmi, aktualizované: 31. 7. 2020, pred štyrmi rokmi
Tento príklad ukazuje najjednoduchšie spôsoby uloženia a čítania polohy robota do/zo súboru. Na prácu so súborom je použitá trieda Súbor
programovacieho rámca GRobot, ktorá zakrýva komplikovanejší mechanizmus Javy.
Na zmenu polohy (aby malo jej ukladanie zmysel) slúži metóda klik
v obsluhe udalostí (čiže polohu robota je možné meniť myšou). Poloha je prečítaná pri štarte aplikácie – na začiatku konštruktora a zapísaná pri ukončení aplikácie – v metóde ukončenie
v obsluhe udalostí (oboje je označené značkou /*#*/
).
Prvá ukážka ukladá (a číta) polohu do textového súboru vo forme dvojice čísiel.
Poznámka: Ak súbor poloha.txt
nevytvoríte vopred, tak pri prvom spustení programu uvidíte červený text oznamujúci chybu. Ak nechcete, nemusíte tomu venovať žiadnu zvýšenú pozornosť.
~
import knižnica.*; public class HlavnáTrieda extends GRobot { private HlavnáTrieda() { čítajPolohu(); /*#*/ zobraz(); new ObsluhaUdalostí() { @Override public void klik() { skočNaMyš(); } @Override public void ukončenie() { zapíšPolohu(); /*#*/ } }; } public void zapíšPolohu() { try { súbor.otvorNaZápis("poloha.txt"); súbor.zapíš(polohaX()); súbor.zapíš(polohaY()); } catch (Exception e) { Farba záloha = Svet.farbaTextu(); Svet.farbaTextu(červená); Svet.vypíšRiadok(e.getMessage()); Svet.farbaTextu(záloha); } try { súbor.zavri(); } catch (Exception e) { } } public void čítajPolohu() { try { súbor.otvorNaČítanie("poloha.txt"); Double x = súbor.čítajReálneČíslo(); Double y = súbor.čítajReálneČíslo(); skočNa(x, y); } catch (Exception e) { Farba záloha = Svet.farbaTextu(); Svet.farbaTextu(červená); Svet.vypíšRiadok(e.getMessage()); Svet.farbaTextu(záloha); } try { súbor.zavri(); } catch (Exception e) { } } public static void main(String[] args) { Svet.použiKonfiguráciu(); new HlavnáTrieda(); } }
Druhá ukážka používa na uloženie (a čítanie) polohy mechanizmus vlastností. Kód sa jemne zjednoduší. Všetky zmeny oproti prvej ukážke sú označené komentármi.
Poznámka: Pre súbor poloha.cfg
v kontexte jeho vytvorenia platí to isté, čo pre súbor poloha.txt
v prvej ukážke.
~
import knižnica.*; public class HlavnáTrieda extends GRobot { private HlavnáTrieda() { čítajPolohu(); /*#*/ zobraz(); new ObsluhaUdalostí() { @Override public void klik() { skočNaMyš(); } @Override public void ukončenie() { zapíšPolohu(); /*#*/ } }; } public void zapíšPolohu() { try { súbor.otvorNaZápis("poloha.cfg"); // (zmena: upravený názov súboru) súbor.zapíšVlastnosť("poloha", poloha()); // (zmena: uloženie polohy ako vlastnosti) } catch (Exception e) { Farba záloha = Svet.farbaTextu(); Svet.farbaTextu(červená); Svet.vypíšRiadok(e.getMessage()); Svet.farbaTextu(záloha); } try { súbor.zavri(); } catch (Exception e) { } } public void čítajPolohu() { try { súbor.otvorNaČítanie("poloha.cfg"); // (zmena: upravený názov súboru) Bod b = súbor.čítajVlastnosť("poloha", (Poloha)poloha()); // (zmena: prečítanie polohy ako vlastnosti) skočNa(b); // (zmena: skok na objekt prečítanej polohy) } catch (Exception e) { Farba záloha = Svet.farbaTextu(); Svet.farbaTextu(červená); Svet.vypíšRiadok(e.getMessage()); Svet.farbaTextu(záloha); } try { súbor.zavri(); } catch (Exception e) { } } public static void main(String[] args) { Svet.použiKonfiguráciu(); new HlavnáTrieda(); } }
Prvé spustenie (prvého variantu).
Ďalšie spustenie s prečítanou zmenenou polohou.
Okrem týchto spôsobov sa dá využiť mechanizmus registrácie a ukladania konfigurácie robota – pozri napríklad tu: Svet.registrujRobot
. Súbor automatickej konfigurácie však môže byť zbytočne veľký, pretože automatická konfigurácia ukladá všetky vlastnosti robotov bez ohľadu na to, či sú používané, alebo nie.