bool isLineSolved(Line line, MyPuzzle myPuzzle) { int solids = 0; int lineCount = line.line.Count; var l = line.line; for (int i = 0; i < lineCount; ++i) { CELLSTATE currentCell = myPuzzle.puzzleState[l[i].z, l[i].y, l[i].x]; // 하나라도 BLANK인 큐브가 있으면 라인 전체가 풀리지 않은 것 // 즉, 이 라인이 풀린다면 최소 하나의 단서가 추가될 수 있음 if (currentCell == CELLSTATE.BLANK) { return(false); } if (currentCell == CELLSTATE.SOLID) { solids++; } } return(solids == line.clue.number); // SOLID가 아닌 큐브는 모두 EMPTY일 것이므로 group은 상관 없이 전체 SOLID 갯수만 보면 된다 }
bool isLinePassivelySolved(Line line, MyPuzzle myPuzzle) { int solids = 0; int lineCount = line.line.Count; var l = line.line; for (int i = 0; i < lineCount; ++i) { CELLSTATE currentCell = myPuzzle.puzzleState[l[i].z, l[i].y, l[i].x]; // 모든 solid를 칠하지 않았어도 empty만 맞으면 풀었다고 본다 if (currentCell == CELLSTATE.SOLID || currentCell == CELLSTATE.BLANK) { solids++; } } return(solids == line.clue.number); // SOLID 또는 BLANK가 아닌 큐브는 모두 EMPTY일 것이므로 group은 상관 없이 전체 SOLID 갯수만 보면 된다 }
public void ChangeCellState() { cellState = (cellState == CELLSTATE.alive) ? CELLSTATE.dead : CELLSTATE.alive; ChangeCellColor(); }
public void RandomCellState() { cellState = (Random.Range(0, 2) == 0) ? CELLSTATE.alive : CELLSTATE.dead; ChangeCellColor(); }