Membuat Game Tic-Tac-Toe di C++

Membuat Game Tic Tac Toe Di C



Tic-tac-toe adalah permainan menarik, kuno, dan klasik yang menghibur dari generasi ke generasi. Dalam tic-tac-toe, dua pemain bersaing dalam kotak 9 persegi yang ditandai dengan pola hash. Setiap pemain mengambil gilirannya dan menempatkan simbol (O atau X) di salah satu kotak kosong. Pada artikel ini, kita akan mempelajari cara membuat game tic-tac-toe dalam bahasa pemrograman C++. Contoh berikut akan memandu Anda dalam membuat game tic-tac-toe yang sederhana namun menarik, mencakup konsep penting, perincian kode, dan pertimbangan untuk menciptakan pengalaman bermain game interaktif.

Buat Game Tic-Tac-Toe di C++

Contoh berikut memberikan dasar-dasar pembuatan permainan tic-tac-toe dua pemain interaktif ini. Ini menampilkan pendekatan sederhana dan mudah untuk memprogramnya dengan C++ dan menyediakan kode sumber yang terdokumentasi dengan baik untuk menghidupkan kembali tantangan masa kecil bersama teman-teman dalam format digital baru. Mari kita lihat kode berikut.

Contoh: Tic-Tac-Toe Berbasis Konsol Dasar tanpa Menggunakan Array 2D

Dalam contoh ini, kita akan menggunakan array 2D, fungsi, dan kondisi if-else untuk membuat permainan tic-tac-toe di C++. Dalam permainan ini, dua pemain diperbolehkan bergantian memasukkan gerakannya, dan ini menentukan status permainan dengan memeriksa pemenang atau seri. Lihat kode yang diberikan berikut ini:







#termasuk

menggunakan namespace std ;

ruang kosong papan gambar ( arang papan [ 3 ] [ 3 ] ) ;

bool isMoveValid ( arang papan [ 3 ] [ 3 ] , ke dalam baris , ke dalam kol ) ;

bool isBoardFull ( arang papan [ 3 ] [ 3 ] ) ;

arang periksaPemenang ( arang papan [ 3 ] [ 3 ] ) ;

ke dalam utama ( ) {

arang papan [ 3 ] [ 3 ] = { { ' ' , ' ' , ' ' } , { ' ' , ' ' , ' ' } , { ' ' , ' ' , ' ' } } ;

ke dalam baris , kol ;

arang Pemain saat ini = 'X' ;

ketika ( BENAR ) {

papan gambar ( papan ) ;

cout << 'Pemain ' << Pemain saat ini << ' giliran. Masukkan baris (1-3) dan kolom (1-3): ' ;

makan >> baris >> kol ;

baris --;

kol --;

jika ( adalahMoveValid ( papan , baris , kol ) ) {

papan [ baris ] [ kol ] = Pemain saat ini ;

arang pemenang = periksaPemenang ( papan ) ;

jika ( pemenang != ' ' ) {

papan gambar ( papan ) ;

cout << 'Pemain ' << pemenang << 'adalah pemenang! \N ' ;

merusak ;

}

jika ( adalahPapan Penuh ( papan ) ) {

papan gambar ( papan ) ;

cout << 'Ini seri! \N ' ;

merusak ;

}

Pemain saat ini = ( Pemain saat ini == 'X' ) ? 'HAI' : 'X' ;

} kalau tidak {

cout << 'Langkah tidak valid. Pilih sel lain. \N ' ;

} }

kembali 0 ;

}

ruang kosong papan gambar ( arang papan [ 3 ] [ 3 ] ) {

cout << 'b| \T 1 \T | \T 2 \T | \T 3 \T | \N ' ;

cout << ' __________ \N ' ;

untuk ( ke dalam M = 0 ; M < 3 ; M ++ ) {

cout << M + 1 << '| ' ;

untuk ( ke dalam T = 0 ; T < 3 ; T ++ ) {

cout << '' << papan [ M ] [ T ] ;

jika ( T < 2 ) cout << ' \T | \T ' ;

}

cout << ' \T | \N ' ;

jika ( M < 2 ) cout << ' __________ \N ' ;

}

cout << ' \N ' ; }

bool isMoveValid ( arang papan [ 3 ] [ 3 ] , ke dalam baris , ke dalam kol ) {

kembali ( baris >= 0 && baris < 3 && kol >= 0 && kol < 3 && papan [ baris ] [ kol ] == ' ' ) ;

}

bool isBoardFull ( arang papan [ 3 ] [ 3 ] ) {

untuk ( ke dalam M = 0 ; M < 3 ; M ++ ) {

untuk ( ke dalam T = 0 ; T < 3 ; T ++ ) {

jika ( papan [ M ] [ T ] == ' ' ) {

kembali PALSU ;

} } }

kembali BENAR ; }

arang periksaPemenang ( arang papan [ 3 ] [ 3 ] ) {

untuk ( ke dalam M = 0 ; M < 3 ; M ++ ) {

jika ( papan [ M ] [ 0 ] == papan [ M ] [ 1 ] && papan [ M ] [ 1 ] == papan [ M ] [ 2 ] && papan [ M ] [ 0 ] != ' ' ) {

kembali papan [ M ] [ 0 ] ;

}

jika ( papan [ 0 ] [ M ] == papan [ 1 ] [ M ] && papan [ 1 ] [ M ] == papan [ 2 ] [ M ] && papan [ 0 ] [ M ] != ' ' ) {

kembali papan [ 0 ] [ M ] ;

} }

jika ( papan [ 0 ] [ 0 ] == papan [ 1 ] [ 1 ] && papan [ 1 ] [ 1 ] == papan [ 2 ] [ 2 ] && papan [ 0 ] [ 0 ] != ' ' ) {

kembali papan [ 0 ] [ 0 ] ;

}

jika ( papan [ 0 ] [ 2 ] == papan [ 1 ] [ 1 ] && papan [ 1 ] [ 1 ] == papan [ 2 ] [ 0 ] && papan [ 0 ] [ 2 ] != ' ' ) {

kembali papan [ 0 ] [ 2 ] ;

}

kembali ' ' ;

}

Berikut rincian fungsinya:



“#include ” adalah arahan praprosesor yang menyertakan pustaka aliran I/O untuk operasi input/output. Menggunakan “namespace std” memungkinkan penggunaan langsung fungsi cout, cin, dll. dalam program C++, tanpa memerlukan “std:: awalan”.



Ada empat prototipe fungsi dalam program ini – yaitu drawBoard(), isMoveValid(), isBoardFull(), dan checkWinner(). Deklarasi fungsi dikenal sebagai prototipe fungsi. Meskipun muncul setelah fungsi utama dalam program, namun akan digunakan. Fungsi utamanya berisi game loop dan logika untuk mengatur putaran dan pergerakan pemain. Dalam fungsi utama, papan permainan diinisialisasi dengan spasi.





arang papan [ 3 ] [ 3 ] = { { ' ' , ' ' , ' ' } , { ' ' , ' ' , ' ' } , { ' ' , ' ' , ' ' } } ;

Setelah ini, dua variabel baris dan kolom ditentukan untuk menyimpan masukan gerakan pemain. 'char currentPlayer = 'X';' mendefinisikan bahwa pemain “X” menjadi yang pertama.

Sekarang, putaran permainan while (sebenarnya) dimulai, dan berlangsung hingga ada pemenang atau seri. Perulangan “sementara” ini memanggil “drawBoard();” untuk menampilkan papan. Setelah menampilkan papan di konsol, pengguna diminta memilih sel untuk ditandai dalam pernyataan kode berikut:



cout << 'Pemain ' << Pemain saat ini << ' giliran. Masukkan baris dan kolom (1-3): ' ;

Pemain memasukkan gerakannya di “cin >> baris >> col;”.

Setelah memilih sel untuk ditandai, program pertama-tama akan memverifikasi validitas input, memastikan bahwa sel tersebut belum diisi dengan memanggil fungsi isMoveValid().

papan [ baris ] [ kol ] = Pemain saat ini ;

Pernyataan ini memberi tanda pada pemain di papan.

arang pemenang = periksaPemenang ( papan ) ;

jika ( pemenang != ' ' ) {

papan gambar ( papan ) ;

cout << 'Pemain ' << pemenang << ' menang! \N ' ;

Pernyataan ini memeriksa pemenang setiap kali pemain menandai entri di papan. Nama pemenang akan diumumkan jika ada pemenang, dan program akan keluar dari game loop.

jika ( adalahPapan Penuh ( papan ) ) {

Pernyataan ini memeriksa dasi. Kondisi seri terjadi ketika papan penuh dan tidak ada pemenang. Dalam hal ini, “Ini seri!” dicetak di layar.

Pemain saat ini = ( Pemain saat ini == 'X' ) ? 'HAI' : 'X' ;

Pernyataan ini mengalihkan para pemain untuk memberikan kesempatan kepada setiap pemain untuk memainkan gilirannya.

cout << 'Langkah tidak valid. Pilih sel lain. \N ' ;

Jika perpindahan tersebut tidak valid, pengguna akan diminta untuk memasukkan lagi dan memilih sel lainnya.

Setelah fungsi “utama”, definisi fungsi untuk prototipe fungsi yang dideklarasikan sebelumnya akan dimulai. Fungsi pertama yang didefinisikan di sini adalah drawBoard() yang digunakan untuk menggambar papan tic-tac-toe ke konsol. Fungsi drawBoard() mencetak status papan saat ini, termasuk garis kisi.

Fungsi selanjutnya yang didefinisikan di sini adalah isMoveValid(). Fungsi ini digunakan untuk menentukan apakah suatu gerakan diperbolehkan baik di dalam papan maupun di sel kosong. Fungsi isBoardFull() digunakan untuk memeriksa apakah papan sudah penuh. Ini adalah kondisi situasi seri ketika tidak ada pemenang. isBoardFull() memeriksa apakah semua posisi di papan terisi yang menunjukkan seri jika tidak ada pemenang. Jika ada pemenang, dapat dipastikan menggunakan fungsi checkWinner(). CheckWinner() memeriksa semua garis kemenangan potensial untuk tanda pemain yang sama (“X” atau “O”) dan mengembalikan tanda pemain pemenang jika ditemukan atau karakter spasi “ “ jika belum ada pemenang. Berikut keluaran programnya. Ini menunjukkan setiap giliran dari setiap pemain.

Pertama, papannya jelas; pemain “X” diminta untuk memilih sel yang akan ditandai. Di sini, pemain “X” memasukkan 2 dan 2. Sel baris 2 dan kolom 2 ditandai. Lihat papan yang ditandai berikut ini:

Sekarang giliran pemain O. Pemain diminta untuk memilih sel yang akan ditandai. Pemain “O” memilih 1 untuk baris dan 1 untuk kolom. Sel yang dipilih ditandai untuk pemain “O” seperti yang ditunjukkan dalam cuplikan keluaran berikut:

Semua giliran setiap pemain akan mengikuti pola yang sama. Giliran pemain X, dan pemain memilih 1 untuk baris dan 2 untuk kolom. Lihat cuplikan keluaran yang diberikan berikut ini:

Sekarang, giliran pemain “O”. Pemain memilih 1 untuk baris dan 3 untuk kolom.

Giliran berikutnya lagi pada pemain “X”. Pemain memilih 3 untuk baris dan 1 untuk kolom.

Pemain “O” memilih 3 untuk baris dan 2 untuk kolom.

Pemain “X” memilih baris kedua dan kolom ketiga.

Pemain “O” sekarang memilih baris kedua dan kolom pertama.

Pemain “X” kali ini memilih baris ketiga dan kolom ketiga.

Tidak ada pemain yang dapat membuat garis apa pun secara horizontal, vertikal, atau diagonal, sehingga hasilnya seri. Tidak ada pemenang untuk rangkaian masukan yang dipilih.

Secara keseluruhan, kode ini terdiri dari loop permainan utama yang bertanggung jawab untuk menangani status permainan dan masukan pengguna, serta beberapa fungsi utilitas yang digunakan untuk menggambar papan, memvalidasi pergerakan, memeriksa papan penuh, dan menentukan apakah ada pemenang. .

Kesimpulan

Mengembangkan permainan tic-tac-toe menggunakan C++ adalah latihan praktis yang sangat baik untuk memperkuat keterampilan pemrograman Anda. Artikel ini secara akurat menjelaskan cara membuat tic-tac-toe di C++. Panduan langkah demi langkah yang diberikan dalam artikel ini mencakup susunan 2D, fungsi, dan kondisi if-else agar pembaca dapat memahami mekanisme permainan, interaksi pengguna, dan penataan kode yang efisien. Panduan mendetail tentang kode dan penjelasan fungsi-fungsi yang penting untuk gameplay inti membekali pembaca dengan wawasan berharga tentang praktik pemrograman C++ dan seluk-beluk pengembangan game sederhana.