From da75b4ef77f2e30a0e718a89e53c7660a80bcdf7 Mon Sep 17 00:00:00 2001 From: Sorrel Bri Date: Sat, 3 Aug 2019 22:40:45 -0700 Subject: [PATCH] add check for life through friendly groups --- js/main.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/js/main.js b/js/main.js index 2a3f0fc..cf30dc8 100644 --- a/js/main.js +++ b/js/main.js @@ -97,15 +97,19 @@ class Point { // return true if neighboring point is empty; } checkCapture = () => { - // console.log(this) - return this.findStone(gameState.turn * -1).filter(val => !val.emptyNeighbor()); + let oppStones = this.findStone(gameState.turn * -1) + return oppStones.filter(val => !val.emptyNeighbor()); } // returns all opposing neighbors that do not have an opposing neighbor - checkGroup = () => { // return statement works for first layer bubbling - return this.findStone(gameState.turn).filter(val => val.emptyNeighbor()); - // if (!this.findStone(gameState.turn).filter(val => val.emptyNeighbor()).length) { - - // } + checkGroup = () => { // return statement works for first layer + let frnStones = this.findStone(gameState.turn) + if (frnStones.filter(val => val.emptyNeighbor()).length) return frnStones.filter(val => val.emptyNeighbor()) + for (let frnStone in frnStones) { + frnStone = frnStones[frnStone]; + frnStone.chk = true; + if (frnStone.chk === true) return false; + return frnStone.checkGroup(); + } // returns all friendly neighbors that have an empty neighbor } @@ -149,6 +153,7 @@ init(); let findPointFromIdx = (arr) => boardState.find( point => point.pos[0] === arr[0] && point.pos[1] === arr[1] ); function hoverPreview(evt) { + evt.stopPropagation(); // renders preview stone if move is legal let hover = [ parseInt(evt.target.closest('td').id[0]), parseInt(evt.target.closest('td').id[2]) ]; let point = findPointFromIdx(hover); @@ -195,7 +200,6 @@ function resolveCaptures(point) { opp = caps[opp]; gameState.playerState[opp.stone > 0 ? 'bCaptures' : 'wCaptures']++; opp.stone = checkKo(opp, point) ? 'k' : 0; - console.log(checkKo(opp,point)) } } } @@ -205,6 +209,7 @@ function checkKo(cap, point) { } function placeStone(evt) { + evt.stopPropagation(); // checks for placement and pushes to cell let placement = [ parseInt(evt.target.closest('td').id[0]), parseInt(evt.target.closest('td').id[2]) ]; let point = findPointFromIdx(placement);