Esempio n. 1
0
        public void MoveTest()
        {
            GameState.RestartGame(numberOfDisks);
            Move move = new Move(0, 2);

            //Set expected values
            int expectedMoveCount = 1;
            int expectedDiskCountForPole0 = 2;
            int expectedDiskCountForPole1 = 0;
            int expectedDiskCountForPole2 = 1;

            //Get actual values
            int actualMoveCount = GameState.MakeMove(move);
            int actualDiskCountForPole0 = GameState.Poles[0].Disks.Count;
            int actualDiskCountForPole1 = GameState.Poles[1].Disks.Count;
            int actualDiskCountForPole2 = GameState.Poles[2].Disks.Count;

            //Assert
            Assert.AreEqual(expectedMoveCount, actualMoveCount);
            Assert.AreEqual(expectedDiskCountForPole0, actualDiskCountForPole0);
            Assert.AreEqual(expectedDiskCountForPole1, actualDiskCountForPole1);
            Assert.AreEqual(expectedDiskCountForPole2, actualDiskCountForPole2);
        }
Esempio n. 2
0
        public void GetMovesTest()
        {
            int amountOfDisks = 3;
            Pole pole0 = new Pole(0);
            Pole pole1 = new Pole(1);
            Pole pole2 = new Pole(2);

            //Set expected moves
            List<Move> expectedMoves = new List<Move>();
            Move move1 = new Move(pole0, pole2);
            Move move2 = new Move(pole0, pole1);
            Move move3 = new Move(pole2, pole1);
            Move move4 = new Move(pole0, pole2);
            Move move5 = new Move(pole1, pole0);
            Move move6 = new Move(pole1, pole2);
            Move move7 = new Move(pole0, pole2);
            expectedMoves.Add(move1);
            expectedMoves.Add(move2);
            expectedMoves.Add(move3);
            expectedMoves.Add(move4);
            expectedMoves.Add(move5);
            expectedMoves.Add(move6);
            expectedMoves.Add(move7);

            //Get actual moves
            List<Move> actualMoves = MoveCalculator.GetMoves(amountOfDisks);

            //Assert
            Assert.AreEqual(expectedMoves.Count, actualMoves.Count);
            Assert.AreEqual(expectedMoves[0], actualMoves[0]);
            Assert.AreEqual(expectedMoves[1], actualMoves[1]);
            Assert.AreEqual(expectedMoves[2], actualMoves[2]);
            Assert.AreEqual(expectedMoves[3], actualMoves[3]);
            Assert.AreEqual(expectedMoves[4], actualMoves[4]);
            Assert.AreEqual(expectedMoves[5], actualMoves[5]);
            Assert.AreEqual(expectedMoves[6], actualMoves[6]);
        }
Esempio n. 3
0
        public static int MakeMove(Move move)
        {
            if (move == null || move.FromPole == null || move.ToPole == null)
            {
                return -1;
            }
            if (move.AffectCount())
            {
                MoveCount++;
            }

            if (move.IsValid())
            {
                Disk disk = move.FromPole.GetTopDisk();
                Poles[move.FromPole.Number].RemoveDisk();
                Poles[move.ToPole.Number].AddDisk(disk);
                return MoveCount;
            }

            else //Invalid move
            {
                return -1;
            }
        }
Esempio n. 4
0
        void thisBox_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
        {
            Disk disk = (Disk)sender;
            disk.Location = new Point(Cursor.Position.X - this.Location.X - (disk.Size.Height / 2),
                                             Cursor.Position.Y - this.Location.Y - (disk.Size.Width / 2));

            if (e.Action == DragAction.Drop)
            {
                int destinationPoleNumber = DeterminePoleFromCursorPosition();
                Pole currentPole = GameState.FindDisk(disk);
                Move move = new Move(currentPole, GameState.Poles[destinationPoleNumber]);

                if (move.IsValid())
                {
                    MakeMove(move);
                }
                else
                {
                    Move moveBack = new Move(currentPole, currentPole);
                    GameState.MakeMove(moveBack);
                }
            }
        }
Esempio n. 5
0
 private void MakeMove(Move move)
 {
     int moveCount = GameState.MakeMove(move);
     moveCounter.Text = moveCount.ToString();
     if (GameState.IsSolved())
     {
         possibleToSolve.Text = "Solved :) ";
     }
 }
Esempio n. 6
0
 private void MakeMove(Move move)
 {
     int moveCount = GameState.MakeMove(move);
     moveCounter.Text = moveCount.ToString();
     if (GameState.IsSolved())
     {
         if (!solveme)
         {
             MySqlCommand comm = new MySqlCommand("insert into gameresults(gameid,stdid,recorddate,score,level) values ("
                 + Program.arg[1] + ",'" + Program.arg[0] + "',NOW(),'" + GameState.MoveCount + "','"
                 + GameState.Poles[Properties.Settings.Default.EndPole].Disks.Count + "');", Kindergarten.func.connection);
             //System.Windows.Forms.MessageBox.Show(comm.CommandText);
             comm.ExecuteNonQuery();
         }
         possibleToSolve.Text = "Solved :) ";
         solveme = false;
     }
 }