Exemplo n.º 1
0
        public GameWindow([NotNull] ILogger logger, [NotNull] IOpeningBookProvider openingBookProvider)
        {
            if (logger is null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (openingBookProvider is null)
            {
                throw new ArgumentNullException(nameof(openingBookProvider));
            }

            ViewModel   = new GameWindowViewModel(logger, openingBookProvider);
            DataContext = ViewModel;

            InitializeComponent();

            _canExecuteCopyFenToClipboard     = true;
            _canExecuteCopyHistoryToClipboard = true;

            Title = AppConstants.FullTitle;

            InitializeControls(false);
            InitializePromotionControls();

            ViewModel.SubscribeToChangeOf(() => ViewModel.CurrentGameBoard, OnCurrentGameBoardChanged);
            ViewModel.SubscribeToChangeOf(() => ViewModel.IsReversedView, OnIsReversedViewChanged);
            ViewModel.SubscribeToChangeOf(() => ViewModel.IsComputerPlayerActive, OnIsComputerPlayerActiveChanged);

            Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
        }
Exemplo n.º 2
0
        public GameWindow(Hero firstPlayer, Hero secondPlayer)
        {
            InitializeComponent();
            viewModel   = new GameWindowViewModel(firstPlayer, secondPlayer);
            DataContext = viewModel;
            hp1.Value   = hp1.Maximum = firstPlayer.Hp;
            hp2.Value   = hp2.Maximum = secondPlayer.Hp;
            try
            {
                BitmapImage bitmap = new BitmapImage();
                bitmap.BeginInit();
                bitmap.UriSource = new Uri(firstPlayer.ImageUrl, UriKind.Absolute);
                bitmap.EndInit();

                LeftHero.Source = bitmap;
            }
            catch { }

            try
            {
                BitmapImage bitmap = new BitmapImage();
                bitmap.BeginInit();
                bitmap.UriSource = new Uri(secondPlayer.ImageUrl, UriKind.Absolute);
                bitmap.EndInit();

                RightHero.Source = bitmap;
            }
            catch { }
        }
Exemplo n.º 3
0
        public void BonusScore_PlayerPicksAllSimpleCategoriesAndScoreIsGreaterThan62_ReturnsBonusScore()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            _randomizer.GetRandomNumber(1, 6).Returns(1);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            _randomizer.GetRandomNumber(1, 6).Returns(2);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Twos");
            _randomizer.GetRandomNumber(1, 6).Returns(3);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Threes");
            _randomizer.GetRandomNumber(1, 6).Returns(4);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fours");
            _randomizer.GetRandomNumber(1, 6).Returns(5);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fives");
            _randomizer.GetRandomNumber(1, 6).Returns(6);
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Sixes");
            var result = vm.BonusScore[0];

            Assert.AreEqual(35, result);
        }
Exemplo n.º 4
0
        public void RollDiceCommand_CommandExecutedAfterOneCategoryAlreadyPicked_ScoreTableReturnsAvailableCategoriesCombinedWithPreviousScores()
        {
            var vm = new GameWindowViewModel(_randomizer, "A");

            _randomizer.GetRandomNumber(1, 6).Returns(1);
            ICommand rollDiceCommand     = vm.RollDiceCommand;
            ICommand pickCategoryCommand = vm.PickCategoryCommand;

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            _randomizer.GetRandomNumber(1, 6).Returns(2);
            rollDiceCommand.Execute(null);
            var expected = new Dictionary <Category, int?>
            {
                { Category.Aces, 5 },
                { Category.Twos, 10 },
                { Category.Threes, 0 },
                { Category.Fours, 0 },
                { Category.Fives, 0 },
                { Category.Sixes, 0 },
                { Category.ThreeOfKind, 10 },
                { Category.FourOfKind, 10 },
                { Category.FullHouse, 0 },
                { Category.SmallStraight, 0 },
                { Category.LargeStraight, 0 },
                { Category.Chance, 10 },
                { Category.Yahtzee, 50 },
            };
            var result = vm.ScoreTable[0];

            Assert.AreEqual(expected, result);
        }
Exemplo n.º 5
0
 public ClientNet(MenuWindowViewModel mw)
 {
     tcp               = new TcpClient();
     brickbreaker      = new GameWindow();
     brickbreakermodel = brickbreaker.DataContext as GameWindowViewModel;
     menuwindowmodel   = mw;
     SetPauseParams();
 }
Exemplo n.º 6
0
 public void Setup()
 {
     _randomizer            = Substitute.For <IRandomizer>();
     _players               = new[] { "A", "B", "C", "D" };
     _vm                    = new GameWindowViewModel(_randomizer, _players);
     _rollDiceCommand       = _vm.RollDiceCommand;
     _pickCategoryCommand   = _vm.PickCategoryCommand;
     _toggleDiceLockCommand = _vm.ToggleDiceLockCommand;
 }
Exemplo n.º 7
0
        public void GameWindowViewModel_WhenCreated_PlayerNamesAreStored()
        {
            var expected           = new[] { "A", "B", "C", "D" };
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, expected);

            var result = vm.Players;

            Assert.AreEqual(expected, result);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Init view method
        /// </summary>
        private void initView()
        {
            GameWindowModel   = new GameWindowViewModel();
            _lastMoveTime     = DateTime.Now;
            _lastMoveDownTime = DateTime.Now;

            GameWindowModel.NeedRefreshVisualControl += GameWindow_NeedRefreshVisualControl;
            CompositionTarget.Rendering += CompositionTarget_Rendering;
            KeyDown += GameWindowView_KeyDown;
        }
Exemplo n.º 9
0
        public void IsPickCategoryCommandAvailable_RollDiceCommandExecuted_ReturnsTrue()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand = vm.RollDiceCommand;

            rollDiceCommand.Execute(null);
            var result = vm.IsPickCategoryCommandAvailable.All(x => x.All(y => y.Value == true));

            Assert.IsTrue(result);
        }
Exemplo n.º 10
0
        public void IsPickCategoryCommandAvailable_RollDiceCommandExecutedAfterOneCategoryTaken_ReturnsFalseForThatCategory()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A", "B");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            var result = vm.IsPickCategoryCommandAvailable[0][Category.Aces];

            Assert.IsFalse(result);
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            VictoryValidator victoryValidator = new VictoryValidator();
            PlayerFactory    playerFactory    = new PlayerFactory(victoryValidator);
            ScenarioFactory  scenarioFactory  = new ScenarioFactory(playerFactory);

            TicTacToeControlsViewModel TicTacToeControlsViewModel = new TicTacToeControlsViewModel(new TicTacToeControlsModel(), scenarioFactory);
            TicTacToeGridViewModel     TicTacToeGridViewModel     = new TicTacToeGridViewModel(new TicTacToeGridModel(), TicTacToeControlsViewModel);
            GameWindowViewModel        GameWindowViewModel        = new GameWindowViewModel(TicTacToeControlsViewModel, TicTacToeGridViewModel);

            GameWindow gameWindow = new GameWindow(GameWindowViewModel);

            gameWindow.ShowDialog();
        }
Exemplo n.º 12
0
        public void IsPickCategoryCommandAvailable_OneCategoryTaken_ReturnsTrueForOtherCategory()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            rollDiceCommand.Execute(null);
            var result1 = vm.IsPickCategoryCommandAvailable[0][Category.Aces];
            var result2 = vm.IsPickCategoryCommandAvailable[0][Category.Twos];

            Assert.IsFalse(result1);
            Assert.IsTrue(result2);
        }
Exemplo n.º 13
0
        public static Window GetGameWindow(string gamePartnerName)
        {
            if (GameWindowPerContact.ContainsKey(gamePartnerName))
            {
                GameWindowViewModel ExistchatWindow = GameWindowPerContact[gamePartnerName].Key;
                return(GameWindowPerContact[gamePartnerName].Value);
            }

            GameWindowViewModel gameWindowViewModel = new GameWindowViewModel(new UserDTO {
                UserName = gamePartnerName
            });
            Window gameWindow = WindowService.ShowGameWindow(gameWindowViewModel);

            gameWindow.Closing += OnWindowClosing;
            GameWindowPerContact.Add(gamePartnerName, new KeyValuePair <GameWindowViewModel, Window>(gameWindowViewModel, gameWindow));
            return(gameWindow);
        }
Exemplo n.º 14
0
        public void MessageInfo_GameIsOverForOnePlayer_ReturnsWinner()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            _randomizer.GetRandomNumber(1, 6).Returns(1);

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Twos");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Threes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fours");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fives");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Sixes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("ThreeOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FourOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FullHouse");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("SmallStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("LargeStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Chance");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Yahtzee");
            var expected = "Player A is the winner!";
            var result   = vm.MessageInfo;

            StringAssert.AreEqualIgnoringCase(expected, result);
        }
Exemplo n.º 15
0
        public void RollDiceCommand_GameIsOver_CommandIsDisabled()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            _randomizer.GetRandomNumber(1, 6).Returns(1);

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Twos");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Threes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fours");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fives");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Sixes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("ThreeOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FourOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FullHouse");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("SmallStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("LargeStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Chance");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Yahtzee");

            var result = rollDiceCommand.CanExecute(null);

            Assert.IsFalse(result);
        }
Exemplo n.º 16
0
        public void TotalScore_AllCategoriesAreTaken_ReturnsTotalScore()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            _randomizer.GetRandomNumber(1, 6).Returns(1);

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Twos");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Threes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fours");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fives");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Sixes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("ThreeOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FourOfKind");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("FullHouse");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("SmallStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("LargeStraight");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Chance");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Yahtzee");
            var result = vm.TotalScore[0];

            Assert.AreEqual(20 + 50, result);
        }
Exemplo n.º 17
0
        /// <summary>
        /// confirms the selection of the room by the player
        /// if there are 2 players in the room, opens the playing field
        /// </summary>
        private void SelectRoom()
        {
            var  br       = new BinaryReader(tcp.GetStream());
            bool freeroom = br.ReadBoolean();
            bool temp     = br.ReadBoolean();

            if (freeroom)
            {
                if (temp)
                {
                    brickbreaker.Dispatcher.Invoke(() =>
                    {
                        brickbreaker          = new GameWindow();
                        brickbreakermodel     = brickbreaker.DataContext as GameWindowViewModel;
                        brickbreakermodel.con = this;
                        brickbreaker.Show();
                    });
                }
            }
            else
            {
                MessageBox.Show("This room is busy.", "System information", MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
Exemplo n.º 18
0
        public void PickCategoryCommand_PlayerPicksAllSimpleCategories_PartialScoreReturnsScore()
        {
            GameWindowViewModel vm = new GameWindowViewModel(_randomizer, "A");
            ICommand            rollDiceCommand     = vm.RollDiceCommand;
            ICommand            pickCategoryCommand = vm.PickCategoryCommand;

            _randomizer.GetRandomNumber(1, 6).Returns(1);

            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Aces");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Twos");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Threes");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fours");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Fives");
            rollDiceCommand.Execute(null);
            pickCategoryCommand.Execute("Sixes");
            var result = vm.PartialScore[0];

            Assert.AreEqual(5, result);
        }
Exemplo n.º 19
0
        //DispatcherTimer dispatcherTimer = new DispatcherTimer();
        //private int seconds = 30;
        //private DateTime deadline;

        public GameWindow(GameWindowViewModel gameVM)
        {
            InitializeComponent();
            DataContext = gameVM;
        }
Exemplo n.º 20
0
 public GameWindow(GameWindowViewModel GameWindowViewModel)
 {
     DataContext = GameWindowViewModel;
     InitializeComponent();
 }
Exemplo n.º 21
0
 public GameWindow()
 {
     InitializeComponent();
     viewModel   = new GameWindowViewModel();
     DataContext = viewModel;
 }
Exemplo n.º 22
0
 public GameWindowPage()
 {
     InitializeComponent();
     gameWindowViewModel = new GameWindowViewModel(rectangleUI, rectangleBS, rectangleSub);
     DataContext         = gameWindowViewModel;
 }
Exemplo n.º 23
0
 public void GameWindowViewModel_CanBeCreated()
 {
     GameWindowViewModel vm = new GameWindowViewModel(_randomizer, _players);
 }
Exemplo n.º 24
0
 public GameWindow(GameWindowViewModel data) : this()
 {
     _gameVm     = data;
     DataContext = _gameVm;
 }
Exemplo n.º 25
0
        /// <summary>
        /// Opens the game field.
        /// </summary>
        private void OpenGameField()
        {
            const int WindowBorderOffset = 2;

            double maxWindowRow = this.CurrentGame.Map.Windows.Max(window => window.Y);
            double maxWindowCol = this.CurrentGame.Map.Windows.Max(window => window.X);

            var gameFieldHeight = (maxWindowRow + 1) * GameConfiguration.GameWindowHeight;
            var gameFieldWidth  = (maxWindowCol + 1) * GameConfiguration.GameWindowWidth;

            var initialVerticalOffset = (SystemParameters.WorkArea.Height / 2) - (gameFieldHeight / 2)
                                        - ((maxWindowRow * WindowBorderOffset) / 2);
            var initialHorizontalOffset = (SystemParameters.WorkArea.Width / 2) - (gameFieldWidth / 2)
                                          - ((maxWindowCol * WindowBorderOffset) / 2);

            var verticalOffset = initialVerticalOffset;

            for (var currentRow = 0; currentRow <= maxWindowRow; currentRow++)
            {
                var horizontalOffset = initialHorizontalOffset;
                var windowsInRow     =
                    this.CurrentGame.Map.Windows.Where(window => window.Y == currentRow)
                    .OrderBy(window => window.X)
                    .ToList();

                for (var currentCol = 0; currentCol <= maxWindowCol; currentCol++)
                {
                    var currentWindow = windowsInRow.FirstOrDefault(window => window.X == currentCol);
                    if (currentWindow != null)
                    {
                        var gameWindow = new GameWindow();
                        gameWindow.Top         = verticalOffset;
                        gameWindow.Left        = horizontalOffset;
                        gameWindow.MinHeight   = GameConfiguration.GameWindowHeight + WindowBorderOffset;
                        gameWindow.MinWidth    = GameConfiguration.GameWindowWidth + WindowBorderOffset;
                        gameWindow.MaxHeight   = gameWindow.MinHeight;
                        gameWindow.MaxWidth    = gameWindow.MinWidth;
                        gameWindow.ResizeMode  = ResizeMode.NoResize;
                        gameWindow.WindowStyle = WindowStyle.None;
                        gameWindow.BorderBrush = new SolidColorBrush(Colors.Black);

                        // Calculate the game field borders
                        var borderThickness = new Thickness();
                        if (
                            this.CurrentGame.Map.Windows.FirstOrDefault(
                                w => w.X == currentWindow.X - 1 && w.Y == currentWindow.Y) == null)
                        {
                            borderThickness.Left = 1;
                        }

                        if (
                            this.CurrentGame.Map.Windows.FirstOrDefault(
                                w => w.X == currentWindow.X + 1 && w.Y == currentWindow.Y) == null)
                        {
                            borderThickness.Right = 1;
                        }

                        if (
                            this.CurrentGame.Map.Windows.FirstOrDefault(
                                w => w.X == currentWindow.X && w.Y == currentWindow.Y - 1) == null)
                        {
                            borderThickness.Top = 1;
                        }

                        if (
                            this.CurrentGame.Map.Windows.FirstOrDefault(
                                w => w.X == currentWindow.X && w.Y == currentWindow.Y + 1) == null)
                        {
                            borderThickness.Bottom = 1;
                        }

                        gameWindow.BorderThickness = borderThickness;

                        var gameWindowViewModel = new GameWindowViewModel(currentWindow);
                        gameWindow.DataContext = gameWindowViewModel;
                        gameWindowViewModel.GameFieldClicked  += this.GameFieldClicked;
                        gameWindowViewModel.AnimationFinished += this.AnimationFinished;

                        this.gameWindowViewModels.Add(gameWindowViewModel);
                        this.gameWindows.Add(gameWindow);

                        if (currentWindow.IsOwnWindow)
                        {
                            gameWindow.Show();
                        }
                    }

                    horizontalOffset += GameConfiguration.GameWindowWidth + WindowBorderOffset;
                }

                verticalOffset += GameConfiguration.GameWindowHeight + WindowBorderOffset;
            }
        }