Beispiel #1
0
    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 갯수만 보면 된다
    }
Beispiel #2
0
    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();
 }