2010-02-19

[Java] Gra w Kółko i Krzyżyk - 7. Diagram przebiegu (UML)

Diagram przebiegu pokazuje w nieco inny sposób zarządzanie ruchem w trakcie gry niż to było widoczne na diagramie aktywności. Diagram ten ukazuje interakcję jaka zachodzi między poszczególnymi elementami programu. Widać tutaj w jakim celu i w jakim momencie aplikacja korzysta z klasy Walidacja. Jest ona używana zarówno w klasie Gra (do sprawdzania czy wygrał któryś z graczy oraz czy są jeszcze wolne pola) jak również w klasie Komputer (do sprawdzenia jaki ruch jest najkorzystniejszy). Diagram ukazuje również kiedy i w jaki sposób zaznaczane są pola na Planszy oraz w jaki sposób kończy się rozgrywka.



Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-16

[Java] Gra w Kółko i Krzyżyk - 6. Diagramy stanowe (UML)

Diagram stanowy przycisku pokazuje jakie może przyjąć stany przycisk znajdujący się na planszy.


W pierwszym etapie, po uruchomieniu gry, każdy z dziewięciu przycisków jest przyciskiem aktywnym i nie posiada żadnego napisu (jest pusty – bez tekstu). W czasie gry każdy z przycisków może przyjąć jeszcze dwa różne stany – może stać się nieaktywny i otrzymać etykietę tekstową (stanie się tak jeśli gracz kliknie lewym klawiszem myszki w aktywny przycisk) lub też może stać się nieaktywny bez etykietki tekstowej (jeśli gra zakończy się zwycięstwem jednego z graczy to reszta aktywnych przycisków przyjmie właśnie taki stan).

2010-02-15

[Java] Gra w Kółko i Krzyżyk - 5. Diagramy aktywności (UML)

Komputer w naszej aplikacji Kółko i Krzyżyk dąży przede wszystkim do zwycięstwa – dlatego też pierwszą czynnością, którą powinien wykonywać przed każdym ruchem jest sprawdzenie czy może w danym momencie zakończyć partię zwycięsko. Diagram aktywności przedstawiony poniżej ukazuje schemat działania gracza komputerowego.


2010-02-14

[Java] Gra w Kółko i Krzyżyk - 4. Diagram klas (UML)

Diagram klas jest jednym z najpopularniejszych w języku UML. Opisuje on klasy składające się na system oraz zależności występujące między nimi.
Aplikacja składa się z klas przedstawionych na rysunku:


Główną klasą, za pomocą której uruchamiamy program jest Gra. Jest to klasa, która steruje grą. W niej tworzymy między innymi graczy oraz planszę. Nadajemy graczom nazwy, definiujemy jakimi znakami będą operować oraz ustalamy który z graczy pierwszy zaczyna rozgrywkę. Klasa ta sprawdza przed każdym ruchem gracza czy gra może być kontynuowana (czy jest zwycięzca oraz czy są wolne pola na planszy). Klasa Gra odpowiada również za zmianę gracza po każdym ruchu.
Klasa Plansza odpowiada za wyświetlenie planszy na ekranie, zawiera tablicę obiektów typu Znak, które są polami planszy. Jest to dziewięć przycisków za pomocą których możliwe jest wykonanie ruchów przez graczy. Klasa ta zawiera w sobie inna klasę – BL – która pomaga sprawnie zarządzać przyciskami zgodnie z tym jaki ruch wykonali gracze (m.in. wyświetlać znak X lub O).
Klasa Walidacja sprawdza czy jest zwycięzca pojedynku oraz czy są wolne pola na planszy i możliwe jest kontynuowanie gry. Klasa daje również informacje graczowi wykonującemu ruch, które pole może dać mu zwycięstwo, które pole może dać zwycięstwo przeciwnikowi oraz jakie jest jeszcze możliwe rozwiązanie (jeśli jest).
Program zawiera również abstrakcyjną klasę Gracz, którą dziedziczą klasy Czlowiek oraz Komputer. Metoda setZnak() klasy Gracz (oraz klas potomnych) może wyrzucać
wyjątek klasy ZlyZnakException dziedziczącej po klasie Exception. Jest to zabezpieczenie przed ustawianiem innych znaków niż „X” i „O”.
Aplikacja zawiera również klasę Console pochodzącą z książki „Thinking in Java”, której użyłem w celu wyświetlenia aplikacji w okienku apletu.

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-13

[Java] Gra w Kółko i Krzyżyk - 3. Diagram przypadków uzycia (UML)

Diagram przypadków użycia jest doskonałym punktem startowym etapu tworzenia i projektowania systemu zatem przyda się on przy rozpoczynaniu projektu, określaniu wymagań systemu oraz komunikacji z użytkownikami systemu. W skrócie rzecz ujmując diagram przypadków użycia opisuje co system powinien robić.
Diagram taki składa się m.in. ze schematycznych postaci lub prostokątów (aktorów), elips (przypadków użycia), ciągłych linii oznaczających komunikację, strzałki przerywanej opisującej zależności (include, extend) oraz strzałki ciągłej opisującej uogólnienia (dziedziczenie).

2010-02-09

[Java] Gra w Kółko i Krzyżyk - 2. Założenia

Przed przystąpieniem do jakiejkolwiek zabawy z kodem dobrze jest pozbierać myśli i przelać je na papier. Nawet najbardziej podstawowe rzeczy warto jest sobie rozpisać - to później może pomóc w pracy a na pewno nie zaszkodzi. Dotyczy to nie tylko tej gry ale każdego innego projektu.

Zasada działania gry


Gra, o czym chyba każdy wie, polega na stawianiu znaków - kółka (O) i krzyżyka (X) - na planszy składającej się z dziewięciu pól:

012
345
678

Gra toczy się do momentu wyczerpania wolnych pól (0-8) lub gdy jeden z graczy ustawi trzy znaki (kółka lub krzyżyki) obok siebie w pionie, poziomie lub po przekątnej. Gra przeznaczona jest dla dwóch graczy, którzy wykonują po jednym ruchu na przemian.

2010-02-07

[Java] Gra w Kółko i Krzyżyk - 1. Wstęp

Odkopałem dziś małą grę (Kółko i Krzyżyk), którą jakiś czas temu "popełniłem" za pomocą Javy na zakończenie kursu z programowania obiektowego. Zrobiłem do tej gry również małą specyfikację. Cały mój wysiłek, który włożyłem w ten mały projekt zakończył się co prawda zdobyciem dyplomu ale sama gra nigdy nikomu się nie przydała. Zagrało w nią kilka osób (które do tego zmusiłem) a na kod źródłowy patrzyłem jedynie ja i Pan egzaminator.
Uznałem, że to trochę szkoda i że fajnie byłoby udostępnić ją tutaj - może komuś się przyda w zrozumieniu podstaw projektowania obiektowego na przykładzie języka Java. Ledwo udało mi się znaleźć ten programik co jeszcze bardziej umocniło mnie w przekonaniu, że warto go opublikować - również w celu archiwizacji. ;)
Jeśli wygooglaliście ten post bo też macie takie "zadanie domowe" na zaliczenie to chciałbym Wam doradzić byście spróbowali najpierw sami zmierzyć się z tym tematem. Proces tworzenia może być bardzo przyjemny a efekt może przynieść wiele radości - jeśli w całości dokonacie tego sami. Poza tym projekt nie jest idealny - działa ale na pewno można go wykonać lepiej.
Zaprezentuję wszystko zaczynając od dokumentacji - dopiero na końcu (jako efekt finalny) udostępnię grę, w którą będzie można zagrać i którą będzie można ściągnąć i obejrzeć "od środka" (udostępnię oczywiście kod źródłowy). Dokumentacja składać się będzie z założeń i kilku diagramów UML, które mam zamiar tutaj przenieść w ciągu tego tygodnia.

Podoba Ci się ten wpis? Kliknij w reklamę. :)

2010-02-04

jQuery + Greasemonkey na przykładzie Flickr'a

Istnieje możliwość tworzenia skryptów do Greasemonkey w jQuery - to dla mnie bardzo dobra nowina bo odkąd poznałem jQuery pisanie w czystym javascript'cie jakoś mnie nie cieszy. ;)
Aby skorzystać w GM (Greasemonkey) z jQuery wystarczy wpisać w skrypcie:
// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded
function GM_wait() {
 if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
 else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

// All your GM code must be inside this function
function letsJQuery() {}

źródło: http://joanpiedra.com/jquery/greasemonkey/
Wpadłem na to rozwiązanie logując się po raz setny do pewnego portalu, do którego mam koło dwudziestu różnych loginów. Aby się tam zalogować trzeba wypełnić trzy pola, co w żaden sposób nie dało się zapamiętać w przeglądarce. W pewnym momencie miałem już tego kompletnie dość - postanowiłem zrobić coś, co ułatwi mi nieco życie. Z pomocą przyszedł mi tu właśnie GM i jQuery - pamiętają za mnie wszystkie moje loginy. :]