public PuzzlynBoardSnapShot(PuzzlynBoard puzzlynBoard) { var rows = puzzlynBoard.PuzzlynBoardLocationGrid.GetLength(0); var columns = puzzlynBoard.PuzzlynBoardLocationGrid.GetLength(1); PuzzlynBoardLocationGrid = new PuzzlynBoardLocation[rows,columns]; for (var y = 0; y < rows; y++) for (var x = 0; x < columns; x++) PuzzlynBoardLocationGrid[y, x] = new PuzzlynBoardLocation(puzzlynBoard.PuzzlynBoardLocationGrid[y, x]); }
public PuzzlynBoard(int numberOfImageRows, int numberOfImageColumns) { PuzzlynImagePieceGrid = new PuzzlynImagePiece[numberOfImageRows, numberOfImageColumns]; for (var y = 0; y < numberOfImageRows; y++) for (var x = 0; x < numberOfImageColumns; x++) PuzzlynImagePieceGrid[y, x] = new PuzzlynImagePiece(y, x); //Add 2 to each dimension for spacing PuzzlynBoardLocationGrid = new PuzzlynBoardLocation[numberOfImageRows + (Padding*2), numberOfImageColumns + (Padding*2)]; for (var y = 0; y < numberOfImageRows + (2 * Padding); y++) { for (var x = 0; x < numberOfImageColumns + (2 * Padding); x++) { var puzzlynBoardLocation = new PuzzlynBoardLocation(y, x); //Identify that we are part of the section that holds the image if (y >= Padding && y < (numberOfImageRows + Padding) && x >= Padding && x < (numberOfImageColumns + Padding)) { //If so give it an image piece puzzlynBoardLocation.PuzzlynImagePiece = PuzzlynImagePieceGrid[y - 1, x - 1]; _puzzlynImagePieceLocationLookup[puzzlynBoardLocation.PuzzlynImagePiece] = puzzlynBoardLocation; } PuzzlynBoardLocationGrid[y, x] = puzzlynBoardLocation; } } for (var y = Padding; y < numberOfImageRows + Padding; y++) { for (var x = Padding; x < numberOfImageColumns + Padding; x++) { var currentPuzzlynBoardLocation = PuzzlynBoardLocationGrid[y, x]; var randY = _random.Next(Padding, numberOfImageRows + Padding); var randX = _random.Next(Padding, numberOfImageColumns + Padding); var randomPuzzlynBoardLocation = PuzzlynBoardLocationGrid[randY, randX]; SwapImagePieces(currentPuzzlynBoardLocation, randomPuzzlynBoardLocation); } } }
private void SwapImagePieces(PuzzlynBoardLocation u, PuzzlynBoardLocation v) { var puzzlynImagePiece = u.PuzzlynImagePiece; u.PuzzlynImagePiece = v.PuzzlynImagePiece; v.PuzzlynImagePiece = puzzlynImagePiece; _puzzlynImagePieceLocationLookup[u.PuzzlynImagePiece] = u; _puzzlynImagePieceLocationLookup[v.PuzzlynImagePiece] = v; }
public PuzzlynBoardLocation(PuzzlynBoardLocation puzzlynBoardLocation) { X = puzzlynBoardLocation.X; Y = puzzlynBoardLocation.Y; PuzzlynImagePiece = puzzlynBoardLocation.PuzzlynImagePiece; }