Exemple #1
0
        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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #5
0
        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 });
        }
Exemple #6
0
        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]);
                }
            }
        }