Atölye › Satranç › 43/48. adım
search en iyi puanı bulur; ama bilgisayarın bilmesi gereken en iyi hamle. computerMove en üst seviyede
aynı işi yapar, üstüne hangi hamlenin en iyi puanı verdiğini hatırlar.
DEPTH = 3 → üç hamle ileri bakar: kendi hamlesi, senin cevabın, onun cevabı. Eşit puanlı hamleler arasında seçim
için puana 1'den küçük rastgele bir sayı ekleriz; böylece bilgisayar hep aynı oyunu oynamaz ama iyi hamleden de
vazgeçmez.
```js
const DEPTH = 3 // how many moves ahead the computer looks
function computerMove() {
let best = null
let bestScore = -Infinity
for (const m of legalMoves()) {
const undo = makeMove(m)
const score = -search(DEPTH - 1) + Math.random() // a tiny random tie-break
undoMove(undo)
if (score > bestScore) {
best = m
bestScore = score
}
}
return best
}
```let best = null → şimdiye kadarki en iyi hamle; bestScore onun puanı.const score = -search(DEPTH - 1) + ... → hamleyi burada oynadık; kalan DEPTH - 1 hamleyi search düşünür.Math.random() → 0 ile 1 arası rastgele bir sayı. Puanlar yüzlerle ölçüldüğü için (piyon 100) gerçekten daha iyi
bir hamlenin yerini alamaz; yalnız eşitleri karıştırır.if (score > bestScore) { ... } → daha iyiyse hem hamleyi hem puanını sakla.return best → seçilen hamle.const VALUES = ... satırının altına DEPTH satırını yaz.const same = ... satırının üstüne (search'ün altına) computerMove fonksiyonunu yaz; altında bir boş satır
kalsın.Beceriler: Fonksiyonlar
← İleriyi düşünmek Alfa-beta: önemsizi atla →