public void ChangeCellColorForWin(SettlementResult result) { //foreach (var cell in result.SettlementCells) //{ // Cells[(int)cell.Y, (int)cell.X].ChangeCellColor(); //} SettledPattern = result.SettlementPattern; }
/// <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; }
/// <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; }