Gymnázium, Praha 6, Arabská 14 předmět: Programování vyučující: Tomáš Obdržálek Piškvorky ročníkový projekt Le Hoang Nguyen, 1.E květen 2014 1
1. Úvod 1.1.Anotace Česky: Cílem mého projektu bylo vytvoření známé strategické hry Piškvorky. Cílem hry je získat nepřetržitou čáru svých pěti symbolů (X, O) v horizontálním, vertikálním nebo diagonálním směru. Hra se ovládá pomocí myši. Aplikace je graficky zpracovaná a umožňuje hru pouze pro dva hráče. English: The goal of my project was to create a well-known strategy game,,piškvorky also known as five-in-a-row. The goal of the game is to get a continuous line of your five symbols (X, O) in a horizontal, vertical or diagonal direction. The game is controlled with the mouse. The application is graphically processed and allows the game only for two players. 1.2 Prohlášení Prohlašuji, že jsem jediným autorem tohoto projektu, všechny citace jsou řádně označené a všechna použitá literatura a další zdroje jsou v práci uvedené. Tímto dle zákona 121/2000 Sb. (tzv. Autorský zákon) ve znění pozdějších předpisů uděluji bezúplatně škole Gymnázium, Praha 6, Arabská 14 oprávnění k výkonu práva na rozmnožování díla ( 13) a práva na sdělování díla veřejnosti ( 18) na dobu časově neomezenou a bez omezení územního obsahu. 1.3 Zadání projektu Funkce Grafické rozhraní Pole o velikosti 10x10 Rozpoznání konce hry 2
2. Hra 2.1 Princip hry a historie Hra piškvorky je strategická hra, ve které proti sobě hrají 2 hráči. Hraje se v neomezením čtvercovém poli, na kterém se oba hráči střídají s vykreslováním svého symbolu. Nejčastěji se jako symboly používají značky X a O. Cílem hry je získat nepřetržitou čáru svých pěti symbolů v horizontálním, vertikálním nebo diagonálním směru. Starší verze piškvorek je známá japonská stolní hra Gomoku. Na rozdíl od piškvorek se hraje Gomoku s černými a bílými kameny na dřevěné desce, která je omezená na pole o velikosti 15x15 průsečíků. Japonské slovo Gomoku, znamená 5 kamenů v řadě. Mezi další modifikace piškvorek patří i rendžu, šestvorky, pentago, atd. Autorem principu této hry není známý, ale první zmínky o obdobě piškvorek pocházejí z Číny, které jsou datované do období 2 000 před Kristem. 3. Samotná práce 3.1 Vzhled aplikace Pole o velikosti 10x10. Použité a nepoužité pole 3
3.2 Spuštění aplikace Žádný instalační balíček není za potřebí. Aplikace byla vytvořena do bylíčku JAR, lze ji spustit na počítači, jestli že obsahuje prostředí Java. 3.3 Ovládání hry Ovládání hry je velice snadné. Jediné, co je ke hře za potřebí je funkční počítačová myš. 3.4 Vytváření hry Celý projekt jsem dělal ve vývojovém prostřední NetBeans. Pro vytvoření grafického rozhraní jsem použil knihovnu Swing. Jedna z prvních věcí, kterou jsem udělal byla třída, do které jsem připsal objekty. 1. Hrací pole Poté jsem si udělal konstruktor, ve kterém jsem vše psal a nastavoval. Pomocí JFrame jsem vygeneroval pole. K vytvoření hracího pole jsem použil.setsize(, );, ve které jsem nastavil, jak bude okno velké. K vytvoření mřížky hracího pole jsem použil.setlayout(new GridLayout(, ));. A nakonec jsem použil setdefaultcloseoperation(jframe.exit_on_close);, které slouží k kompletnímu vypnutí celého okna. Ke kontrole použitých čtverečků sloužil cyklus, který kontroloval pole po každém tahu. Když byl čtvereček plný, nebyl už dále použitelný. 2. Čtverce K vytvoření čtverečků jsem použil JButton. Pro vytvoření čtverečků jsem použil cyklus, kdy se čtverečky vytvořily v hracím poli. Pro přidání čtverečků do pole byl za potřebí další cyklus, který čtverečky v poli vykreslí do hracího pole. 4
K zjištění, zda li je políčko použité nebo nepoužité, použil jsem rozhraní actionlistener, který se používá v JButttonu. 4.Střídaní hráčů Pomocí jednoduché ale dlouhé podmínky se určilo, kdy je hráč na řadě. Podmínku jsem sestavil pomocí lichého a sudého čísla. 5. Hledání pěti symbolů v řadě Vymýšlení těchto cyklů bylo bezpochyby nejtěžší a také zabralo nejvíce času. V cyklu, který vyhledává nepřetržitou čáru ve vertikálním směru, se přičítá hodnota + 1 k hodnotě a. V cyklu, který vyhledává nepřetržitou čáru v horizontálním směru, se přičítá hodnota +1 k hodnotě b. K vyhledání nepřetržité čáry v diagonálním směru sloužily dva cykly. Jeden cyklus vyhledával zprava do leva a druhý cyklus vyhledával zleva doprava. 6. Konec hry Pomocí předešlých cyklů podmínka rozpozná konec hry. Pomocí JOptionPane.showMessageDialog vytiskne na konci hry tabulku se symbolem vítěze. Pomocí dalšího cyklu začne nová hra. 3.5 Problémy Jeden z hlavních problému bylo vytvořit okno, ve kterém nacházejí. Grafiku v programování jsme probírali jen zřídka, proto jsem si musel pročíst pár stránek o JButtonu a JFrame. Další problém byly čtverečky, které byly stlačeny. Pokud se stane nějaká akce s objekty, slouží ke zpracování akce třída ActionListener. 5
4. Závěr Se svým projektem jsem zcela spokojený, protože jsem splnil všechny body v zadání, která jsem si stanovil. Tento projekt byl pro mě velmi důležitým, jelikož jsem se něco přiučil a také jsem si procvičil pole, cykly a podmínky. 4.1 Zdroje Popis Piškvorek : http://cs.wikipedia.org/wiki/pi%c5%a1kvorky NetBeans : https://netbeans.org/kb/ Java : http://docs.oracle.com/javase/7/docs/api/ Různé články o ActionListener, JButton, JFrame, apod. 6