Atölye › Dört Bağla › 31/38. adım
Her açık sütun için hayal ederiz: bilgisayar buraya oynasa, oyuncu aynı sütunda hemen kazanır mı? Kazanıyorsa o sütun tehlikeli. Güvenli sütunlar arasından seçeriz; hiç güvenli sütun yoksa mecburen açık sütunlardan.
```js
// 3. Do not play right under a square where the player would win.
const safe = open.filter((col) => {
const row = dropRow(col)
if (row === 0) return true
board[row][col] = 2
const danger = winsWith(col, 1)
board[row][col] = 0
return !danger
})
const choices = safe.length > 0 ? safe : open
return choices[0]
```open.filter((col) => { ... }) → her açık sütun için bir test; true dönenler safe (güvenli) listesine girer.if (row === 0) return true → disk en üst satıra düşecekse üstünde delik kalmaz: güvenli.board[row][col] = 2 → bilgisayarın diskini geçici olarak koy.winsWith(col, 1) → oyuncu şimdi aynı sütuna oynasa (yani hemen üstüne) kazanır mı?board[row][col] = 0 → geri al. return !danger → tehlike yoksa güvenli.safe.length > 0 ? safe : open → güvenli sütun varsa onlar, yoksa bütün açık sütunlar.return choices[0] → şimdilik ilk seçenek; ortayı seçmeyi bir sonraki adımda ekleyeceğiz.computerMove içindeki return open[0] satırını sil; yerine yorum satırını, safe, choices ve return choices[0]
satırlarını yaz. Çalıştır: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Oyun durumları
← Kazan ya da engelle Ortayı tercih et →