Atölye › Candy Crush Tarzı Üçlü Eşleştirme › 6/29. adım
Tahtayı satır satır, soldan sağa dolduruyoruz. Bir mücevheri koyarken yalnız solundaki ve üstündeki hücreler dolu; sağı ve altı henüz boş. Üçlü oluşabilecek iki durum var:
O zaman yeniden zar atarız, üçlü yapmayan bir renk çıkana kadar. Hep biter: en fazla iki renk yasak, altı renk var.
```js
// Would this gem make three in a row with the two to its left, or the two above it?
function makesRun(r, c, gem) {
const left = c >= 2 && board[r][c - 1] === gem && board[r][c - 2] === gem
const up = r >= 2 && board[r - 1][c] === gem && board[r - 2][c] === gem
return left || up
}
// A new board with no three in a row: each gem avoids the colors that would make one.
let gem
do gem = randomGem()
while (makesRun(r, c, gem))
board[r].push(gem)
```function makesRun(r, c, gem) { → "bu mücevher (r, c)'ye konsa üçlü yapar mı?"c >= 2 → solda iki hücre var mı? (0. ve 1. sütunun solunda iki hücre yok.)board[r][c - 1] === gem && board[r][c - 2] === gem → bir sol ve iki sol aynı renk mi? && "ve", === "eşit mi?"const up = ... → aynısı yukarı için: r - 1 bir üst, r - 2 iki üst satır.return left || up → || "veya": ikisinden biri doğruysa true.c >= 2 && önce gelir: yanlışsa && gerisine bakmaz; böylece board[r][-1] gibi olmayan bir hücre okunmaz.let gem → mücevher için bir değişken.do gem = randomGem() / while (makesRun(r, c, gem)) → do ... while döngüsü: içini (gem = randomGem()) en
az bir kez yapar, sonra koşul doğru olduğu sürece tekrarlar. "Rastgele seç; üçlü yapıyorsa yeniden seç."board[r].push(gem) → sonunda uygun mücevheri koy.function newBoard() { satırının üstüne yorum satırını, makesRun fonksiyonunu ve (bir boş satırdan sonra)
newBoard'un yorum satırını yaz.newBoard içinde board[r].push(randomGem()) satırını sil; yerine dört satırı yaz.Beceriler: Döngüler, Fonksiyonlar
← Mücevherleri çiz Bir mücevhere tıkla →