Atölye › XOX › 32/33. adım
Artık kurallara gerek yok. Yeni computerMove her boş kutuya O koyar, score'a "buradan sonra iki taraf da kusursuz
oynarsa ne olur?" diye sorar, hamleyi geri alır ve en yüksek puanlı kutuyu seçer.
Sonuç: hiçbir tuzağa düşmeyen bir bilgisayar. En iyi ihtimalle berabere kalırsın!
```js
function computerMove(cells) {
let best = -1
let bestScore = -Infinity
for (let index = 0; index < 9; index++) {
if (cells[index] !== '') continue
cells[index] = 'O'
const value = score(cells, 'X')
cells[index] = ''
if (value > bestScore) {
bestScore = value
best = index
}
}
return best
}
```let best = -1 → şimdiye kadarki en iyi kutu (henüz yok, −1).let bestScore = -Infinity → onun puanı. -Infinity "eksi sonsuz": her sayıdan küçük. Böylece ilk denenen kutu
mutlaka "şimdiye kadarki en iyi" olur.score'daki gibi: dolu kutuyu atla, O koy, score(cells, 'X') ile puanla (sıra artık X'te), geri al.if (value > bestScore) { ... } → > büyüktür: bu kutu şimdiye kadarkilerden daha iyiyse onu hatırla.return best → en iyi kutunun numarası.free, completes ve random gidiyor: minimax kazanmayı ve engellemeyi zaten kendisi bulur.computerMove fonksiyonunun tamamını sil: function computerMove(cells) { satırından kapanan }
işaretine kadar (free, completes ve random dahil).computerMove'u yaz. Tıklama dinleyicisi aynı kalıyor; o zaten computerMove(board)'u çağırıyor.Tebrikler, XOX oyunun bitti!
Beceriler: Fonksiyonlar
← İleriye bak: minimax Kendin yap: skoru tut →