Ejemplo n.º 1
0
 //------------------------------------------------------
 //
 //  Constructors
 //
 //------------------------------------------------------
 /// <summary>
 /// Initialize game puzzle
 /// </summary>
 /// <param name="puzzleHeight"></param>
 /// <param name="puzzleWidth"></param>
 /// <param name="initialGrid"></param>
 /// 
 public Game(int puzzleHeight, int puzzleWidth, int[,] initialGrid = null)
 {
     puzzle = new Puzzle(puzzleHeight, puzzleWidth, initialGrid);
     this.moves = 0;
     this.time = 0;
     this.gameName = puzzleHeight.ToString() + puzzleWidth.ToString();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (Puzzle game = new Puzzle())
     {
         game.Run();
     }
 }
Ejemplo n.º 3
0
 public void InvariantTest3()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { { 3,2,10,7 }, { 8,5,4,1 }, { 9,6,0,11 }, { 12,13,14,15 } });
     bool result = puzzle.LowerRowInvariant(2, 2);
     Assert.AreEqual(true, result, "Test #9 invariant test");
     string move = puzzle.SolveInteriorTile(2, 2);
     Assert.AreEqual(move, "uulddruld", "Test #11 solve_interior test");
 }
Ejemplo n.º 4
0
 public void InvariantTest4()
 {
     Puzzle puzzle = new Puzzle(3, 3, new int[,] { { 8, 7, 6 }, { 5, 4, 3 }, { 2, 1, 0 }});
     bool result = puzzle.LowerRowInvariant(2, 2);
     Assert.AreEqual(true, result, "Test #18  invariant test");
     string move = puzzle.SolveInteriorTile(2, 2);
     Assert.AreEqual(move, "uulldrruldrulddruld", "Test #20 solve_interior test");
     move = puzzle.SolveInteriorTile(2, 1);
     Assert.AreEqual(move, "uulddruld", "Test #22 solve_interior test");
 }
Ejemplo n.º 5
0
 public void InvariantTest1()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { { 4, 2, 3, 7 }, { 8, 5, 6, 1 }, { 9, 10, 0, 11 }, { 12, 13, 14, 15 } });
     bool result = puzzle.LowerRowInvariant(2, 2) ;
     Assert.AreEqual(true, result, "Test #3 invariant test");
     string move = puzzle.SolveInteriorTile(2, 2);
     result = puzzle.LowerRowInvariant(2, 1);
     Assert.AreEqual(true, result, "Test #4 invariant test");
     Assert.AreEqual(move, "l", "Test #5 solve_interior test");
 }
Ejemplo n.º 6
0
        public void SolvePuzzleTest2()
        {
            for (int idx = 0; idx < 10; idx++)
            {
                Puzzle puzzle = new Puzzle(5, 5);
                bool result = puzzle.CheckSolved(0, 0);
                Assert.AreEqual(false, result, "Should be not solved Test: " + idx);
                puzzle.SolvePuzzle();
                result = puzzle.CheckSolved(0, 0);
                Assert.AreEqual(true, result, "Should be solved Test: " + idx);
            }

        }
Ejemplo n.º 7
0
 public void CheckSolved1()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { { 0, 1, 3, 2 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } });
     bool result = puzzle.CheckSolved(0, 0);
     Assert.AreEqual(false, result, "Test #52  Checksolvd");
 }
Ejemplo n.º 8
0
 public void CheckSolvedAll()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } });
     bool result = puzzle.CheckSolvedAll();
     Assert.AreEqual(true, result, "Test #50  Checksolvd");
 }
Ejemplo n.º 9
0
 public void SolveRow1TileTest13()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { {3,1,6,0}, {4,2,5,7 }, {8,9,10,11 }, { 12,13,14,15 } });
     bool result = puzzle.Row0Invariant(3);
     Assert.AreEqual(true, result, "Test #41  Row0Invariant");
     string move = puzzle.SolveRow0Tile(3);
     //move = puzzle.SolveRow1Tile(2);
    // move = puzzle.SolveRow0Tile(2);
    // move = puzzle.Solve2x2();
 }
Ejemplo n.º 10
0
 public void SolveRow1TileTest12()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { {7,6,4,1}, {5,2,3,0 }, {8,9,10,11 }, { 12,13,14,15 } });
     bool result = puzzle.Row1Invariant(3);
     Assert.AreEqual(true, result, "Test #40  Row1Invariant");
 }
Ejemplo n.º 11
0
 public void SolveRow1TileTest11()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { {4,6,1,7}, {5,2,3,0 }, {8,9,10,11 }, { 12,13,14,15 } });
     bool result = puzzle.Row1Invariant(3);
     Assert.AreEqual(true, result, "Test #39  Row1Invariant");
     string move = puzzle.SolveRow1Tile(3);
    
 }
Ejemplo n.º 12
0
 public void SolveRow1TileTest10()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { {4,2,1,3}, {5,6,7,0 }, {8,9,10,11 }, { 12,13,14,15 } });
     bool result = puzzle.Row1Invariant(3);
     Assert.AreEqual(true, result, "Test #37  Row1Invariant");
     string move = puzzle.SolveRow1Tile(3);
     Assert.AreEqual(move, "lur", "Test #38  SolveRow1Tile");
 }
Ejemplo n.º 13
0
 public void Row0InvariantTest9()
 {
     Puzzle puzzle = new Puzzle(4, 4, new int[,] { {4,2,0,3}, { 5,1,6,7}, { 8,9,10,11 }, { 12,13,14,15 } });
     bool result = puzzle.Row0Invariant(2);
     Assert.AreEqual(true, result, "Test #36  Row0Invariant");
 }
Ejemplo n.º 14
0
        public void InvariantTest7()
        {
            Puzzle puzzle = new Puzzle(4, 4, new int[,] { { 3,2,10,7 }, { 8,5,4,1 }, { 9,6,12,11 }, { 0,13,14,15 } });
            bool result = puzzle.LowerRowInvariant(3, 0);
            Assert.AreEqual(true, result, "Test #32  invariant test");

            string move = puzzle.SolveCol0Tile(3);
            Assert.AreEqual(move, "urrulldruldrdlurdluurddlurrr", "Test #31solve_interior test");
        }
Ejemplo n.º 15
0
        public void InvariantTest6()
        {
            Puzzle puzzle = new Puzzle(3, 3, new int[,] { { 2, 1, 5 }, { 4, 3, 6 }, { 0, 7, 8 } });
            bool result = puzzle.LowerRowInvariant(2, 0);
            Assert.AreEqual(true, result, "Test #29  invariant test");

            string move = puzzle.SolveCol0Tile(2);
            Assert.AreEqual(move, "urrulldruldrdlurdluurddlurr", "Test #31solve_interior test");
        }
Ejemplo n.º 16
0
        public void InvariantTest5()
        {
            Puzzle puzzle = new Puzzle(3, 3, new int[,] { { 3, 2, 1 }, { 6, 5, 4 }, { 0, 7, 8 } });
            bool result = puzzle.LowerRowInvariant(2, 0);
            Assert.AreEqual(true, result, "Test #26  invariant test");

            string move = puzzle.SolveCol0Tile(2);
            Assert.AreEqual(move, "urr", "Test #28 solve_interior test");
        }
Ejemplo n.º 17
0
 /// <summary>
 /// Make a copy of the puzzle to update during solving
 /// </summary>
 /// <returns></returns>
 public Puzzle Clone()
 {
     Puzzle newPuzzle = new Puzzle(this.height, this.width, this.grid);
     return newPuzzle;
 }
Ejemplo n.º 18
0
        public void SolveInterior15()
        {
            Puzzle puzzle = new Puzzle(4, 4, new int[,] 
                { { 4, 2, 5, 6 },
                  { 12, 7, 8, 3 }, 
                  { 9, 14, 15, 0 }, 
                  { 13, 10, 11, 1 } });
          
            string move = puzzle.SolveInteriorTile(3, 3);
            Assert.AreEqual(move, "duldruld", "Test #485 " + move);

            move = puzzle.SolveInteriorTile(3, 2);
            Assert.AreEqual(move, "uldruld", "Test #486 " + move);

            move = puzzle.SolveInteriorTile(3, 1);
            Assert.AreEqual(move, "l", "Test #487 " + move);

            move = puzzle.SolveCol0Tile(3);
            Assert.AreEqual(move, "uurdlruldrdlurdluurddlurrrr", "Test #488 " + move);

            move = puzzle.SolveInteriorTile(2, 3);
            Assert.AreEqual(move, "l", "Test #489");

            move = puzzle.SolveInteriorTile(2, 2);
            Assert.AreEqual(move, "l", "Test #490");

            move = puzzle.SolveInteriorTile(2, 1);
            Assert.AreEqual(move, "uld", "Test #491");

            move = puzzle.SolveCol0Tile(2);
            Assert.AreEqual(move, "urrulldruldrdlurdluurddlurrr", "Test #492");

            move = puzzle.SolveRow1Tile(3);
            Assert.AreEqual(move, "ullldrruldrruldru", "Test #493");

            move = puzzle.SolveRow0Tile(3);
            Assert.AreEqual(move, "lduldruldurdlurrdluldrruld", "Test #494");
            
            move = puzzle.SolveRow1Tile(3);
            Assert.AreEqual(move, "lur", "Test #495");

            move = puzzle.SolveRow0Tile(3);
            Assert.AreEqual(move, "ld", "Test #496");

            move = puzzle.Solve2x2();
            Assert.AreEqual(move, "lu", "Test #497");
        }