Exemple #1
0
        public MainPage()
        {
            this.InitializeComponent();
            var BigBoard = new BigBoard();

            main.Children.Add(BigBoard.stkBase);
        }
Exemple #2
0
        private void OnSizeChanged(object sender, SizeChangedEventArgs sizeChangedEventArgs)
        {
            if (sizeChangedEventArgs.NewSize.Width < sizeChangedEventArgs.NewSize.Height)
            {
                //TopRow.Height = new GridLength(100, GridUnitType.Pixel);

                BigBoard.Visibility   = Visibility.Collapsed;
                SmallBoard.Visibility = Visibility.Visible;
                LeftColumn.Width      = new GridLength(1, GridUnitType.Star);
                RightColumn.Width     = new GridLength(0, GridUnitType.Pixel);

                //backButton.Style = Application.Current.Resources["SnappedBackButtonStyle"] as Style;
                //pageTitle.Style = Application.Current.Resources["SnappedPageHeaderTextStyle"] as Style;

                Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    var size = Math.Min(BottomRow.ActualHeight, LeftColumn.ActualWidth);
                    //SmallBoardScrollViewer.Width = SmallBoardScrollViewer.Height = size;
                    SmallBoard.Width = SmallBoard.Height = size;

                    SmallBoard.FixPieces();
                });
            }
            else
            {
                //TopRow.Height = new GridLength(140, GridUnitType.Pixel);

                BigBoard.Visibility   = Visibility.Visible;
                SmallBoard.Visibility = Visibility.Collapsed;
                LeftColumn.Width      = new GridLength(1, GridUnitType.Auto);
                RightColumn.Width     = new GridLength(1, GridUnitType.Star);

                //backButton.Style = Application.Current.Resources["BackButtonStyle"] as Style;
                //pageTitle.Style = Application.Current.Resources["PageHeaderTextStyle"] as Style;

                Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    var size = Math.Min(ActualHeight, RightColumn.ActualWidth);
                    //BigBoardScrollViewer.Width = BigBoardScrollViewer.Height = size;
                    BigBoard.Width = BigBoard.Height = size;

                    BigBoard.FixPieces();
                });
            }
        }
Exemple #3
0
        private void AdjustToVm(string propertyName)
        {
            if (_viewModel == null)
            {
                return;
            }

            switch (propertyName)
            {
            case nameof(GamePageViewModel.MessageText):
                if (!String.IsNullOrEmpty(_viewModel.MessageText))
                {
                    BigBoard.DisplayMessageAnimation();
                    SmallBoard.DisplayMessageAnimation();
                }
                else
                {
                    BigBoard.HideMessageAnimation();
                    SmallBoard.HideMessageAnimation();
                }
                break;

            case nameof(GamePageViewModel.WhoseTurn):
                if (_viewModel.WhoseTurn == 0)
                {
                    BouncePlayer1Storyboard.Begin();
                    BouncePlayer2Storyboard.Stop();
                }
                else
                {
                    BouncePlayer1Storyboard.Stop();
                    BouncePlayer2Storyboard.Begin();
                }
                break;
            }
        }
Exemple #4
0
    static void Main(string[] args)
    {
        string[] inputs;

        BigBoard boards = new BigBoard();

        // game loop
        while (true)
        {
            inputs = Console.ReadLine().Split(' ');
            int opponentRow = int.Parse(inputs[0]);
            int opponentCol = int.Parse(inputs[1]);

            Board board;
            var   pos = new Position {
                Y = opponentRow, X = opponentCol
            };

            if (opponentRow != -1)
            {
                Board oppBoard = boards.GetBoard(pos);

                var littlePositionOpponent = Board.BigToLittlePosition(pos);

                oppBoard.UpdateState(littlePositionOpponent, PositionState.Opponent);

                board = boards.boards[littlePositionOpponent.Y, littlePositionOpponent.X];
            }
            else
            {
                board = boards.boards[0, 0];
                pos   = new Position {
                    Y = 0, X = 0
                };
                // get a random board
            }

            int validActionCount = int.Parse(Console.ReadLine());
            var validPositions   = new List <Position>();

            for (int i = 0; i < validActionCount; i++)
            {
                inputs = Console.ReadLine().Split(' ');
                int row = int.Parse(inputs[0]);
                int col = int.Parse(inputs[1]);

                validPositions.Add(new Position {
                    Y = row, X = col
                });
            }

            var playableBoards = new List <Board>();

            foreach (var checkBoard in boards.boards)
            {
                BoardState boardState = checkBoard.GetBoardState();
                checkBoard.BoardState = boardState;

                if (boardState == BoardState.NotComplete)
                {
                    playableBoards.Add(checkBoard);
                }
            }

            if (board.BoardState == BoardState.NotComplete)
            {
                var bestPosition = board.GetBestPosition();

                Console.Error.WriteLine(bestPosition.ToString());

                var opponentPosition = Board.BigToLittlePosition(pos);

                var newPositionX = (opponentPosition.X * 3) + bestPosition.X;
                var newPositionY = (opponentPosition.Y * 3) + bestPosition.Y;

                var newPosition = new Position {
                    X = newPositionX, Y = newPositionY
                };

                Console.Error.WriteLine(board.ToString());

                PlayPosition(newPosition);
                //var littlePosition = Board.BigToLittlePosition(newPosition);
                board.UpdateState(bestPosition, PositionState.Player);
            }
            else
            {
                int   best      = 0;
                Board bestBoard = null;

                foreach (var testBoard in playableBoards)
                {
                    int playersInBoard = testBoard.NumberOfPlayerSpaces();

                    if (playersInBoard > best)
                    {
                        best      = playersInBoard;
                        bestBoard = testBoard;
                    }
                }

                Console.Error.WriteLine(bestBoard.ToString());

                var bestPosition = bestBoard.GetBestPosition();

                var newPositionX = (bestBoard.Position.X * 3) + bestPosition.X;
                var newPositionY = (bestBoard.Position.Y * 3) + bestPosition.Y;

                var newPosition = new Position {
                    X = newPositionX, Y = newPositionY
                };

                PlayPosition(newPosition);
                //var littlePosition = Board.BigToLittlePosition(newPosition);
                //board = boards.boards[littlePosition.Y, littlePosition.X];
                bestBoard.UpdateState(bestPosition, PositionState.Player);
            }
        }
    }