Skuadak - program do rozdzielania składów

poniedziałek, 20 czerwca 2011
Jakiś czas temu mój znajomy poprosił mnie o napisanie programu, służącego do rozdzielania grupy zawodników grających w piłkę nożną na dwa względnie równe składy. Prośba ta świetnie współgrała w czasie z chęcią nauczenia się przeze mnie języka Python i dowolnej biblioteki umożliwiającej tworzenie interfejsu graficznego. Jest to moja pierwsza aplikacja stworzona w tym języku.


Działanie programu
Program otrzymał nazwę "Skuadak", a jego działanie jest następujące:
Użytkownik ma możliwość stworzenia małej bazy zawodników poprzez ich dodawanie, usuwanie i edycję. Poprzez edycję rozumie się określenie nazwy gracza, ocenę jednej z czterech umiejętności (Opanowanie, Sprawność fizyczna, Technika i Zaangażowanie) oraz ustalenie pozycji na jakiej czuje się najlepiej. Użytkownik definiuje również informacje na temat danego spotkania, tzn. miejsce rozgrywek, datę oraz godzinę. Następnie dodaje wybranych zawodników (którzy potwierdzili swój udział) do wydarzenia i generuje składy. Algorytm stara się dobrać jak najbardziej zbliżone do siebie umiejętnościami zespoły. Ponadto program generuje kod z drużynami, sfromatowany specjalnie do wklejenia na forum, opartym na skrypcie phpBB. Dzięki temu zautomatyzowane zostało również informowanie zawodników o składach i terminie spotkania.

Screen 1: Okno główne programu
Specyfikacja
Jeśli chodzi o to, co jest pod maską, to aplikacja została napisana w języku Python 2.6.6. Jako bibliotekę do interfejsu graficznego użyłem pyQT4. Jeśli ktoś spyta "dlaczego akurat pyQT?", odpowiem, że po prostu pierwsze wpadło mi pod rękę, a dokumentacja pozwoliła na natychmiastową pracę; po kilku godzinach pisało się przyjemnie i praca szła do przodu. Edytor, którego używałem to gedit, z podświetlaniem składni, bez jej uzupełniania. Ogólnie w pewnym momencie zabrakło mi tego elementu ;)
Całego GUI'a klepałem "z ręki", bez pomocniczych narzędzi typu QtDesigner. Uważam, że w ten sposób programista ma doskonałą okazję do poznania danej biblioteki i o ile w przypadku pisania któregoś programu z rzędu jest to nieefektywne, to na pierwszy raz moim zdaniem jest to świetne rozwiązanie.

Screen 2: Okno z wygenerowanymi drużynami.
Było to moje pierwsze starcie z tym językiem, ale bardzo przyjemne. Starałem się podzielić kod na logiczne części, w oddzielnych plikach oraz dobrze go wykomentować. Próbowałem także trzymać się zasad KISS i DRY, lecz już teraz wiem, że w jednym miejscu to mi się nie udało (a raczej nie chciało ;)).

"Peryferia"
Przy okazji skorzystałem z tzw. Project Hosting jakim jest Google Code. Bardzo ciekawe narzędzie do zarządzania projektem - konkurencyjne do GitHuba i innych. Polecam.

Dodatkowo poznałem narzędzia do kompilowania skryptu *.py na *.exe. Potrzebowałem tego w celu ostatecznego przeportowania aplikacji na systemy z rodziny Windows - docelowa platforma użytkowania. Z pomocą przyszło py2exe. Konfigurację setup.py dla py2exe przygotował Katharsis, dzięki czemu wynikowy plik *.exe ważył 8MB zamiast 20, za co jestem bardzo wdzięczny.
Liczba rewizji stanęła na numerku 36 i wydaje mi się, że w przypadku tak małego projektu, jest to liczba optymalna.

Hiperłącza
Do nauki pyQT polecam dwie strony:

Strona z projektem na Google Code, gdzie można poczytać kod jest tutaj.
Aplikację dla Windowsa można pobrać stąd.

0 komentarze:

Prześlij komentarz