public FormView()
        {
            InitializeComponent();
            _puzzleGame = new PuzzleGame {
                Name = "OriginalGame"
            };
            _puzzleGame.CreateMatrix(PEICE_SIZE, LOCATION, LOCATION);

            UpdatePictureBoxLocation();
            SetTagForPicturesbox();
        }
 public bool IsWin(PuzzleGame puzzleGame)
 {
     for (int i = 0; i < Matrix.Length; i++)
     {
         if (Matrix[i].X != puzzleGame.Matrix[i].X || Matrix[i].Y != puzzleGame.Matrix[i].Y)
         {
             return(false);
         }
     }
     return(true);
 }
        //For win state
        public PuzzleGame CustomMatrix(int peiceSize, int locX, int locY)
        {
            PuzzleGame winGame = new PuzzleGame {
                Name = "Custom"
            };

            winGame.Matrix = new PuzzlePeice[9];

            winGame.Matrix[0] = new PuzzlePeice {
                X = locX, Y = locY, Value = 0
            };
            winGame.Matrix[1] = new PuzzlePeice {
                X = locX + peiceSize, Y = locY, Value = 1
            };
            winGame.Matrix[2] = new PuzzlePeice {
                X = locX + peiceSize * 2, Y = locY, Value = 2
            };

            winGame.Matrix[3] = new PuzzlePeice {
                X = locX, Y = locY + peiceSize, Value = 3
            };
            winGame.Matrix[4] = new PuzzlePeice {
                X = locX + peiceSize, Y = locY + peiceSize, Value = 4
            };
            winGame.Matrix[5] = new PuzzlePeice {
                X = locX + peiceSize * 2, Y = locY + peiceSize, Value = 5
            };

            winGame.Matrix[6] = new PuzzlePeice {
                X = locX, Y = locY + peiceSize * 2, Value = 6
            };
            winGame.Matrix[7] = new PuzzlePeice {
                X = locX + peiceSize, Y = locY + peiceSize * 2, Value = 7
            };
            winGame.Matrix[8] = new PuzzlePeice {
                X = locX + peiceSize * 2, Y = locY + peiceSize * 2, Value = 8
            };

            return(winGame);
        }
        private void btnSaveState_Click(object sender, EventArgs e)
        {
            PuzzleGame curGame = new PuzzleGame {
                Name = "SaveData.xml", Matrix = new PuzzlePeice[9]
            };


            curGame.Matrix[0] = new PuzzlePeice {
                X = pictureBox0.Location.X, Y = pictureBox0.Location.Y, Value = (int)pictureBox0.Tag
            };
            curGame.Matrix[1] = new PuzzlePeice {
                X = pictureBox1.Location.X, Y = pictureBox1.Location.Y, Value = (int)pictureBox1.Tag
            };
            curGame.Matrix[2] = new PuzzlePeice {
                X = pictureBox2.Location.X, Y = pictureBox2.Location.Y, Value = (int)pictureBox2.Tag
            };
            curGame.Matrix[3] = new PuzzlePeice {
                X = pictureBox3.Location.X, Y = pictureBox3.Location.Y, Value = (int)pictureBox3.Tag
            };
            curGame.Matrix[4] = new PuzzlePeice {
                X = pictureBox4.Location.X, Y = pictureBox4.Location.Y, Value = (int)pictureBox4.Tag
            };
            curGame.Matrix[5] = new PuzzlePeice {
                X = pictureBox5.Location.X, Y = pictureBox5.Location.Y, Value = (int)pictureBox5.Tag
            };
            curGame.Matrix[6] = new PuzzlePeice {
                X = pictureBox6.Location.X, Y = pictureBox6.Location.Y, Value = (int)pictureBox6.Tag
            };
            curGame.Matrix[7] = new PuzzlePeice {
                X = pictureBox7.Location.X, Y = pictureBox7.Location.Y, Value = (int)pictureBox7.Tag
            };
            curGame.Matrix[8] = new PuzzlePeice {
                X = pictureBox8.Location.X, Y = pictureBox8.Location.Y, Value = (int)pictureBox8.Tag
            };

            string fileContent = Serializer.ToXmlString(curGame);

            File.WriteAllText(Path.Combine(Environment.CurrentDirectory, curGame.Name), fileContent);
        }