public void SolveSudoku(char[][] board) { var placeHoldersCount = 0; var placeHolders = new bool[9][]; var numberStatuses = new NumberStatus[9]; for (int i = 0; i < 9; i++) { numberStatuses[i] = new NumberStatus(); } for (int i = 0; i < 9; i++) { placeHolders[i] = new bool[9]; for (int j = 0; j < 9; j++) { if (board[i][j] == '.') { placeHoldersCount++; placeHolders[i][j] = true; } else { int val = board[i][j] - '1'; numberStatuses[val].UsedInColumns[j] = true; numberStatuses[val].UsedInRows[i] = true; numberStatuses[val].UsedInSquares[NumberStatus.GetSquareNumber(i, j)] = true; } } } SolveSudokuImpl(board, placeHolders, numberStatuses, placeHoldersCount); }
// Update is called once per frame void Update() { if (m_status == NumberStatus.Bigger) { if (current_scale.x < 1.2f / scale_num) { current_scale += new Vector3(step / 5 / scale_num, step / scale_num, step / scale_num); transform.localScale = current_scale; transform.position += new Vector3(0f, 0f, 0.05f / scale_num); } else { m_status = NumberStatus.Smaller; } } if (m_status == NumberStatus.Smaller) { if (current_scale.x > 1.0f / scale_num) { current_scale -= new Vector3(step / 5 / scale_num, step / scale_num, step / scale_num); transform.localScale = current_scale; transform.position -= new Vector3(0f, 0f, 0.05f / scale_num); } else { m_status = NumberStatus.Normal; } } }
//初始化 public void Init(Grid grid) { grid.SetNumber(this); this.SetGrid(grid); this.SetNumber(2); status = NumberStatus.Normal; PlaySpawnAnim(); }
/*End-生命周期------------------------------------------------------------------*/ public void Init(MyGrid myGrid) { myGrid.SetNumber(this); // 设置所在的格子 this.SetGrid(myGrid); // 给它一个初始化的数字 this.SetNumber(2); status = NumberStatus.Normal; PlaySpawnAnim(); }
private bool SolveSudokuImpl(char[][] board, bool[][] placeHolders, NumberStatus[] numberStatus, int numbersLeft) { if (numbersLeft == 0) { return(CheckSudokuSolved(board)); } for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (!placeHolders[i][j] || board[i][j] != '.') { continue; } for (char c = '1'; c <= '9'; c++) { var val = c - '1'; if (numberStatus[val].UsedInRows[i] || numberStatus[val].UsedInColumns[j] || numberStatus[val].UsedInSquares[NumberStatus.GetSquareNumber(i, j)]) { continue; } var prevUsedInRows = numberStatus[val].UsedInRows[i]; var prevUsedInColumns = numberStatus[val].UsedInColumns[j]; var prevUsedInSquares = numberStatus[val].UsedInSquares[NumberStatus.GetSquareNumber(i, j)]; board[i][j] = c; if (SolveSudokuImpl(board, placeHolders, numberStatus, numbersLeft - 1)) { return(true); } board[i][j] = '.'; numberStatus[val].UsedInRows[i] = prevUsedInRows; numberStatus[val].UsedInColumns[j] = prevUsedInColumns; numberStatus[val].UsedInSquares[NumberStatus.GetSquareNumber(i, j)] = prevUsedInSquares; } } } return(false); }
/// <summary> /// 合并 /// </summary> public void Merge() { GamePanel gamePanel = GameObject.Find("Canvas/GamePanel").GetComponent <GamePanel>(); gamePanel.AddScore(this.GetNumber()); int number = this.GetNumber() * 2; this.SetNumber(number); if (number == 2048) { // 游戏胜利 gamePanel.GameWin(); } status = NumberStatus.NotMerge; PlayMergeAnim(); }
//合并 public void Merge() { Game GamePanel = GameObject.Find("Canvas/Game_Panel").GetComponent <Game>(); GamePanel.AddScore(this.GetNumber()); int number = this.GetNumber() * 2; this.SetNumber(number); if (number == 2048) { //游戏胜利 GamePanel.GameWin(); } status = NumberStatus.NotMerge; PlayMergeAnim(); AudioManager._instance.PlaySound(sound); }
void Start() { current_scale = new Vector3(1f / scale_num, 1f / scale_num, 1f / scale_num); transform.localScale = current_scale; m_status = NumberStatus.Bigger; }