コード例 #1
0
        private void StartGame(object parameter)
        {
            //nav.EndMainMusic();
            dbOps.StartGameTransaction(SelectedPlayers, gameType);
            PlayGameView dicesView = new PlayGameView();

            SelectedViewModel     = new DicesViewModel(playerEngine);
            dicesView.DataContext = SelectedViewModel;
        }
コード例 #2
0
ファイル: GameService.cs プロジェクト: Dmytronak/Web
        public async Task <PlayGameView> GetActive(string userId)
        {
            var activeGameOfUser = await _playerInGameRepository.GetActiveByUserId(userId);

            if (activeGameOfUser == null)
            {
                throw new CustomServiceException("Active game is doesn`t exist! Play new game.");
            }
            var activeGame = activeGameOfUser.Game;
            var playerStep = await _playerStepRepository.GetByGameId(activeGame.Id);

            var boSteps = await _botStepRepository.GetByGameId(activeGame.Id);

            var playerInGame = await _playerInGameRepository.GetByGameId(activeGame.Id);

            var botList = boSteps
                          .Select(x => x.Bot)
                          .Distinct()
                          .ToList();
            var groupedBotSteps = boSteps.GroupBy(x => x.BotId);
            var response        = new PlayGameView()
            {
                NumberOfBots = activeGame.NumberOfBots,
                Status       = activeGame.Status,
                Winner       = activeGame.Winner,
                Player       = new PlayerPlayGameView()
                {
                    Name = playerInGame
                           .Select(x => x.Player.Name)
                           .FirstOrDefault(),
                    Cards = playerStep
                            .Select(cardPlayGameViewItem => new CardPlayGameViewItem()
                    {
                        Rank = cardPlayGameViewItem.Rank,
                        Suit = cardPlayGameViewItem.Suit
                    })
                            .ToList()
                },
                Bots = groupedBotSteps
                       .Select(botPlayGameViewItem => new BotPlayGameViewItem
                {
                    Name  = botList.FirstOrDefault(bot => bot.Id == botPlayGameViewItem.Key).Name,
                    Cards = botPlayGameViewItem
                            .Select(cardPlayGameViewItem => new CardPlayGameViewItem()
                    {
                        Rank = cardPlayGameViewItem.Rank,
                        Suit = cardPlayGameViewItem.Suit
                    })
                            .ToList()
                })
                       .ToList()
            };

            return(response);
        }
コード例 #3
0
 //Metod för att återställa tärningarnas värde till 0 inför ny runda
 private void ResetDices()
 {
     count = 0;
     for (int i = 0; i < Dices.Count; i++)
     {
         Dices[i].DiceValue     = 0;
         Dices[i].IsDiceEnabled = true;
         Dices[i].DiceImage     = null;
         Dices[i].DiceHasValue  = false;
     }
     throwsLeft = 3;
     SetThrowsLeft(throwsLeft);
     pgv = new PlayGameView(1);
 }
コード例 #4
0
        public DicesViewModel(PlayerEngine _playerEngine)
        {
            Player       = new Player();
            playerEngine = _playerEngine;
            dbOps        = new DbOperations();
            random       = new Random();

            gameType      = playerEngine.SetGameType();
            ActivePlayers = playerEngine.SetPlayers();
            ActivePlayer  = playerEngine.SetActivePlayer();
            GenerateDices();
            GetGameEngine();
            DiceImages();
            SetWarningTimer();
            SetEndTimer();

            pgv        = new PlayGameView(0);
            count      = 0;
            throwsLeft = 3;
            gameEnded  = false;
            SetThrowsLeft(throwsLeft);

            SaveDiceCommand  = new RelayCommand(SaveDice, CanSaveDices);
            RollDicesCommand = new RelayCommand(RollDices, IsTriesEnabled);
            Ones             = new RelayCommand(ChooseScoreCategory, IsOnesEnabled);
            Twos             = new RelayCommand(ChooseScoreCategory, IsTwosEnabled);
            Threes           = new RelayCommand(ChooseScoreCategory, IsThreesEnabled);
            Fours            = new RelayCommand(ChooseScoreCategory, IsFoursEnabled);
            Fives            = new RelayCommand(ChooseScoreCategory, IsFivesEnabled);
            Sixes            = new RelayCommand(ChooseScoreCategory, IsSixesEnabled);
            Pair             = new RelayCommand(ChooseScoreCategory, IsPairEnabled);
            TwoPair          = new RelayCommand(ChooseScoreCategory, IsTwoPairEnabled);
            Threeofakind     = new RelayCommand(ChooseScoreCategory, IsThreeOfaKindEnabled);
            Fourofakind      = new RelayCommand(ChooseScoreCategory, IsFourOfaKindEnabled);
            Smallstraight    = new RelayCommand(ChooseScoreCategory, IsSmalLadderEnabled);
            Largestraight    = new RelayCommand(ChooseScoreCategory, IsLargeLadderEnabled);
            Fullhouse        = new RelayCommand(ChooseScoreCategory, IsFullHouseEnabled);
            Chance           = new RelayCommand(ChooseScoreCategory, IsChanceEnabled);
            Yatzy            = new RelayCommand(ChooseScoreCategory, IsYatzyEnabled);
            QuitGameCommand  = new RelayCommand(QuitGame, CanExecuteMethod);
        }
コード例 #5
0
ファイル: GameService.cs プロジェクト: Dmytronak/Web
        public async Task <PlayGameView> Play(int numberOfBots, string userId)
        {
            if (numberOfBots <= 0)
            {
                throw new CustomServiceException("NumberOfBots is 0!");
            }
            var player = await _playerRepository.GetByUserId(userId);

            var shuffledDeck = await _cardHelper.Shuffle();

            var winner = "No one";
            var bots   = await _botRepository.GetAll();

            if (bots.Count == 0)
            {
                throw new CustomServiceException("Bots doesn`t exist. Add bots on Data base!");
            }
            var botList = bots
                          .OrderBy(x => Guid.NewGuid())
                          .Take(numberOfBots)
                          .ToList();
            var game = new Game()
            {
                NumberOfBots = numberOfBots,
                Status       = StatusType.New,
                Winner       = winner
            };
            var gameId = game.Id;
            var deck   = shuffledDeck
                         .Select(x => new Card()
            {
                GameId = gameId,
                Rank   = x.Rank,
                Suit   = x.Suit,
            })
                         .ToList();
            var playerCard = GetPlayerCard(deck);
            var playerStep = new PlayerStep()
            {
                Rank   = playerCard.Rank,
                Suit   = playerCard.Suit,
                GameId = game.Id
            };
            var botsCards    = GetCardsOfBots(botList, deck);
            var botsSteps    = GetBotSteps(botList, botsCards, gameId);
            var playerInGame = new PlayerInGame()
            {
                PlayerId = player.Id,
                GameId   = game.Id,
                Score    = GetCardValue(playerCard.Rank)
            };
            var botInGame = botsSteps
                            .Select(x => new BotInGame()
            {
                GameId = game.Id,
                BotId  = x.BotId,
                Score  = GetCardValue(x.Rank)
            })
                            .ToList();

            var cardPlayGameViewItems = new List <CardPlayGameViewItem>
            {
                new CardPlayGameViewItem()
                {
                    Rank = playerStep.Rank,
                    Suit = playerStep.Suit
                }
            };
            var groupedBotSteps = botsSteps.GroupBy(x => x.BotId);
            var response        = new PlayGameView()
            {
                NumberOfBots = numberOfBots,
                Status       = StatusType.New,
                Winner       = winner,
                Player       = new PlayerPlayGameView()
                {
                    Name  = player.Name,
                    Cards = cardPlayGameViewItems
                },
                Bots = groupedBotSteps
                       .Select(botPlayGameViewItem => new BotPlayGameViewItem
                {
                    Name  = botList.FirstOrDefault(bot => bot.Id == botPlayGameViewItem.Key).Name,
                    Cards = botPlayGameViewItem
                            .Select(cardPlayGameViewItem => new CardPlayGameViewItem()
                    {
                        Rank = cardPlayGameViewItem.Rank,
                        Suit = cardPlayGameViewItem.Suit
                    })
                            .ToList()
                })
                       .ToList()
            };

            await _gameRepository.Create(game);

            await _playerStepRepository.Create(playerStep);

            await _botStepRepository.CreateRange(botsSteps);

            await _playerInGameRepository.Create(playerInGame);

            await _botInGameRepository.CreateRange(botInGame);

            await _cardRepository.CreateRange(deck);

            return(response);
        }