public void CreateTurnByCells_ShortJumpsField_Jumps() { var gameField = CommonValues.ShortJumpsField; PlayerSide curSide; // Black pieces curSide = PlayerSide.Black; Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 17, 35)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 19, 33)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 28, 14)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 30, 12)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 58, 40)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 60, 42)); // White pieces curSide = PlayerSide.White; Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 23, 37)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 24, 10)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 26, 12)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 60, 42)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 21, 39)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 21, 35)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 62, 44)); }
public Result TryMakeTurn(int start, int end) { var gameTurn = GameTurnUtils.CreateTurnByTwoCells(_curField, Side, start, end); if (gameTurn == null || (gameTurn.IsSimple && _requiredJumps.Any())) { return(Result.Fail); } _turns.Add(gameTurn); GameFieldUtils.TryCreateField(_curField, gameTurn, out GameField newField); // Not the last jump if (!gameTurn.IsSimple && !gameTurn.IsLevelUp && GameTurnUtils.FindTurnsForCell(newField, gameTurn.Steps.Last(), TurnType.Jump).Any()) { _statusReporter.Status = $"{Side}: {Resources.WpfPlayer_JumpTurn_Continue}"; DoJumpsContinue = true; _curField = newField; return(Result.Continue); } _sender?.Send(GameTurnUtils.CreateCompositeJump(_turns)); return(Result.Ok); }
public void CreateTurnByCells_ShortJumpsField() { var gameField = CommonValues.ShortJumpsField; PlayerSide curSide; // Black pieces curSide = PlayerSide.Black; Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 1, 8)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 3, 12)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 19, 12)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 51, 58)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 17, 8)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 17, 26)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 19, 26)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 49, 56)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 26, 17)); // White pieces curSide = PlayerSide.White; Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 24, 33)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 53, 44)); Assert.IsNotNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 55, 46)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 24, 17)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 26, 17)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 26, 35)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 19, 12)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 53, 62)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, curSide, 55, 62)); }
public void TryCreateField_ShortJumpsField() { var oldField = CommonValues.ShortJumpsField; var correctTurns = new List <GameTurn> { GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 17, 35), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 19, 33), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 26, 12), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 24, 10), }; var incorrectTurns = new List <GameTurn> { GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 17, 33), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 30, 12), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 58, 44), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 21, 35), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 21, 39), }; foreach (var turn in incorrectTurns) { Assert.IsFalse(GameFieldUtils.TryCreateField(oldField, turn, out _)); } foreach (var turn in correctTurns) { TestUtils.CheckTurnResult(oldField, turn); } }
public void CreateCompositeTurn() { var gameField = CommonValues.LongJumpsField; var firstTurn = GameTurnUtils.CreateTurnByTwoCells(gameField, PlayerSide.Black, 55, 37); var compositeJump = TestUtils.CreateCompositeJump( gameField, PlayerSide.Black, new[] { 55, 37, 23, 5, 19 }); Assert.IsNull(GameTurnUtils.CreateCompositeJump(new GameTurn[0])); Assert.IsNull(GameTurnUtils.CreateCompositeJump(new GameTurn[] { null })); Assert.IsNull(GameTurnUtils.CreateCompositeJump(new GameTurn[] { null, null })); Assert.IsNull(GameTurnUtils.CreateCompositeJump(new GameTurn[] { firstTurn, null })); Assert.AreEqual(compositeJump.Steps, new[] { 55, 46, 37, 30, 23, 14, 5, 12, 19 }); }
public void CreateTurnByCells_ShortJumpsField_IncorrectTurns() { var gameField = CommonValues.ShortJumpsField; foreach (var playerSide in new[] { PlayerSide.Black, PlayerSide.White }) { Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, -1, -1)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, -1, 1)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 1, -1)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 1, 1)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 40, 33)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 33, 40)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 40, 39)); Assert.IsNull(GameTurnUtils.CreateTurnByTwoCells(gameField, playerSide, 23, 24)); } }
public void TryCreateField_DefaultField() { var oldField = CommonValues.DefaultField; var correctTurns = new List <GameTurn> { GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 17, 26), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 23, 30), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 46, 39), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 42, 33), }; var incorrectTurns = new List <GameTurn> { GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 7, 14), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 23, 24), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 24, 39), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 28, 35), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 42, 33), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.Black, 46, 39), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 17, 26), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 23, 30), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 33, 40), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 51, 44), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 51, 19), GameTurnUtils.CreateTurnByTwoCells(oldField, PlayerSide.White, 55, 40), }; foreach (var turn in incorrectTurns) { Assert.IsFalse(GameFieldUtils.TryCreateField(oldField, turn, out _)); } foreach (var turn in correctTurns) { Assert.IsTrue(GameFieldUtils.TryCreateField(oldField, turn, out GameField newField)); foreach (var step in turn.Steps) { Assert.AreNotEqual(oldField[step], newField[step]); } } }