Ejemplo n.º 1
0
    public void ChooseGrid(GameObject g)
    {
        int tempRow = -1, tempCol = -1;

        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if (grids[i, j] == g)
                {
                    tempRow = i;
                    tempCol = j;
                }
            }
        }
        if (!SudokuDataManagement.GetExistedInQues(difficulty, sudokuIndex, tempRow, tempCol))
        {
            if (chosenGridPosRow != -1)
            {
                grids[chosenGridPosRow, chosenGridPosCol].transform.parent.GetChild(0).gameObject.SetActive(false);
            }

            g.transform.parent.GetChild(0).gameObject.SetActive(true);
            chosenGridPosRow = tempRow;
            chosenGridPosCol = tempCol;
        }
    }
Ejemplo n.º 2
0
 // Update is called once per frame
 void Update()
 {
     if (start)
     {
         start = false;
         ClearAllGrids();
         sudokuIndex = SudokuDataManagement.GetQuestionIndex(difficulty);
         AssignQuestion();
     }
 }
Ejemplo n.º 3
0
 private void AssignQuestion()
 {
     for (int i = 0; i < 9; i++)
     {
         for (int j = 0; j < 9; j++)
         {
             int number = SudokuDataManagement.GetNumber(difficulty, sudokuIndex, i, j);
             if (SudokuDataManagement.GetExistedInQues(difficulty, sudokuIndex, i, j))
             {
                 images[i, j].sprite = 一到九圖案[number - 1];
                 GameObject tempG = images[i, j].transform.parent.GetChild(0).gameObject;
                 tempG.SetActive(true);
                 tempG.GetComponent <Image>().sprite = QuestionPanel;
                 recordedNumbers[i, j] = number;
             }
             else
             {
                 recordedNumbers[i, j] = 0;
             }
         }
     }
 }
Ejemplo n.º 4
0
 public void ClickConfirm()
 {
     if (chosenGridPosRow != -1)
     {
         grids[chosenGridPosRow, chosenGridPosCol].transform.parent.GetChild(0).gameObject.SetActive(false);
     }
     chosenGridPosRow = -1;
     chosenGridPosCol = -1;
     for (int i = 0; i < 9; i++)
     {
         for (int j = 0; j < 9; j++)
         {
             if (recordedNumbers[i, j] != SudokuDataManagement.GetNumber(difficulty, sudokuIndex, i, j))
             {
                 EndImage.sprite = 失敗;
                 EndPanel.SetActive(true);
                 return;
             }
         }
     }
     EndImage.sprite = 正確;
     EndPanel.SetActive(true);
     SudokuDataManagement.SetIndexPlayed(sudokuIndex, difficulty);
 }
Ejemplo n.º 5
0
    // Start is called before the first frame update
    void Start()
    {
        string text;

        if (匯入難度 == SudokuDifficulty.Easy)
        {
            text = File.ReadAllText(Application.dataPath + "\\素材\\SudokuData\\easy.txt");
        }
        else
        {
            text = File.ReadAllText(Application.dataPath + "\\素材\\SudokuData\\normal.txt");
        }
        bool   putAnswerTime = true;
        int    rowNum        = 0;
        Sudoku sudoku        = new Sudoku {
            sudoku = new SudokuRow[9],
            played = false
        };
        SudokuRow row = new SudokuRow {
            row = new OneNumber[9]
        };
        int columnIndex = 0;

        for (int i = 0; i < text.Length; i++)
        {
            if (text[i] == '\r')
            {
                i++;
                if (putAnswerTime)
                {
                    sudoku.sudoku[rowNum] = row;
                    row = new SudokuRow {
                        row = new OneNumber[9]
                    };
                }
                else
                {
                    if (columnIndex != 9)
                    {
                        for (int j = columnIndex; j < 9; j++)
                        {
                            sudoku.sudoku[rowNum].row[j].existedInQues = false;
                        }
                    }
                    columnIndex = 0;
                }
                rowNum++;
                if (rowNum == 9)
                {
                    rowNum = 0;
                    if (!putAnswerTime)
                    {
                        //put final sudoku into data
                        SudokuDataManagement.AddSudoku(sudoku, 匯入難度);

                        sudoku = new Sudoku {
                            sudoku = new SudokuRow[9],
                            played = false
                        };
                    }
                    putAnswerTime = !putAnswerTime;
                }
            }
            else
            {
                if (putAnswerTime)  //put answer
                {
                    row.row[columnIndex] = new OneNumber {
                        number        = text[i] - 48,
                        existedInQues = false
                    };
                    columnIndex = (columnIndex == 8) ? 0 : columnIndex + 1;
                }
                else    //indicate the question
                {
                    int checkIndex = columnIndex;
                    while (/*text[i] != '\n' && */ sudoku.sudoku[rowNum].row[checkIndex].number != text[i] - 48)
                    {
                        sudoku.sudoku[rowNum].row[checkIndex].existedInQues = false;
                        checkIndex++;
                    }
                    sudoku.sudoku[rowNum].row[checkIndex].existedInQues = true;
                    columnIndex = checkIndex + 1;
                }
            }
        }
    }