Хрестик ва ноликни алмаштириш
Бу дарсда мен сизга хрестик ва ноликни алмаштиришни бир сатр кодда қандай қилишни кўрсатмоқчиман. Сиз эҳтимол, буни шундай қилгансиз:
function start(cells) {
let i = 0; // ҳисоблагчининг бошланғич қиймати
for (let cell of cells) {
cell.addEventListener('click', function() {
if (i % 2 == 0) {
this.textContent = 'X';
} else {
this.textContent = '0';
}
i++; // ҳисоблагчини орттирамиз
});
}
}
Мен масалани қисқароқ ҳал қилишни таклиф қиламан. Ҳар икки
'ўйинчи' учун массив яратайлик:
let gamers = ['X', 'O'];
Кўриб тургангиздек, бу массивда Х белгиси
0 калитга эга, нолик эса 1 калитга эга.
i % 2 учун ҳам шуни айтиш мумкин
- Х учун қолдиқ 0 бўлади, нолик учун эса
1 бўлади.
Яъни бу нарсани калит ўрнига ишлатиш мумкин:
let gamers = ['X', 'O'];
let key = i % 2;
console.log(gamers[key]);
Яна ҳам қисқароқ:
let gamers = ['X', 'O'];
console.log(gamers[i % 2]);
Яна ҳам қисқароқ:
console.log(['X', 'O'][i % 2]);
Энди start функциямизнинг кодини соддалаштирамиз:
function start(cells) {
let i = 0;
for (let cell of cells) {
cell.addEventListener('click', function() {
this.textContent = ['X', 'O'][i % 2];
i++;
});
}
}
Мустақил равишда, менинг кодимга қарамай, тавсирланган ўзгартиришларни киритинг.
Ҳозирда ҳар қандай ҳужайрага чексиз марта босиб, масалан, Х ни О га алмаштириш мумкин. Буни тузатинг.