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

Memahami G-Spot - dummies

Memahami G-Spot - dummies

G-spot dilaporkan merupakan tempat di vagina yang tampaknya bisa memberi wanita orgasme tanpa stimulasi klitoris. Bagaimana menemukan G-spot (dan apa yang akan dilakukannya untuk kehidupan seks mereka) telah menjadi tujuan bagi banyak wanita dan pasangan seks mereka. G-spot ini dinamai ginekolog Ernest Grafenberg yang mengaku telah menemukan ...

Gunakan Foreplay untuk Mengatur Mood sepanjang hari - garpu

Gunakan Foreplay untuk Mengatur Mood sepanjang hari - garpu

Foreplay mungkin salah satu yang paling disalahpahami kata-kata dalam kosakata seksual. Bahkan, ketika beberapa pria mendengar kata foreplay, mereka masih menganggap golf bukan seks. Tapi perlahan dan pasti, populasi laki-laki belajar bahwa foreplay sama pentingnya dengan seks yang baik seperti menggunakan besi 9 adalah golf yang bagus. ...

Ragam Varietas untuk Memperbaiki Kehidupan Seks Anda - variasi dummies

Ragam Varietas untuk Memperbaiki Kehidupan Seks Anda - variasi dummies

Membuat hidup lebih menarik. Jika Anda selalu pergi ke restoran yang sama, pengulangan itu bisa jadi membosankan, dan kebosanan tidak membantu pembakaran api romantis itu tetap menyala. Dengan mencoba tempat baru, Anda bisa mencicipi makanan baru dan suasana baru. Pengalaman akan memberi Anda hal-hal baru untuk dibicarakan, bahkan jika ...

Pilihan Editor

Cara menulis cek di QuickBooks 2010 - dummies

Cara menulis cek di QuickBooks 2010 - dummies

QuickBooks 2010 mencakup perintah dan jendela khusus untuk tujuan merekam dan mungkin mencetak cek. Anda dapat menulis cek di dalam QuickBooks, merekam informasi penarikan di akun yang sesuai.

Job Reporting Biaya di QuickBooks 2012 - dummies

Job Reporting Biaya di QuickBooks 2012 - dummies

Jika Anda memilih Reports- Jobs, Time & Mileage command, QuickBooks 2012 menampilkan submenu hampir dua lusin laporan berbeda yang memasok informasi biaya kerja. Judul laporannya cukup jelas. Beberapa laporan memberikan profitabilitas kerja, seperti laporan Ringkasan Profitabilitas Ayub. Beberapa laporan mengidentifikasi perkiraan yang terkait dengan pekerjaan tertentu. Laporan lain ...

Job Cost Reporting in QuickBooks 2015 - dummies

Job Cost Reporting in QuickBooks 2015 - dummies

Akuntansi mungkin bekerja sedikit berbeda ketika perusahaan mengatur pekerjaannya ke dalam proyek atau pekerjaan. Dalam beberapa situasi, perusahaan perlu melacak pendapatan dan pengeluaran - tidak hanya melalui bagan akun standar, tetapi juga oleh pekerjaan atau proyek. Untungnya, QuickBooks membuat penetapan biaya kerja, atau biaya proyek, sangat mudah. Jika Anda ...

Pilihan Editor

Kantor 2011 untuk Mac: Berbagi Presentasi PowerPoint Anda - dummies

Kantor 2011 untuk Mac: Berbagi Presentasi PowerPoint Anda - dummies

Anda dapat membagikan presentasi yang Anda bangun PowerPoint 2011 untuk Mac dengan berbagai cara. Masing-masing yang terbaik untuk keadaan dan skenario tertentu. Kenali anggota audiens Anda dan kombinasikan pengetahuan itu dengan kebutuhan Anda untuk memilih metode distribusi yang sesuai. Mendistribusikan dalam format PowerPoint Microsoft Office adalah salah satu aplikasi terinstal paling luas ...

Buka PowerPoint Presentation Gallery di Office 2011 untuk Mac - dummies

Buka PowerPoint Presentation Gallery di Office 2011 untuk Mac - dummies

Perilaku default untuk membuka PowerPoint 2011 untuk Mac adalah menampilkan opsi All Themes dari PowerPoint Presentation Gallery. Anda juga bisa menampilkan Galeri Presentasi ini dengan memilih File → New dari Template atau dengan menekan Shift-Command-P. Dua tema pertama dalam kategori Semua Template adalah Putih dan Hitam, tema yang Anda gunakan untuk ...

Merencanakan presentasi PowerPoint Anda di Office 2008 untuk perencanaan Mac - dummies

Merencanakan presentasi PowerPoint Anda di Office 2008 untuk perencanaan Mac - dummies

Dapat berjalan jauh menuju pembuatan Office 2008 Anda untuk slide Mac PowerPoint lebih baik lagi. Meski membuat presentasi PowerPoint tidaklah sulit, menciptakan yang bagus, yang mudah diingat butuh pemikiran dan perencanaan. Pertimbangkan saran berikut sebelum mulai mengerjakan presentasi slide show PowerPoint Anda. Gunakan aturan 10/20/30 Berikut adalah beberapa saran PowerPoint yang bagus dari ...