⊗jsPrTTTVCh 45 of 62 menu

JavaScript-de “X-O” oýunynda ýeňişi barlamak

Indi ýeňiji anyklap, onuň adyny çykaryjy kody ýazmagyň wagty geldi.

Meseläni gözden geçirip, ýeňişi barlamagyň her bir gedişde ýerine ýetirilmeginiň zerurlygyny düşünip bilersiňiz:

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); // şu ýerde ýeňişi ýa-da deňçiligi barlamaly i++; }); } }

Geliň, isVictory funksiýasyny düzeliň, bu funksiýa parametri hökmünde ýaýkalaryň masywyn alyp, meýdanda ýeňiş bar bolsa true, ýok bolsa false gaýtarsyn. Bu funksiýany aşakdaky ýaly ulanyp bileris:

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('ýeňijiniň ady'); } i++; }); } }

Ýeňijiniň adyny nädip bileris? Aýdyň ýaly, onuň ady ýeňen ýaýkalaryň her birinde saklanylýar. Daýançladyýarym: ýeňiş barda, bu 3 sany ýaýkalaryň gorizontal, wertikal ýa-da diagonal boýunca birmeňzeş baha eýe bolýandygyny görkezýär: ýa-da “X” ýa-da “O”.

Şu ýaýkalaryň haýsydyr biriniň bahasynyň ýeňijiniň ady bolýandygy aýdyň. Emma has az aýdyň bolan beýleki ýola hem gitmek mümkin: ýeňiş bardygyny her gidişde kesgitleýäniňiz üçin, logiki taýdan, soňky gidişi eden oýunçy ýeňiji bolup biler. Bu oýunçynyň ady basylan ýaýkanyň tekstinde ýerleşýär:

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); // ýeňijiniň adyny çykarýarys } i++; }); } }

isVictory funksiýasyny amala aşyrmak

Meýdanda ýeňiş bardygyny tehniki taýdan nädip kesgitläp bileris? Eger hemmesini gowy gözden geçirseňiz, meýdanyň çäklenen sany üçlük ýaýkalardan ybaratdygyna gelip bilersiňiz.

Ýagny ýeňişi barlamak üçin diňe şu üçlükleriň hemmesini barlap bolýar. Üçlükleriň birmeňzeş we boş däl bahalara eýe bolmagyny barlamaly (ýagny ol ýerde ýa “X” ýa-da “O” bolmaly).

Iki ölçegli massiw düzeliň, onuň her bir kiçi massiwi üçlügiň biriniň ýaýka nomerlerini öz içine alsyn:

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], ];

Bu massiwden peýdalanyp ýeňişi kesgitlemek funksiýasyny ýazaýaly:

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; }

Özbaşdak, meniň koduma seretmän, beýan edileni amala aşyryň. Oýun prosesiniň nädip işleýändigini barlaň.

Deňçiligi barlamagy amala aşyrmagy synaň. Indiki sapakda bu ýeriň düşündirişi berler.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et