01 sierpnia 2008

Pozdrowienia z Bułgarii – wstawka informatyczna

Na początek wyjaśnienie – nie jestem powalony. Tzn. pewnie jestem, w wielu różnych sprawach. Ale nie do końca jestem powalony w kwestii informatyczno-programistycznej, ani też pracoholiczej (jest takie słowo?). Generalnie – to nie jest tak, że wyjechałem na wakacje tylko po to, by cierpieć i tęsknić za robotą. Bynajmniej.

Ja po prostu lubię programować. Naprawdę to lubię, uważam to za świetną zabawę, gdy trzeba coś napisać od zera, znaleźć rozwiązanie jakiegoś problemu. To, że programowanie jest moim zawodem nie ma specjalnego znaczenia – i tak to lubię i robię to dla własnej przyjemności. Tylko, że dawno nie miałem na to czasu.

A od tego właśnie są wakacje – nie tylko, żeby leżeć na plaży, pływać w morzu i zwiedzać inne krainy, ale też, żeby robić to, na co się nie ma czasu na co dzień, a co się lubi. Dla mnie jest to czytanie książek (czytam "Mroczną Wieżę" Kinga), ale też, jak się okazuje, klepando.

Rok i dwa lata temu też mnie to dopadło. Dwa lata temu chcica na zaprogramowanie czegoś złapała mnie, gdy pracowaliśmy w fabryce sałatek. Nie miałem wtedy żadnej możliwości zaspokojenia jej, więc tylko rozrysowałem i rozplanowałem program w Adzie 95 do symulowania procesu, jakżeby inaczej, robienia sałatki. Przez całą nocną zmianę w fabryce w Bourne to wszystko rozkminiałem, a gdy wróciłem – zapisałem.

Rok temu, w Bristolu, pewnego dnia złapała mnie chcica na napisanie programu, udowadniającego tezę amerykańskich naukowców, że gdyby w tekście w każdym słowie pomieszać litery, pozostawiając tylko pierwszą i ostatnią, to dałoby się to odczytać. Złapało mnie to do tego stopnia, że pewnego dnia po prostu zająłem kompa w bibliotece i zacząłem go pisać. Niestety, dostępny był tylko DEV-C++, więc nie zdążyłem.

Wczoraj natomiast... napisałem ostatnio, że złapała mnie wena do pisania systemu RPG. Kiedyś wspomnę o nim szerzej, natomiast na razie, gdy już zacząłem rozważać problem umiejętności i zdolności postaci zdałem sobie sprawę, że nie zabrałem kostek. Co to jednak za problem, jak mam laptopa, prawda? Programy symulujące rzuty kośćmi pisałem nie raz, chyba w każdym możliwym języku – jeden w Visual Basicu, potem w Pascalu, w C, a teraz przyszła kolej na Javę.

A gdy napisałem ten najprostszy, konsolowy, postanowiłem to pociągnąć dalej, wpadłem w ciąg dodawania kolejnych funkcji i opcji, i tak wyszło to, co wyszło – cały program wraz z kodem źródłowym znajduje się tutaj. A ja przedstawiam krótko jego możliwości:

ROLLER

Po lewej stronie znajdują się przyciski najczęściej używanych kostek. Można w nie klikać, a można używać przycisków funkcyjnych, od góry do dołu kolejno of F1 do F12. Jest to prawie intuicyjne, z wyjątkiem F1 (k100) oraz f11 (k20).

Na górze znajdują się opcje dodatkowe. Opcja premium oznacza rzuty premiowane, gdzie najwyższy wynik na kostce owocuje przerzutem. Opcja wild die to to samo, co rzut premiowany, ale tutaj dodatkowo wynik najniższy oznacza zabranie z puli najwyższego osiągniętego wyniku (np. rzut 3k6 o wynikach 4, 5 i 1 zamiast wyniku 10 daje 5, bo kostka, na której wypadło 5 jest ignorowana). Opcję premium można ustawić klawiszem SHIFT, wild die – CTRL.

Opcja aggregate oznacza sumowanie kolejnych wyników – gdy jest włączona, wynik kolejnego rzutu jest dodawany do poprzedniego. Można ją uruchomić i wyłączyć CAPS LOCKiem, ale też można użyć jej, gdy rzuca się z przytrzymanym ALTem.

Pole number of rolls oznacza ilość rzucanych kostek. Można tam wpisać dowolną wartość całkowitą dodatnią, ale można też wcisnąć dowolną cyfrę od 0 do 9 (gdy focus nie jest na tym polu), by automatycznie ją tam umieścić. I tak np. wciśnięcie SHIFT, a potem 6, a potem F6 powoduje wykonanie premiowan ego rzutu 6k6.

Klawisz ENTER powoduje powtórzenie ostatniego rzutu. A dokładniej – wykonanie rzutu, zapisanego kodem w polu tekstowym na dole okienka. I to jest prawdziwe klu programu, od którego właściwie zacząłem pisanie. W linii tej można wpisać nawet bardzo skomplikowane wzory rzutów, a program wykonuje je, zachowując kolejność działań. Tak więc można wpisać tam wspomniane przykładowe 6k6, ale też można wpisać k6+2, 2k20-5, 2*k8 a nawet 4*2k20-(k100+5k10)*2 ! Program jest w miarę idiotoodporny (choć wiem, że sama taka deklaracja działa jak płachta na byka i zaraz co złośliwsi rzucą się do wyłapywania bugów ;), ale jestem otwarty na wszelkie zgłoszenia błędów.

***

Tyle na dziś z Bułgarii. W kwestii wakacjowania nie ma wiele do opowiadania – ostatnie dwa dni spędziliśmy piękąc się na plaży, walcząc z falami i cykając zdjęcia. Za to za niecałe trzy godziny ruszamy autobusem do Istambułu, więc będzie o czym opowiadać.

Tymczasem niezmiennie pozdrawiamy :)

Brak komentarzy: