Egzaminy Poprawkowe

27 08 2008

Dość ciekawa sprawa ponieważ nie zaliczyłem egzaminów, które wydawały się dla mnie proste, a zaliczyłem te, co do których miałem wątpliwośći.

Tak, tak. Czeka mnie poprawka z Algorytmów i Struktur Danych (sic!). Pani profesor nie podobały się moje zapisy. Nie brałem pod uwagę, że mogę tego nie zdać – a jednak.

Kolejny egzamin to Analiza Matematyczna. Nie tyle go nie zaliczyłem co nie mogłem do niego podejść (pozdrowienia dla mojego ćwiczeniowca od AM). Teraz mam nadzieję się poprawić ^^

Ostatni z niezaliczonych – Matematyka Dyskretna. To temat, w którym czuję się jak pływak w smole. Niby potrafi pływać, a jakoś mu nie idzie ;) Trochę pracy i będzie dobrze.

Tak więc chwilowo jestem na tyle zajęty aby nie móc pisać sensownego kodu ;) Mój brak aktywności koderskiej skutkuje również brakiem aktywności internetowej – w szczególności blogowej ;)





Skryptowanie w EasyUO

11 08 2008

Wstęp

Ten post troszkę odchodzi od tematyki programowania zwyłego. Mam nadzieję, że koledzy programiści nie zlinczują mnie za to ;)

Od dosc dlugiego juz czasu lubię sobie pograć w Ultimę Online. Tym, którzy grali kiedykolwiek nie trzeba tłumaczyć jakie nudne może być trenowanie postaci (koxanie :) ). W celu ułatwienia gry sobie i przyszłym pokoleniom ludzie stworzyli całe megabajty programów automatyzujących pewne czynności. Powstały jakieś proste języki skryptowe dzięki, którym można “rozkazywać” postaci.

Najbardziej znanym i lubianym jest EasyUO. Niewątpliwie też najbardziej rozbudowanym. Daje to możliwość oskryptowania czynności od najprostszych (jak ścinanie drzewa, aż nie zetnie się całego) po tak złożone jak wyszukiwanie pobliskich drzew, podchodzenie do nich i ścinanie oraz przy okazji podjadanie czegoś jak postać zgłodnieje.

Jak to w każdym programowaniu – czytelność kodu jest priorytetem. Co mi po tym, że działa, skoro aby coś zmienić muszę szukać odpowiedniej linijki dobrych kilka minut.

Ubolewanie

Niestety. Większość graczy UO nie miała styczności z programowaniem, a nawet jeśli mieli w liceum trochę Pascala to tylko widać na jak niskim poziomie oscyluje poziom nauczania programowania w szkołach. Mam tu na myśli głównie polskę ale skrypty ludzi z innych krajów nie są o wiele lepsze… O dobrze napisane skrypty w internecie trudno, a przecież każdy serwer jest zupełnie inny i prawie zawsze trzeba dostosować skrypt do swoich potrzeb.

Oglądając skrypty co niektórych autorów przekonałem się dlaczego instrukcja goto jest tą-której-nazwy-nawet-się-nie-wymawia. Kod pociety przez kilka takich instrukcji na dodatek nie respektujący jakichś wcięć i nie mający jakiejś ładnej budowy czyta się makabrycznie. Problem w tym, że większość skryptów, które można znaleźć w internecie jest właśnie taka…

Wnioski

W ciągu wielu godzin spędzonych przed EasyUO celem napisania dobrego skryptu doszedłem do pewnego schematu, który powtarzam w większości skryptów. Czasem coś zmienię i obserwuję efekty.

Dobry skrypt powinien składać się z dwóch części:

  • ustawienia – tutaj użytkownik może ustawić sobie parametry sterujące skryptem. Część ta oczywiście nie jest obowiązkowa ponieważ nie zawsze jest co ustawiać ;)
  • pętla główna – tutaj dzieje się całe życie skryptu

Przy czym warto zaznaczyć, że pętla główna powinna być rzeczywiście pętlą, a nie dowodem na to jak bardzo nieczytelne jest goto.  Zazwyczaj pętla główna wygląda tak:

while #true
{
   ; czesc 1
   ; sprawdzanie stanu postaci itp.
   ; np. monitorowanie zdarzenia onhotkey
   ; lub też odczytywanie wartosci z menu

   ; czesc 2
   ; sprawdzanie czy aktualnie wykonywane zadanie
   ; zostalo juz zakonczone i jesli tak, to
   ; rozpoczecie wykonania od nowa
}

Zapewne w części drugiej po zakończeniu wykonywania jakiejś czynności znajdzie się jeszcze kawałek kodu odpowiedzialny za zjedzenie czegoś, bądź wywołanie umiejętności biernej (np. anatomia czy ukrywanie). Lub też oba. Nie można bowiem wykonać tych czynności podczas gdy postać już coś robi.

Ostatnio jeszcze tworzę sobie okienka do kontroli pracy skryptu za pomocą polecenia menu. Standardowo są to dwa przyciski – Pauza i Koniec. Nietrudno domyślić się do czego służą :) W zależności od sktyptu dodaję też inne kontrolki.

Na koniec jeszcze powiem, że bardzo dobrą praktyką jest stosowanie funkcji (czy jak je tam nazwać :)   )deklarowanych za pomocą słowa kluczowego sub:

sub Hello
   event sysmessage Hello World!
return

gosub Hello ; uruchomienie funkcji

Koniec

No, ponarzekałem trochę. Mam nadzieję, że obejrzy to choć jedna osoba skryptująca w EasyUO i choć jednej osobie pomoże pisać skrypty przyjazne dla środowiska :)





C++ Builder & Windows Manifest Utility

6 08 2008

Ostatnimi czasy więcej siedzę w Windowsie z przyczyn wakacyjnych – gram :P

Jednak pomiędzy graniem i obijaniem się wpadłem na pomysł stworzenia programiku do tworzenia i wciskania plików “.manifest” do programów napisanych w Borland C++ Builder. Zabrałem się więc do pracy i po kilku godzinach kombinacji efekt jest całkiem zadowalający.

Windows Media Utilty

Windows Manifest Utilty

Dodatkowo jest też opcja kompresowania programów za pomocą UPX. Program banalny w użyciu, ale dla pewności umieściłem w pliku REDME.txt instrukcję obsługi ;)

Program można ściągnąć TUTAJ.