private void MoveContiguousEmptySpaces(int indexOfEmptySpaceOne, int indexOfEmptySpaceTwo, int SizeOfShiftedSpace, Shape.Direction dir, bool isVertical) { // int x1 = shapes[indexOfEmptySpaceOne].TopLeftPosition.X * ; // int y1 = shapes[indexOfEmptySpaceOne].TopLeftPosition.Y; // int x2 = shapes[indexOfEmptySpaceTwo].TopLeftPosition.X; // int y2 = shapes[indexOfEmptySpaceTwo].TopLeftPosition.Y; //switch (dir) //{ // case Shape.Direction.Left: // y1 += SizeOfShiftedSpace; // y2 += SizeOfShiftedSpace; // break; // case Shape.Direction.Right: // y1 -= SizeOfShiftedSpace; // y2 -= SizeOfShiftedSpace; // break; // case Shape.Direction.Up: // x1 += SizeOfShiftedSpace; // x2 += SizeOfShiftedSpace; // break; // case Shape.Direction.Down: // x1 -= SizeOfShiftedSpace; // x2 -= SizeOfShiftedSpace; // break; // default: // //Throw Error // break; //} //shapes[indexOfEmptySpaceOne].TopLeftPosition = new Point(x1, y1); //shapes[indexOfEmptySpaceOne].RecalculateSpacesOccupied(); //shapes[indexOfEmptySpaceTwo].TopLeftPosition = new Point(x2, y2); //shapes[indexOfEmptySpaceTwo].RecalculateSpacesOccupied(); }
private void MoveEmptySpace(int indexOfEmptySpace, Shape.Direction dir, Point dimensions) { int x = shapes[indexOfEmptySpace].TopLeftPosition.X; int y = shapes[indexOfEmptySpace].TopLeftPosition.Y; switch (dir) { case Shape.Direction.Left: y += dimensions.Y; break; case Shape.Direction.Right: y -= dimensions.Y; break; case Shape.Direction.Up: x += dimensions.X; break; case Shape.Direction.Down: x -= dimensions.Y; break; default: //Throw Error break; } shapes[indexOfEmptySpace].TopLeftPosition = new Point(x, y); shapes[indexOfEmptySpace].RecalculateSpacesOccupied(); }
private void Form1_Load(object sender, EventArgs e) { Board ourBoard = new Board(); Board currentBoard = new Board(); List<KeyValuePair<Board, int>> result = new List<KeyValuePair<Board, int>>(); #region original Start //int test = 4; Shape oneByTwoA = new Shape(new Point(1, 2), new Point(0, 0), false, "A", "11"); Shape oneByTwoB = new Shape(new Point(1, 2), new Point(0, 2), false, "B", "11"); Shape oneByTwoC = new Shape(new Point(1, 2), new Point(3, 0), false, "C", "11"); Shape oneByTwoD = new Shape(new Point(1, 2), new Point(3, 2), false, "D", "11"); Shape oneByOneF = new Shape(new Point(1, 1), new Point(0, 4), false, "F", "0"); Shape oneByOneG = new Shape(new Point(1, 1), new Point(1, 3), false, "G", "0"); Shape oneByOneH = new Shape(new Point(1, 1), new Point(2, 3), false, "H", "0"); Shape oneByOneI = new Shape(new Point(1, 1), new Point(3, 4), false, "I", "0"); Shape emptyOne = new Shape(new Point(1, 1), new Point(1, 4), true, "1", "101"); Shape emptyTwo = new Shape(new Point(1, 1), new Point(2, 4), true, "2", "101"); Shape twoByOneE = new Shape(new Point(2, 1), new Point(1, 2), false, "E", "1001"); Shape twoByTwoJ = new Shape(new Point(2, 2), new Point(1, 0), false, "J", "1000"); #endregion //Shape oneByTwoA = new Shape(new Point(1, 2), new Point(0, 0), false, "A", "11"); //Shape oneByTwoB = new Shape(new Point(1, 2), new Point(0, 2), false, "B", "11"); //Shape oneByTwoC = new Shape(new Point(1, 2), new Point(3, 0), false, "C", "11"); //Shape oneByTwoD = new Shape(new Point(1, 2), new Point(3, 2), false, "D", "11"); //Shape oneByOneF = new Shape(new Point(1, 1), new Point(1, 0), false, "F", "0"); //Shape oneByOneG = new Shape(new Point(1, 1), new Point(2, 4), false, "G", "0"); //Shape oneByOneH = new Shape(new Point(1, 1), new Point(2, 0), false, "H", "0"); //Shape oneByOneI = new Shape(new Point(1, 1), new Point(3, 4), false, "I", "0"); //Shape emptyOne = new Shape(new Point(1, 1), new Point(0, 4), true, "1", "101"); //Shape emptyTwo = new Shape(new Point(1, 1), new Point(1, 4), true, "2", "101"); //Shape twoByOneE = new Shape(new Point(2, 1), new Point(1, 1), false, "E", "1001"); //Shape twoByTwoJ = new Shape(new Point(2, 2), new Point(1, 2), false, "J", "1000"); ourBoard.shapes.Add(oneByTwoA); ourBoard.shapes.Add(oneByTwoB); ourBoard.shapes.Add(oneByTwoC); ourBoard.shapes.Add(oneByTwoD); ourBoard.shapes.Add(oneByOneF); //4 ourBoard.shapes.Add(oneByOneG); ourBoard.shapes.Add(oneByOneH); ourBoard.shapes.Add(oneByOneI); ourBoard.shapes.Add(emptyOne); //8 ourBoard.shapes.Add(emptyTwo); //9 ourBoard.shapes.Add(twoByOneE); //10 ourBoard.shapes.Add(twoByTwoJ); //11 //Test check in hahahah Point positionOfEmptySpace = ourBoard.FindEmptySpace(new Point(-1, -1)); Point positionOfSecondEmptySpace = ourBoard.FindEmptySpace(positionOfEmptySpace); result.Add(new KeyValuePair<Board,int>(ourBoard, -1)); ourBoard.CopyTo(currentBoard); //ourBoard.GetHuffmanCode(); int i; for (i = 0; !currentBoard.winningPosition(currentBoard.shapes[11].TopLeftPosition.X, currentBoard.shapes[11].TopLeftPosition.Y); i++) { currentBoard.move(currentBoard.shapes[8].TopLeftPosition, currentBoard.shapes[9].TopLeftPosition, result, i); result[i + 1].Key.CopyTo(currentBoard); Console.WriteLine("{0}", i); } Console.WriteLine("Victory! {0}", i); //List<Board> boardList = new List<Board>(); //for (int i = 0; i < 3; i++) //{ // Board t = new Board(); // ourBoard.CopyTo(t); // boardList.Add(t); // if (i == 0) // { // ourBoard.shapes[4].DirectionMovable = Shape.Direction.Down; // ourBoard.ShiftShapes(4, 8, 9); // } // if (i == 1) // { // ourBoard.shapes[11].DirectionMovable = Shape.Direction.Right; // ourBoard.ShiftShapes(11, 8, 9); // } //} //foreach (Board b in boardList) //{ // Console.WriteLine("After Shift"); // foreach (Shape s in b.shapes) // { // Console.WriteLine("Name: {0} - Position: {1}", s.Name, s.TopLeftPosition); // } //} //List<Shape> movablePieces = ourBoard.GetAllMovableShapes(); }