예제 #1
0
        public void PlayNewRound(ref List <Player> spelersRef, ref List <Ronde> rondeRef, ref GanzenBoard playerBoarRef)
        {
            Spelers     = spelersRef;
            Rondes      = rondeRef;
            PlayerBoard = playerBoarRef;

            _logger.LogInformationMessage($"RONDE: {Rondes.Count}");
            var ronde = _roundService.CreateRound(Rondes.Count);

            Rondes.Add(ronde);
            var dezeRondeGegooid = _roundService.PlayRound(Spelers.Count, ronde);

            for (int i = 0; i < dezeRondeGegooid.Length; i++)
            {
                if (Rondes.Count == 1)
                {
                    Spelers[i].Pion.Locatie = new CasualLocatie(0);
                }

                if (Spelers[i].turnsToSkip >= 0)
                {
                    _logger.LogInformationMessage($"Speler { Spelers[i].Name} mag geen beurt maken");
                    Spelers[i].turnsToSkip = Spelers[i].turnsToSkip - 1;
                }
                else
                {
                    _logger.LogInformationMessage($"Speler { Spelers[i].Name} gooide { dezeRondeGegooid[i] }");

                    _logger.LogInformationMessage($"Speler zijn vorige positie: {Spelers[i].Pion.Locatie.SpelersVak}");

                    if (Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i] <= GanzenBoard.AantalValkjes)
                    {
                        Spelers[i].Pion.Locatie = PlayerBoard.Spelboardvakjes.Where(x => x.SpelersVak == Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i]).First();
                    }
                    else
                    {
                        var aantalTerug = Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i] - GanzenBoard.AantalValkjes;
                        Spelers[i].Pion.Locatie = PlayerBoard.Spelboardvakjes.Where(x => x.SpelersVak == GanzenBoard.AantalValkjes - aantalTerug).First();
                    }
                    _logger.LogInformationMessage($"Speler is aangekomen op vak:  {Spelers[i].Pion.Locatie.SpelersVak}");

                    IsSpelerOpeenGoozeBeland(i, dezeRondeGegooid[i]);

                    Spelers[i] = Spelers[i].Pion.Locatie.OpDezeSoortLocatieAangekomen(Spelers[i], PlayerBoard);

                    _logger.LogInformationMessage("");
                }
            }
            spelersRef    = Spelers;
            rondeRef      = Rondes;
            playerBoarRef = PlayerBoard;
        }
예제 #2
0
파일: Game.cs 프로젝트: roelantsm/DIConsole
        // TO DO
        // bug starpositie 9, isOpzGoozeBeland
        // cleanup Game.cs

        public void PlayNewRound()
        {
            _logger.LogInformationMessage($"RONDE: {Rondes.Count}");
            var ronde = _roundService.CreateRound(Rondes.Count);

            Rondes.Add(ronde);
            var dezeRondeGegooid = _roundService.PlayRound(Spelers.Count, ronde);


            for (int i = 0; i < dezeRondeGegooid.Length; i++)
            {
                if (Rondes.Count == 1)
                {
                    Spelers[i].Pion.Locatie = new CasualLocatie(0);
                }

                if (Spelers[i].turnsToSkip > 0)
                {
                    _logger.LogInformationMessage($"Speler { Spelers[i].Name} mag geen beurt maken");
                    Spelers[i].turnsToSkip = Spelers[i].turnsToSkip - 1;
                    continue;
                }

                if (Spelers[i].Pion.Locatie.SpelersVak == InnLocatie.InnLocation)
                {
                    if (!Spelers.Where(x => x.Pion.Locatie.SpelersVak == InnLocatie.InnLocation && x.Id != Spelers[i].Id).Any())
                    {
                        _logger.LogInformationMessage($"Speler { Spelers[i].Name} staat als enige op de well en mag geen beurt maken");
                        continue;
                    }
                }

                _logger.LogInformationMessage($"Speler { Spelers[i].Name} gooide { dezeRondeGegooid[i] }");
                _logger.LogInformationMessage($"Speler zijn vorige positie: {Spelers[i].Pion.Locatie.SpelersVak}");

                if (Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i] <= GanzenBoard.AantalValkjes)
                {
                    Spelers[i].Pion.Locatie = PlayerBoard.Spelboardvakjes.Where(x => x.SpelersVak == Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i]).First();
                }
                else
                {
                    var aantalTerug = Spelers[i].Pion.Locatie.SpelersVak + dezeRondeGegooid[i] - GanzenBoard.AantalValkjes;
                    Spelers[i].Pion.Locatie = PlayerBoard.Spelboardvakjes.Where(x => x.SpelersVak == GanzenBoard.AantalValkjes - aantalTerug).First();
                }

                _logger.LogInformationMessage($"Speler is aangekomen op vak:  {Spelers[i].Pion.Locatie.SpelersVak}");
                IsSpelerOpeenGoozeBeland(i, dezeRondeGegooid[i]);
                Spelers[i] = Spelers[i].Pion.Locatie.OpDezeSoortLocatieAangekomen(Spelers[i], PlayerBoard);
                _logger.LogInformationMessage("");
            }
        }
예제 #3
0
        public async Task <string> CreateRound(int gameId)
        {
            try
            {
                var idRound = await _roundService.CreateRound(gameId);

                var result = JsonConvert.SerializeObject(idRound);
                return(result);
            }
            catch (Exception e)
            {
                LogWriter.WriteLog(e.Message, "GameApiController");
                throw;
            }
        }
 public RoundDto CreateRound(Guid gameId, Guid playerId, [FromBody] RoundDto round)
 {
     return(_roundService.CreateRound(round));
 }