Rumah Keuangan Pribadi Java Programming Challenge: Menambahkan Array ke Program Tic-Tac-Toe yang Sederhana

Java Programming Challenge: Menambahkan Array ke Program Tic-Tac-Toe yang Sederhana

Video: Coding Challenge #31: Flappy Bird 2024

Video: Coding Challenge #31: Flappy Bird 2024
Anonim

Ini Tantangan pemrograman Java didasarkan pada tantangan sebelumnya dalam seri Tic-Tac-Toe ini dan menguji kemampuan Anda untuk menggunakan array - dua di antaranya sebenarnya.

Dalam Tantangan Pemrograman Java: Game Tic-Tac-Toe yang Sederhana dan Tantangan Pemrograman Java: Menambahkan Kelas ke Program Tic-Tac-Toe yang Sederhana Anda ditantang untuk menulis sebuah program untuk memainkan permainan sederhana Tic-Tac-Toe.

Sebagai permainan, Tic-Tac-Toe berseru untuk penggunaan sebuah array untuk mewakili status permainan. Tanpa array, Anda harus menggunakan variabel terpisah untuk mewakili setiap kuadrat dewan. Dengan array, Anda bisa menggunakan satu variabel untuk mewakili semua sembilan kotak.

Tantangan pemrograman ini sederhana: Tuliskan versi perbaikan dari program yang menggunakan array. Anda harus menggunakan setidaknya dua array dalam solusi Anda:

  1. Anda harus menggunakan array untuk mewakili papan tulis. Kemungkinan besar, Anda akan ingin menggunakan array satu dimensi dengan sembilan elemen, sebagai berikut:

    0 | 1 | 2 --- | --- | --- 3 | 4 | 5 --- | --- | --- 6 | 7 | 8
    

    Dengan kata lain, kotak kiri atas (A1) disimpan dalam elemen array 0, dan kanan bawah persegi (C3) disimpan dalam elemen array 8.

  2. Anda juga harus menggunakan sebuah array untuk mewakili delapan kemungkinan vektor tiga-dalam-satu baris.

    Anda kemudian dapat menggunakan array ini untuk menentukan apakah pemain telah memenangkan permainan. Kemungkinan besar, Anda akan ingin menggunakan array dua dimensi untuk tugas ini. Array akan menampung delapan, tiga elemen array, masing-masing mewakili tiga indeks dari vektor tiga baris tertentu.

    Kumpulan lengkap berisi data berikut:

    0 1 2 3 4 5 6 7 8 0 3 6 1 4 7 2 5 8 0 4 8 2 4 6
    

Satu persyaratan tambahan dari program ini adalah kelas TicTacToeBoard yang Anda buat untuk tantangan ini harus benar-benar sesuai dengan kelas yang Anda buat untuk tantangan sebelumnya. Dengan kata lain, ia harus menerapkan metode yang sama persis. Demi kenyamanan Anda, metode ini diulang pada tabel berikut.

Karena metode ini mengacu pada kuadrat dewan tic-tac-toe menggunakan penandaan kolom-kolom seperti A1 atau B2, penerapan Anda perlu memetakan peruntukan ini ke nomor indeks. Misalnya, jika string A1 dilewatkan ke metode playAt, program harus menandai permainan di indeks 0 pada array.

Kelas TicTacToeBoard
Konstruktor Deskripsi
TicTacToeBoard

Membuat TicTacToeBoard baru dengan semua kotak kosong.
Metode Deskripsi
void reset () Menyetel ulang status setiap kotak menjadi kosong. Menandai kotak yang ditentukan (A1, A2, A3, B1, B2, B3, C1, C2, atau C3) untuk pemain yang ditentukan (1 untuk X, 2 untuk HAI). Melempar IllegalArgumentException jika kotak bukan salah satu nilai yang diijinkan, pemain tidak 1 atau 2, atau kotak yang ditentukan tidak kosong.
int isGameOver () Menentukan apakah permainan telah selesai. Mengembalikan 0 jika permainan belum berakhir, 1 jika X telah memenangkan pertandingan, 2 jika O telah memenangkan pertandingan, dan 3 jika permainan itu imbang. Kondisi akhir permainan adalah sebagai berikut:
1: Jika ada baris, kolom, atau diagonal berisi semua X's. 2: Jika ada baris, kolom, atau diagonal berisi semua huruf O.

3: Jika tidak ada kotak kosong dan X maupun O tidak pernah menang.

int getNextMove ()

Mengembalikan bilangan bulat yang mewakili langkah selanjutnya untuk lawan komputer. Metode ini harus membuat usaha yang tidak tepat untuk memilih langkah yang baik, sesuai dengan strategi berikut:

* Jika pusat (B2 persegi) kosong, mainkan kotak tengah. Jika pusatnya tidak kosong, namun ada empat sudutnya (kotak A1, A3, C1, atau C3) kosong, putar salah satu sudutnya (tidak masalah).

* Jika bagian tengahnya tidak kosong dan tidak ada sudut yang kosong, putar salah satu ujungnya (kotak A2, B1, B3, atau C2).

String toString ()

Mengembalikan string yang mewakili status papan saat ini. String mencakup karakter baris baru untuk menampilkan baris serta garis pemisah pada garis konsol terpisah, seperti pada contoh ini:

O | | O - | - | -

| X |

- | - | -

| X |

Sebagai tantangan lebih lanjut, untuk tantangan TicTacToeBoard versi ini, pemain komputer harus menggunakan strategi yang lebih cerdas melawan lawan manusia. Tentukan permainan komputer sebagai berikut:

Jika komputer Anda bisa menang dalam permainan berikutnya, komputer harus diputar di kotak kemenangan.

Jika lawan lawannya bisa menang dalam permainan berikutnya, komputer harus bermain di kotak lawan lawan lawan untuk menghalangi kemenangan.

  1. Jika kotak tengahnya tersedia, komputer harus berada di tengah lapangan.

  2. Jika ada kotak pojok yang tersedia, komputer harus diputar di salah satu sudut yang tersedia.

  3. Komputer harus diputar di tepi tepi yang tersedia.

  4. Perhatikan bahwa untuk menerapkan strategi ini, Anda perlu mengembangkan rutinitas yang dapat menentukan apakah pemain dapat menang dalam langkah berikutnya. Untuk melakukannya, Anda harus melihat masing-masing dari delapan vektor tiga-dalam-satu baris untuk menentukan apakah vektor berisi satu kotak kosong dan jika masing-masing dari dua kotak lainnya berisi tanda untuk lawan yang sama (itu adalah, dua X atau dua O's).

  5. Anda dapat melakukannya dengan menggunakan 0 untuk mewakili kuadrat kosong, 1 untuk mewakili X, dan 2 untuk mewakili O. Tetapi itu memerlukan logika yang cukup rumit - hal seperti ini diperlukan, dengan asumsi bahwa s1, s2, dan s3 adalah bilangan bulat yang berisi isi dari tiga kotak dari salah satu dari delapan vektor tiga-dalam-satu:

jika (s1 == 0 & s2 == 1 & s3 == 1) // X dapat menang dengan bermain di s1 jika (s2 == 0 & s1 == 1 & s3 == 1) // X bisa menang dengan bermain di s2 if (s3 == 0 & s1 == 1 & s2 == 1) // X bisa menang dengan bermain di s3

Jadi inilah tipnya: Alih-alih menggunakan 0, 1, dan 2 untuk mewakili kotak kosong, X, dan O, gunakan bilangan prima 2, 3, dan 5 sebagai gantinya.Kemudian, untuk menentukan apakah pemain bisa menang pada vektor tertentu, cukup kalikan tiga nilai untuk vektor itu. Jika hasilnya 18, X bisa menang (233 = 18). Jika hasilnya 50, O bisa menang (255 = 50).

Perhatikan juga bahwa walaupun strategi ini merupakan perbaikan dari strategi yang digunakan untuk versi program sebelumnya, strategi ini tetap bukan strategi yang sempurna: Anda masih dapat mengalahkan komputer dengan urutan permainan yang benar. Jika Anda menginginkan tantangan tambahan, pertimbangkan strategi tambahan apa yang diperlukan untuk membuat permainan tidak dapat dimodifikasi, dan kemudian tentukan cara untuk menerapkan strategi baru ini.

Anda dapat menemukan solusi untuk tantangan ini di tab Unduhan halaman produk

Java All-in-One For Dummies, ke-4. semoga berhasil!

Java Programming Challenge: Menambahkan Array ke Program Tic-Tac-Toe yang Sederhana

Pilihan Editor

Bagaimana Menutup presentasi PowerPoint 2007 Presentation - dummies

Bagaimana Menutup presentasi PowerPoint 2007 Presentation - dummies

Menutup presentasi PowerPoint seperti memasukkannya ke dalam folder, dan menyimpan folder di laci yang tepat. Ada tiga cara yang berbeda untuk menutup presentasi PowerPoint:

Bagaimana Bandingkan Fitur PowerPoint 2013 Presentation - dummies

Bagaimana Bandingkan Fitur PowerPoint 2013 Presentation - dummies

Bandingkan fitur di PowerPoint 2013 memungkinkan Anda membandingkan perbedaan antara dua versi dari sebuah presentasi dan menerima atau menolak perbedaan. Fitur ini berguna jika Anda telah mengirimkan salinan presentasi ke reviewer dan Anda ingin secara selektif menggabungkan perubahan resensi. Menggunakan fitur Compare sangatlah mudah. Berikut adalah ...

Bagaimana Mengompres Gambar Anda di PowerPoint 2013 - dummies

Bagaimana Mengompres Gambar Anda di PowerPoint 2013 - dummies

PowerPoint 2013 mencakup perintah Compress Pictures yang dapat menghilangkan detail asing di gambar Anda dan dengan demikian mengurangi ukuran file presentasi Anda. Untuk menghemat lebih banyak ruang, perintah Compress Pictures juga akan menghapus bagian gambar Anda yang telah dipotong. Anda bisa menggunakan perintah ini untuk memampatkan hanya satu ...

Pilihan Editor

Cara Menggunakan NaturallySpeaking dengan Kotak Dialog Umum - dummies

Cara Menggunakan NaturallySpeaking dengan Kotak Dialog Umum - dummies

Secara alamiSpeaking dapat membantu Anda mengendalikan kotak dialog. Ini adalah & ldquo; Lihat Ma, tidak ada tangan & rdquo; contoh. Semuanya dilakukan dengan perintah suara. Tentu, terkadang Anda bisa menyelesaikan tugas lebih cepat dengan mematuk kunci atau menggerakkan mouse Anda. Seiring waktu, Anda akan menyelesaikan kompromi Anda sendiri antara perintah suara dan perintah mouse dan keyboard. Untuk pencarian berikut, NaturallySpeaking ...

Bagaimana Menggunakan "Klik" Command di NaturallySpeaking - dummies

Bagaimana Menggunakan "Klik" Command di NaturallySpeaking - dummies

Para insinyur di Nuance dapat ' t mengantisipasi setiap perintah yang mungkin digunakan oleh aplikasi nyasar, jadi mereka telah melakukan hal terbaik berikutnya: Mereka membuat perintah "Klik" untuk mengubah menu aplikasi menjadi perintah suara. Begini cara menggunakannya: Katakan, "Klik " untuk memperluas menu. Setiap judul yang muncul pada aplikasi ...

Bagaimana Menggunakan Mikrofon Profesional Naga Secara Pribadi:" Apakah Hal Ini Aktif? " - dummies

Bagaimana Menggunakan Mikrofon Profesional Naga Secara Pribadi:" Apakah Hal Ini Aktif? " - dummies

Dapat menjadi lucu saat Anda menyadari bahwa mikrofon Profesional Dragon Professional Anda telah berada di sepanjang waktu Anda menerima telepon terakhir Anda. Kata-kata yang Anda didiktekan tidak akan terlihat seperti apa yang Anda katakan. Ada jeda; Anda membuang muka dan mungkin mikrofon ditekan di bawah dagu Anda. Segera hapus ...

Pilihan Editor

10 Hal yang sering terjadi pada PowerPoint 2016 - dummies

10 Hal yang sering terjadi pada PowerPoint 2016 - dummies

Jumlah sebenarnya dari hal-hal yang dapat terjadi Salah saat bekerja dengan PowerPoint 2016 mungkin mendekati 10.000, tapi sepuluh di antaranya adalah yang paling sering salah. Anda tidak dapat menemukan file Anda Entah Anda menyimpan file dalam folder yang berbeda, atau Anda menggunakan nama file yang berbeda untuk menyimpannya ...

Menerapkan Style to a Table pada PowerPoint 2007 - dummies

Menerapkan Style to a Table pada PowerPoint 2007 - dummies

Setelah Anda membuat sebuah tabel di slide PowerPoint, gunakan kontrol di bawah Table Tools pada PowerPoint Ribbon untuk memformatnya. PowerPoint menawarkan beberapa gaya tabel yang telah ditentukan. Sebelum Anda menerapkan sebuah gaya, gunakan kotak centang yang muncul di sisi kiri tab Desain di bawah Table Tools on the Ribbon. Header ...

5 Trik bagus untuk PowerPoint 2016 - dummies

5 Trik bagus untuk PowerPoint 2016 - dummies

Ada banyak hal yang menyukai PowerPoint 2016, terutama jika Anda tahu caranya untuk menggunakan semua lonceng dan peluit. Berikut adalah beberapa tip dan trik yang perlu diingat: Skala ukuran slide ke dimensi monitor Ada dua rasio aspek dasar untuk layar komputer: standar (4: 3) dan lebar (16: 9). Angka-angka ini ...