Atölye › Dört Bağla › 30/38. adım
computerMove() (bilgisayarın hamlesi) bir sütun seçecek. İyi bir rakibin çok zeki olması gerekmez, mantıklı olması
yeter. İlk iki kural:
Hiçbiri yoksa şimdilik ilk açık sütunu seçiyor; daha iyisini sonraki adımlarda yapacağız. Bu adımda ekran değişmez.
```js
function computerMove() {
const open = [...Array(COLS).keys()].filter((col) => dropRow(col) !== -1)
// 1. Win if we can. 2. Block the player's win.
for (const who of [2, 1]) {
const col = open.find((c) => winsWith(c, who))
if (col !== undefined) return col
}
return open[0]
}
```[...Array(COLS).keys()] → [0, 1, 2, 3, 4, 5, 6]: bütün sütun numaralarının listesi..filter((col) => dropRow(col) !== -1) → testi geçenlerden yeni bir liste: dolu olmayan sütunlar (open, açık).for (const who of [2, 1]) → önce bilgisayar (2) için: kazanabilir miyim? Sonra oyuncu (1) için: o kazanabilir mi?
Oyuncunun kazanacağı sütuna oynamak onu engeller.open.find((c) => winsWith(c, who)) → testi geçen ilk sütun; yoksa undefined ("yok").if (col !== undefined) return col → bulunduysa onu seç. Sadece if (col) yazamayız, çünkü 0 da geçerli bir sütun
ama yanlış sayılır.return open[0] → yoksa ilk açık sütun (geçici).function colAt( satırının üstüne computerMove fonksiyonunu yaz; altında bir boş satır kalsın. Çalıştır:
ekran değişmez, kontroller yeşil olmalı.
Beceriler: Oyun durumları, Diziler ve nesneler
← Hamleyi dene, geri al Oyuncuya yardım etme →