コード例 #1
0
ファイル: Board.cs プロジェクト: uta666666/TicTacToe
 public void ChangeCellColorForWin(SettlementResult result)
 {
     //foreach (var cell in result.SettlementCells)
     //{
     //    Cells[(int)cell.Y, (int)cell.X].ChangeCellColor();
     //}
     SettledPattern = result.SettlementPattern;
 }
コード例 #2
0
ファイル: CellsExtension.cs プロジェクト: uta666666/TicTacToe
        /// <summary>
        /// ゲームの勝者を返す
        /// </summary>
        /// <param name="cells"></param>
        /// <returns></returns>
        public static void GetGameStatus(this Cell[,] cells, out GameStatus result, out SettledPattern pattern)
        {
            GetGameStatus(cells, RowVictoryPattern, out result, out pattern);
            if (result != GameStatus.None)
            {
                return;
            }

            GetGameStatus(cells, ColVictoryPattern, out result, out pattern);
            if (result != GameStatus.None)
            {
                return;
            }

            GetGameStatus(cells, DiagVictoryPatten, out result, out pattern);
            if (result != GameStatus.None)
            {
                return;
            }

            result  = GameStatus.None;
            pattern = SettledPattern.None;
        }
コード例 #3
0
ファイル: CellsExtension.cs プロジェクト: uta666666/TicTacToe
        /// <summary>
        /// ゲームの勝者を返す 詳細ロジック
        /// 商社を判断するだけなので、細かいチェックはしない
        /// </summary>
        /// <param name="cells"></param>
        /// <param name="checkPattern"></param>
        /// <param name="status"></param>
        /// <param name="pattern"></param>
        private static void GetGameStatus(Cell[,] cells, List <KeyValuePair <SettledPattern, List <Point> > > checkPattern, out GameStatus status, out SettledPattern pattern)
        {
            foreach (var row in checkPattern)
            {
                List <Point> hitCells   = new List <Point>();
                List <Point> emptyCells = new List <Point>();

                if (row.Value.Select(c => cells[(int)c.Y, (int)c.X]).All(c => c.Type == CellType.Circle))
                {
                    status  = GameStatus.Win_Circle;
                    pattern = row.Key;
                    return;
                }
                if (row.Value.Select(c => cells[(int)c.Y, (int)c.X]).All(c => c.Type == CellType.Cross))
                {
                    status  = GameStatus.Win_Cross;
                    pattern = row.Key;
                    return;
                }
            }
            status  = GameStatus.None;
            pattern = SettledPattern.None;
        }