Izazov za programiranje Java: Jednostavna igra krpelja-takta

Napisao Doug Lowe

Vaša bi misija, ako ga odlučite prihvatiti, je stvaranje Java programa koji s korisnikom može igrati igru ​​Tic-Tac-Toe.

Kao što vjerojatno znate, Tic-Tac-Toe je jednostavna igra koja se obično igra papirom i olovkom. Prvo napravite jednostavnu rešetku 3 x 3 na papiru. Tada dva igrača izmjenjuju okrete označavajući X i Os u praznim prostorima na mreži. Pobjeđuje prvi igrač koji napravi tri svoja obilježja u vodoravnom, okomitom ili dijagonalnom redu. Ako su svi prostori u mreži ispunjeni prije nego što bilo koji igrač označi tri u nizu, igra je neriješena.



Evo pravila i uputa za ovaj izazov:

  1. Računalo igra protiv čovjeka. Čovjek se prvi kreće i X je. Računalo je O.

  2. Program bi trebao započeti prikazivanjem kratke poruke dobrodošlice, a zatim bi igrač trebao zatražiti njegov prvi potez. Na primjer:

    Welcome to Tic-Tac-Toe. Please enter your first move:
  3. Da biste odredili kvadrate mreže, upotrijebite slova A, B i C za stupce, a brojeve 1, 2 i 3 za retke, ovako:

     A1 B1 C1 A2 B2 C2 A3 B3 C3

    Dakle, da bi X stavio u gornji lijevi kvadrat, ljudski igrač bi ušao u tekst A1 kada program od igrača zatraži potez.

    Nakon što čovjek uđe u potez, program bi trebao prikazati trenutni status ploče na konzoli.

  4. Upotrijebite X za označavanje igara čovjeka i O za označavanje igara na računalu. Upotrijebite znakove okomite trake (nalaze se na tipkovnici s znakom nagnute crte, odmah iznad tipke Enter) i crticama za crtanje ploče u jednostavnoj mreži.

    Na primjer, ako je korisnik kao svoj prvi potez unio A1, program će prikazati sljedeće:

     X | | ---|---|--- | | ---|---|--- | |
  5. Nakon ljudskog poteza, program određuje njegov potez, najavljuje ga korisniku, prikazuje ažuriranu ploču i zatim traži korisnikov potez.

    Na primjer, mogli biste vidjeti ovo:

    I will play A2: X | O | ---|---|--- | | ---|---|--- | | Please enter your next move:
  6. Igra se nastavlja sve dok jedan igrač ne zabije tri zaredom ili dok svi kvadrati nisu popunjeni bez pobjednika. Vaš program mora moći utvrditi je li bilo koji igrač zabio tri u nizu i pobijedio u igri. (Ovo je najteži dio ovog programskog izazova.)

  7. Kad je igra gotova, program prikazuje poruku koja pokazuje rezultat igre: Pobijedili ste me! ako ljudski igrač pobijedi, pobijedit ću te! ako računarski igrač pobijedi, ili To je neriješeno! ako igra završi neriješenim rezultatom.

  8. Ljudski i računalni igrači mogu igrati samo na onim poljima koja niti jedan igrač već ne zauzima.

  9. Program završava kada utakmicu pobijedi bilo koji igrač ili je igra neriješena. Ako želite ponovno igrati, morate ponovo pokrenuti program.

Imajte na umu da možete slobodno koristiti bilo koju metodu kojom želite odrediti kako računalo treba kretati. Predlažem da računalo uvijek igra na prvom praznom kvadratu. Ovo očito nije najbolji način za igranje Tic-Tac-Toea i nećete imati problema pobijediti računalo svaki put kad igrate. Ali odabir ove jednostavne strategije igranja omogućuje vam da se usredotočite na druge aspekte programiranja, poput načina na koji interno predstavljate mrežu i kako odrediti kada je igrač pobijedio u igri ili kada je igra završila neriješenim rezultatom.

(U izazovu programiranja Java: dodavanje nizova u program Jednostavni tik-taktovi od vas se traži da izradite bolju strategiju programa za određivanje njegovih igara.)

Evo primjera prikaza konzole za cjelovitu igru:

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!

Evo nekoliko savjeta za početak:

  • Mrežu je najbolje predstaviti pomoću niza. Za sada koristite devet varijabli, imenovanihA1,A2,A3,B1,B2,B3,C1,C2, iC3.

  • Ako koristiteinttipa za mrežne varijable, zatim možete upotrijebiti 1 da označite da kvadrat sadrži X, a 2 da kvadrat sadrži O.

  • Osam mogućih redova može dovesti do pobjede. Igrač pobjeđuje ako je bilo koja od sljedećih kombinacija kvadrata 1 (za X) ili 2 (za 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
  • Postoje dva načina da se utvrdi je li igra neriješena. Prvo je provjeriti svih devet kvadrata: Ako niti jedan kvadrat nije prazan i niti jedan igrač nije pobijedio, igra se neriješeno. Drugo je brojanje poteza: Ako je napravljeno devet poteza, a niti jedan igrač nije pobijedio, igra je neriješena.

Rješenje za ovaj programski izazov možete pronaći na kartici Preuzimanja na Java Sve u jednom za lutke, Stranica proizvoda četvrtog izdanja.

doze tamiflua za odrasle

Sretno!