Programovací výzva Java: Jednoduchá hra Tic-Tac-Toe

Doug Lowe

Vaším úkolem, pokud se ho rozhodnete přijmout, je vytvořit program Java, který může s uživatelem hrát hru Tic-Tac-Toe.



Jak asi víte, Tic-Tac-Toe je jednoduchá hra, která se obvykle hraje s papírem a tužkou. Nejprve na papíře vytvoříte jednoduchou mřížku 3 x 3. Poté dva hráči střídají tahy označením Xs a Os na prázdných místech na mřížce. Vyhrává první hráč, který udělá tři své značky v horizontální, vertikální nebo diagonální řadě. Pokud jsou všechny mezery v mřížce zaplněny dříve, než kterýkoli hráč označí tři v řadě, hra je remízou.



Zde jsou pravidla a pokyny pro tuto výzvu:

  1. Počítač hraje proti člověku. Člověk se pohybuje první a je X. Počítač je O.



  2. Program by měl začít zobrazením krátké uvítací zprávy a poté by měl hráče vyzvat k prvnímu tahu. Například:

    Welcome to Tic-Tac-Toe. Please enter your first move:
  3. Chcete-li určit čtverce mřížky, použijte písmena A, B a C pro sloupce a číslice 1, 2 a 3 pro řádky, například takto:

     A1 B1 C1 A2 B2 C2 A3 B3 C3

    Aby tedy člověk umístil X do levého horního čtverce, lidský hráč by zadal text A1, když program vyzve hráče k pohybu.



    Jakmile člověk vstoupí do pohybu, měl by program zobrazit aktuální stav desky na konzole.

  4. Pomocí X označte hry člověka a O značte hry počítače. Pomocí znaků ve svislém pruhu (na klávesnici se znakem zpětného lomítka, těsně nad klávesou Enter) a spojovníků nakreslete desku v jednoduché mřížce.

    Například pokud uživatel zadal A1 jako svůj první tah, program zobrazí následující:

     X | | ---|---|--- | | ---|---|--- | |
  5. Po pohybu člověka program určí jeho pohyb, oznámí ho uživateli, zobrazí aktualizovanou tabuli a poté vyzve k pohybu uživatele.

    Může se zobrazit například toto:

    I will play A2: X | O | ---|---|--- | | ---|---|--- | | Please enter your next move:
  6. Hra pokračuje, dokud jeden hráč nezasáhne tři v řadě nebo dokud nejsou všechna pole vyplněna žádným vítězem. Váš program musí být schopen určit, zda některý z hráčů zaznamenal tři v řadě a vyhrál hru. (Toto je nejtěžší část této programové výzvy.)

  7. Po skončení hry program zobrazí zprávu označující výsledek hry: Porazili jste mě! pokud vyhraje lidský hráč, porazím vás! pokud počítačový hráč vyhraje, nebo je to remíza! pokud hra skončí remízou.

  8. Lidští a počítačoví hráči mohou hrát pouze na polích, která ještě nejsou obsazena žádným hráčem.

  9. Program končí, když hru vyhraje buď hráč, nebo je hra remízou. Pokud chcete hrát znovu, musíte program spustit znovu.

Všimněte si, že můžete libovolně použít jakoukoli metodu, kterou chcete určit, jak má počítač provádět své pohyby. Navrhuji, abyste nechali počítač vždy hrát na prvním prázdném políčku. To samozřejmě není nejlepší způsob, jak hrát Tic-Tac-Toe, a nebudete mít žádný problém porazit počítač pokaždé, když budete hrát. Ale volba této jednoduché strategie hraní vám umožní zaměřit se na další aspekty programování, například na to, jak interně reprezentovat mřížku a jak určit, kdy hráč vyhrál hru nebo kdy hra skončila remízou.

(V programu Java Programming Challenge: Adding Arrays to the Simple Tic-Tac-Toe Program you are asked to come with with a better strategy for the program to determine its plays.)

Zde je příklad zobrazení konzoly pro celou hru:

Welcome to Tic-Tac-Toe. Please enter your first move:  A1  X | | ---|---|--- | | ---|---|--- | | I will play at A2: X | O | ---|---|--- | | ---|---|--- | | Please enter your next move:  B1  X | O | ---|---|--- X | | ---|---|--- | | I will play at A3: X | O | O ---|---|--- X | | ---|---|--- | | Please enter your next move:  C   1  X | O | O ---|---|--- X | | ---|---|--- X | | You beat me!

Zde je několik rad, jak začít:

  • Nejlepší způsob, jak reprezentovat mřížku, je pole. Prozatím použijte devět proměnných pojmenovanýchA1,A2,A3,B1,B2,B3,C1,C2, aC3.

  • Pokud používáteintzadejte pro proměnné mřížky, pak můžete použít 1 k označení, že čtverec obsahuje X a 2 k označení, že čtverec obsahuje O.

  • Osm možných řad může vést k výhře. Hráč vyhrává, pokud některá z následujících kombinací čtverců je buď 1 (pro X) nebo 2 (pro O):

    A1 – A2 – A3 A1 – B1 – C1 A1 – B2 – C3 B1 – B2 – B3 A2 – B2 – C2 A3 – B2 – C1 C1 – C2 – C3 A3 – B3 – C3
  • Existují dva způsoby, jak určit, zda je hra remízou. První je zkontrolovat všech devět čtverců: Pokud žádný z polí není prázdný a žádný z hráčů nevyhrál, hra je remíza. Druhým je spočítání tahů: Pokud bylo provedeno devět tahů a žádný z hráčů nevyhrál, hra je remíza.

Řešení této programovací výzvy najdete na kartě Stahování na webu Java All-in-One pro figuríny, Stránka produktu 4. vydání.

drogy. com identifikátor pilulky

Hodně štěstí!