protected override void OnNavigatedTo(NavigationEventArgs args) { if (args.Parameter as GridDefinition == null) { throw new ArgumentException("Expected a GameDefinition Parameter on Page Navigate"); //Throw exception- expect the minersweper obejct //Navigate to page using Frame.Navigate(sourcePageType, minesweeperObject); } GridDefinition grid = args.Parameter as GridDefinition; game = new Minesweeper(grid); responder.Notifier = game.Notifier; game.Notifier.Responder = responder; double wRatio = grid.width / DEFAULT_LENGTH; double hRatio = grid.height / DEFAULT_LENGTH; double wAdd = wRatio - 1; double hAdd = hRatio - 1; WIDTH += WIDTH * wAdd * 0.2; HEIGHT += HEIGHT * hAdd * 0.2; canvas.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { canvas.Width = WIDTH; canvas.Height = HEIGHT; }); Rect gameBoard = GetBoardRegion(WIDTH, HEIGHT); gameBoardConfig = new GameBoardConfig(gameBoard, grid.width, grid.height, 5, 5); }
private void drawGameBoard(CanvasAnimatedDrawEventArgs args, GameBoardConfig config) { double xCord = config.GameBoard.X; for (int xUnit = 0; xUnit < config.SpaceCountX; xUnit += 1) { xCord += config.SpaceXMargin; double yCord = config.GameBoard.Y; for (int yUnit = 0; yUnit < config.SpaceCountY; yUnit += 1) { yCord += config.SpaceYMargin; GridEntity entity = game.gridEntity[xUnit, yUnit]; bool revealed = entity.positionRevealed; bool bomb = entity.isBomb; bool flag = entity.flagSet; bool question = entity.questionSet; int number = entity.value; Rect spaceRect = new Rect(xCord, yCord, config.SpaceWidth, config.SpaceHeight); drawSpace(args.DrawingSession, spaceRect, revealed, bomb, flag, question, number); yCord += config.SpaceHeight; yCord += config.SpaceYMargin; } xCord += config.SpaceWidth; xCord += config.SpaceXMargin; } }
private CoordPair?GetBoardSpaceClick(GameBoardConfig config, Point mouseClick) { Rect board = config.GameBoard; if (mouseClick.X < board.X || mouseClick.X > board.X + board.Width) { return(null); } else if (mouseClick.Y < board.Y || mouseClick.Y > board.Y + board.Height) { return(null); } double totalWidth = config.SpaceWidth + 2 * config.SpaceXMargin; double totalHeight = config.SpaceHeight + 2 * config.SpaceYMargin; double rootedX = mouseClick.X - board.X; double rootedY = mouseClick.Y - board.Y; int indexX = (int)Math.Floor(rootedX / totalWidth); int indexY = (int)Math.Floor(rootedY / totalHeight); double coordX = board.X + config.SpaceXMargin + totalWidth * indexX; double coordY = board.Y + config.SpaceYMargin + totalHeight * indexY; if (mouseClick.X < coordX || mouseClick.X > coordX + config.SpaceWidth) { return(null); } else if (mouseClick.Y < coordY || mouseClick.Y > coordY + config.SpaceHeight) { return(null); } CoordPair pair = new CoordPair(); pair.indexX = indexX; pair.indexY = indexY; return(pair); }