⊗jsPrTTTVCh 45 of 62 menu

Uhakiki wa Ushindi wa Mchezo wa Tic-Tac-Toe kwenye JavaScript

Sasa imewadia wakati wa kuandika msimbo ambao utabainisha ushindi na kutaja jina la mshindi.

Baada ya kufikiria kazi hiyo, inaweza kubainika kuwa ukaguzi wa uwepo wa ushindi unapaswa kufanywa kwa kila hatua:

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); // hapa tunapaswa kukagua ushindi au ushindi wa sare i++; }); } }

Wacha tutengeneze kitendakazi isVictory, ambayo itachukua safu ya seli kama kigezo na kurudisha true ikiwa kwenye uwanja kuna ushindi, na false ikiwa hakuna. Tutatumia kitendakazi hiki kama ifuatavyo:

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('jina la mshindi'); } i++; }); } }

Vipi tunaweza kujua jina la mshindi? Ni wazi, kuwa jina lake limehifadhiwa katika kila moja ya seli zilizoshinda. Naelezea: ikiwa tuna ushindi, basi hii inamaanisha kuwa baadhi ya seli 3 usawa, wima au diagonally zina thamani sawa: ama alama ya X, ama alama ya O.

Ni wazi, kuwa thamani ya yoyote kati ya seli hizi ndio jina la mshindi. Lakini unaweza kwenda kwa njia nyingine, isioonekana wazi: kwa kuwa tunabainisha uwepo wa ushindi kila hatua, basi ni mantiki, kuwa mshindi atakuwa mchezaji aliye fanya hatua ya mwisho. Jina la mchezaji huyo limo kwenye maandishi ya seli iliyobonyezwa:

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); // tunatoa jina la mshindi } i++; }); } }

Utendaji wa isVictory

Vipi tuweze kubainisha kiufundi uwepo wa ushindi kwenye uwanja? Ikiwa tutafikiria kwa ukweli kila kitu, basi inaweza kufikiwa hitimisho, kuwa kwenye uwanja kuna idadi maalum ya seti tatu za seli.

Hii inamaanisha kwa ajili ya ukaguzi wa ushindi unaweza tu kukagua seti hizi zote tatu. Inahitajika kukagua kwamba seti tatu zina thamani sawa zisizo wazi (yaani ama X, ama O).

Wacha tutengeneze safu ya pande mbili, ambayo kwa kila safu ndogo kutakuwa na nambari za seli za moja kati ya seti tatu:

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

Wacha tuandike kwa kutumia safu hii ufafanuzi wa ushindi:

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

Wewe mwenyewe, bila kuangalia kwenye msimbo wangu, itekeleze yaliyoelezewa. Kagua, jinsi mchakato wa mchezo unavyofanya kazi.

Jaribu kutekeleza ukaguzi wa ushindi wa sare. Katika somo linalofuata kutakuwa na uchambuzi wa sehemu hii.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa