⊗jsPrTTTVCh 45 of 62 menu

Pemeriksaan Kemenangan dalam Permainan Tic-Tac-Toe dengan JavaScript

Sekarang saatnya untuk menulis kode yang akan menentukan kemenangan dan menampilkan nama pemenang.

Setelah mempertimbangkan tugasnya, dapat disimpulkan bahwa pemeriksaan untuk mengetahui adanya kemenangan harus dilakukan pada setiap langkah:

function init(selector) { let cells = document.querySelectorAll('#field td'); let i = 0; for (let cell of cells) { cell.addEventListener('click', function step() { this.textContent = ['X', 'O'][i % 2]; this.removeEventListener('click', step); // di sini kita harus memeriksa kemenangan atau seri i++; }); } }

Mari kita buat fungsi isVictory, yang akan menerima array sel sebagai parameternya dan mengembalikan true jika ada kemenangan di papan, dan false jika tidak. Kita akan menggunakan fungsi ini sebagai berikut:

function start(cells) { let i = 0; for (let cell of cells) { cell.addEventListener('click', function step() { this.textContent = ['X', 'O'][i % 2]; this.removeEventListener('click', step); if (isVictory(cells)) { alert('nama pemenang'); } i++; }); } }

Bagaimana kita bisa mengetahui nama pemenangnya? Jelas, namanya tersimpan di setiap sel yang menang. Mari saya jelaskan: jika ada kemenangan, maka berarti beberapa 3 sel secara horizontal, vertikal, atau diagonal mengandung nilai yang sama: baik X maupun O.

Jelas bahwa nilai dari salah satu sel ini adalah nama pemenangnya. Tetapi bisa juga dengan cara lain, yang kurang jelas: karena kita menentukan adanya kemenangan pada setiap langkah, maka secara logis, pemenangnya adalah pemain yang melakukan langkah terakhir. Nama pemain ini terkandung dalam teks sel yang diklik:

function start(cells) { let i = 0; for (let cell of cells) { cell.addEventListener('click', function step() { this.textContent = ['X', 'O'][i % 2]; this.removeEventListener('click', step); if (isVictory(cells)) { alert(this.textContent); // menampilkan nama pemenang } i++; }); } }

Implementasi isVictory

Bagaimana secara teknis kita menentukan adanya kemenangan di papan? Jika dipikirkan dengan matang, dapat disimpulkan bahwa ada sejumlah terbatas kombinasi tiga sel di papan.

Artinya, untuk memeriksa kemenangan, kita bisa memeriksa semua kombinasi tiga ini. Perlu diperiksa apakah kombinasi tiga tersebut memiliki nilai yang sama dan tidak kosong (yaitu berisi X atau O).

Mari buat array dua dimensi, di mana setiap sub-array berisi nomor-nomor sel dari salah satu kombinasi tiga:

let combs = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6], ];

Mari tulis pemeriksaan kemenangan menggunakan array ini:

function isVictory(cells) { let combs = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6], ]; for (let comb of combs) { if ( cells[comb[0]].textContent == cells[comb[1]].textContent && cells[comb[1]].textContent == cells[comb[2]].textContent && cells[comb[0]].textContent != '' ) { return true; } } return false; }

Secara mandiri, tanpa melihat kode saya, implementasikan hal yang telah dijelaskan. Periksa bagaimana proses permainan berfungsi.

Cobalah untuk mengimplementasikan pemeriksaan seri. Pembahasan mengenai hal ini akan ada di pelajaran berikutnya.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak