Skip to content

Chess application written in Java with my friend on college

Notifications You must be signed in to change notification settings

TomKloucek/chess-desktop-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Šachy ♟️

chess

Autoři

Tomáš Klouček & Vladyslav Babyč

Téma

V jazyce Java s využitím grafického uživatelského rozhraní (GUI) napište program pro hru šachů pro dva hráče.

Cíl projektu

Cílem projektu je vytvořit aplikaci umožňující hrát hru šachy dvou hráčům přes síťové rozhraní. Dalším cílem pro studenty je naučit se kooperaci a programování většího projektu, naučit se programování v jazyku Java a grafické rozhraní pomocí frameworků (JavaFX, Swing).

Základní funkcionalita

  • hra dvou hráčů
  • člověk vs. člověk
  • hra člověk vs. počítač
  • kompletní kontrola pravidel hry
  • možnost uložení a načtení rozehrané partie
  • možnost manuálního umístění figur před zahájením hry
  • šachové hodiny
  • statistika hráčů
  • síťová hra

Uživatelská dokumentace

Naše aplikace je šachový klient, který umožňuje hrát šachy dle všech platných pravidel této hry. A to jak lokálně na jednom počítači ve formátu hráč proti hráči nebo hráč proti umělé inteligenci, tak i online s pomocí serveru. Tento serve udržuje jednotlivé roomky tzv. „místnosti“, ve které je připojena dvojice hráčů, která hraje proti sobě. Dále naše aplikace také umožňuje vytvořit vlastní šachovou pozici a následně ji rozehrát opět buď proti hráči nebo proti umělé inteligenci. Tuto šachovou pozici lze také uložit do souboru a později z tohoto souboru načíst. Nyní se pojďme podívat na jednotlivé komponenty aplikace podrobněji.

Hlavní menu aplikace vypadá následovně:

main_menu

Zde můžeme vidět několik velké množství tlačítek, která jsou pojmenovaná podle funkcionality, za kterou odpovídají.

První tlačítko hra po sítí je zodpovědná za připojení se k serveru, zařezení do fronty a po nalezení hráče za otevřerní hry, která je hostovaná na serveru v tzv. „místnosti“. Před započetím hry, se klient uživatele zeptá na jeho herní jméno a to následujícím způsobem:

name_question

Uživatel zadá své herní jméno po čemž se v případě dostupnosti serveru připojí na server, kde se mu otevře čekací dialog:

name_question

V opačném případě, pokud server není dostupný se mu otevře okno, které uživatele informuje o nedostupnosti serveru:

server_not_availible

V případě připojení na server druhého hráče, se otevře místnost pro šachovou hru, která vypadá následovně

Naše šachovnice bude vypadat následujicím způsobem:

game_window

V něm můžeme spatřit několik elementů takových jako uživatelská jména hráčů, šachové hodiny (které jsou v online hře nastaveny na výchozích 10 minut času pro každého hráče), okno s notací a samozřejmě šachovnici.

Po zvolení figurky se na šachovnici zobrazí možné tahy vybrané figurky, odpovídající pravidlům šachu:

game_window

Následovně hra probíhá dle klasického scénáře dokud nenastane remíza, nebo jeden z hráču neprohraje.

Po ukončení hry se uživateli zobrazí hláška, kdo vyhrál a bude odpojen od serveru, čímž se mu také zavře okno s šachovou hrou a otevře hlavní menu.

end_of_game

Dále se podíváme na tlačítko Hra s počítačem. Toto tlačítko umožňuje spustit hru s počítačem. S předem navoleným časovým limitem pro každého hráče. Toto nastavení se dá měnit uvnitř šachového klienta po kliknutí na tlačítko nastavení a následně na tlačítko změnit délku hry.

Hra v tomto módu probíhá stejně jako v síťové hře, akorát, že proti hráči hraje umělá inteligence. Hra končí za stejných podmínek jako v přechozím herním režimu.

Další režim hry je PvP. Jedná se o klasickou implementaci lokální hry v jednom šachovém klientu, kdy proti sobě hrají dva hráči na jednom počítači. Ukončovací podmínky jsou opět stejné.

Tlačítko Statistiky odpovídá za načtení statistik jednolivého hráče z herního serveru nebo za načtení veškerých her, které byly na serveru odehrány. Pro výběr toho co si uživatel chce zobrazit je vykresleno speciální okno:

statistics_dialogue

Pokud uživatel zvolí první možnost čili osobní statistika, bude vyzván k zadání jména hráče, kterého si chce zobrazit:

name_question

Poté se uživateli zobrazí okno se statistikou

statistics_window

Když uživatel klikne na tlačítko: Všechny hry, tak se mu zobrazí okno s nabídkou her, které si může prohlédnout:

game_history

Poté uživatel může kliknout na jednotlivou hru a tam se mu zobrazí toto okno se dvěmi tlačítky, kterými může průběh hry posouvat a zobrazovat si tak tahy, které proběhly ve hře:

game_browser

Tlačítko Editor, otevírá rozhraní, ve kterém si uživatel může vytvořit vlastní šachovou pozici a následně ji rozehrát proti počítači, proti reálnému hráči lokálně, nebo si tuto pozici může uložit toto rozhraní vypadá následovně:

editor

Na pravé straně můžeme vidět tlačítka odpovídající za výše popsanou funkcionalitu.

Pokud uživatel chce umístit figurku na šachovnici, musí kliknout na políčko kam figurku chce umístit na což se mu zobrazí dva dialogy, jeden pro zvolení barvy figurky:

choose_color_of_piece

a druhý pro zvolení požadované figurky:

choose_piece

Dalším tlačítkem je tlačítko, které slouží pro načtení pozice, ze souboru, do kterého uživatel uložil hru, viz výše popsané možnosti.

Po kliknutí na toto tlačítko stejně tak jako po kliknutí na tlačítko exportuj šachovnici pro pozdější načtení se zobrazí tento dialog:

file_browser

Ve kterém si uživatel vybere soubor, ze kterého se mu načtě pozice.

editor_preview

Posledním tlačítkem je Nastavení. Název je vypovídající, po kliknutí na toto tlačítko se zobrazí menu, ve kterém si uživatel zvolí co chce nastavit

settings

Uživatel si může nastavit barvu políček jak bílé tak černé barvy,

color_settings

délku trvání her, které se budou odehrávat lokálně

time_settings

a nakonec vzhled šachových figurek.

time_settings

Pro uložení nastavení je potřeba zvolit požadované nastavení a pak okno s nastavením jen zavřít. Následně se pak všechny provedené změny zobrazí v šachovém klientu.

Technická Dokumentace

Technická dokumentace je vygenerována v JavaDoc a nachází se v repositáři ve složce javadoc.

UML Diagram

V současné době neobsahuje všechny třídy, v budoucnu přibydou třídy, které budou mít podobné názvy těmto:

chessTimer s metodami, které budou umožňovat sledování času a přepínání hodin, při změně tahu

historyManagement s metodami, které budou umožňovat zobrazit odehranou hru uživatele

userManagement s metodami, které budou umožňovat založení účtu a hru pod daným účtem

chessServer s metodami, které budou umožňovat síťovou hru

UML

About

Chess application written in Java with my friend on college

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages