private bool CheckMove(NumsNum engineMove, NumsPosition position) { return(engineMove.Num.IsCorrect()); }
private void EnginesTest() { var engines = GetNumsGameEngines(); var engine1Info = ChooseEngine(engines, "Выберите игровой движок для игрока 1: ", true); var engine2Info = ChooseEngine(engines, "Выберите игровой движок для игрока 2: ", false); Console.Write("Введите количество туров: "); var roundQuantity = int.Parse(Console.ReadLine()); var engine1 = LoadEngine(engine1Info); var engine2 = LoadEngine(engine2Info); int engine1Wins = 0, // Побед первого движка engine2Wins = 0, // Побед второго движка engine1Faults = 0, // Ошибок первого движка engine2Faults = 0, // Ошибок второго движка draws = 0; // Ничьих var engineMove = new NumsNum(0); byte correctMoves; for (int i = 1; i < (roundQuantity * 2) + 1; i++) { _position = new NumsPosition(engine1.CreateOwnNum(), engine2.CreateOwnNum()); do { correctMoves = 0; switch (_position.PlayerToMakeMove) { case 1: // 1 engineMove = i % 2 == 1 ? engine1.GetMove(_position.FirstPlayerMoves) : engine2.GetMove(_position.FirstPlayerMoves); break; case 2: // 2 engineMove = i % 2 == 1 ? engine2.GetMove(_position.SecondPlayerMoves) : engine1.GetMove(_position.SecondPlayerMoves); break; } if (CheckMove(engineMove, _position)) { MakeMove(engineMove); } else { correctMoves = (byte)((_position.PlayerToMakeMove == 1) ? ((i % 2 == 1) ? 1 : 2) : ((i % 2 == 1) ? 2 : 1)); } } while ((GameResult == 3) && (correctMoves == 0)); if (correctMoves != 0) { if (correctMoves == 1) // Ошибся 1-й движок { engine1Faults++; } else // Второй { engine2Faults++; } } else { switch (GameResult) { case 0: draws++; break; case 1: if (i % 2 == 1) { engine1Wins++; } else { engine2Wins++; } break; case 2: if (i % 2 == 1) { engine2Wins++; } else { engine1Wins++; } break; } } Console.Clear(); Console.WriteLine("Всего игр = {0}.", i); Console.WriteLine("Ничьих = {0}", draws); Console.WriteLine("Побед {0} = {1}", engine1Info.Name, engine1Wins); Console.WriteLine("Побед {0} = {1}", engine2Info.Name, engine2Wins); Console.WriteLine("Ошибок {0} = {1}", engine1Info.Name, engine1Faults); Console.WriteLine("Ошибок {0} = {1}", engine2Info.Name, engine2Faults); } Console.WriteLine("Для продолжения нажмите любую клавишу..."); Console.ReadKey(); }
public NumsGame(byte type) { _type = type; _position = new NumsPosition(); }