示例#1
0
 void CheckHasWin()
 {
     isTie       = false;
     computerWon = false;
     humanWon    = false;
     if (!isAttack)
     {
         if (Human.BlockBodyPart != Computer.HitEnemyBodyPart)
         {
             computerWon = true;
             humanHp    -= 10; //computerWins
         }
         else
         {
             isTie = true;
         }
     }
     else
     {
         if (Human.HitEnemyBodyPart != Computer.BlockBodyPart)
         {
             humanWon    = true;
             computerHp -= 10; //humanWins
         }
         else
         {
             isTie = true;
         }
     }
     roundsPlayed++;
     RoundFinished?.Invoke(this, new EventArgs());
 }
示例#2
0
        private void PlayTurn()
        {
            int   player      = NextPlayer;
            Card  winningCard = null;
            Color?baseColor   = null;

            for (int i = 0; i < Players.Length; i++)
            {
                Card card = Players[player].GetCardToPlay(baseColor, winningCard);
                OnCardPlayed(player, card);

                if (baseColor == null)
                {
                    baseColor = card.Color;
                }

                if (card.BetterThan(winningCard))
                {
                    winningCard = card;
                    NextPlayer  = player;
                }
                player = (player + 1) % Players.Length;
            }

            Console.WriteLine(Players[NextPlayer] + " wins with " + winningCard + "!");

            Color returnedTrick = Players[NextPlayer].ReturnTrick((Color)baseColor, winningCard.IsWizzard);

            if (returnedTrick != baseColor && (!winningCard.IsWizzard || returnedTrick != Color.Red))
            {
                throw new InvalidOperationException(Players[NextPlayer] + " returned an illegal trick: " + returnedTrick + " with baseColor " + baseColor + " and winningCard " + winningCard);
            }
            RoundFinished?.Invoke(NextPlayer, returnedTrick);
        }
示例#3
0
        private void RunNextPhoto()
        {
            _chosenBucket = null;

            if (NoPhotosLeft())
            {
                RoundFinished?.Invoke(_score.TotalScore);

                return;
            }

            _runningPhoto = _roundPhotos.Dequeue();

            _runningPhoto.SetMovementVector(new Vector(0, 1));

            NextPhotoRun?.Invoke(_runningPhoto);
        }
示例#4
0
        private void Match_SubRoundFinished(object sender, EventArgs e)
        {
            WordToDraw    = null;
            RemainingTime = RoundLength;
            ResetHasGuessed();

            var player = GetCurrentlyDrawingPlayer();

            if (player != null)
            {
                player.Status = PlayerStatus.Guessing;

                PlayedPlayers.Add(player);
            }

            if (PlayedPlayers.Count >= Players.Count)
            {
                //Runde Beendet
                PlayedPlayers.Clear();
                RoundFinished?.Invoke(this, EventArgs.Empty);

                if (CurrentRound == Rounds)
                {
                    IsRunning  = false;
                    IsFinished = true;
                    MatchFinished?.Invoke(this, EventArgs.Empty);
                    return;
                }

                CurrentRound++;

                RoundStarted?.Invoke(this, new RoundStartedEventArgs(CurrentRound));
            }

            player = GetPlayerWhoHasNotPlayed();
            StartPreparationTimer(player);
        }
示例#5
0
 private void OnRoundFinished() => RoundFinished?.Invoke(this, EventArgs.Empty);
示例#6
0
 public void OnShipMissed(GamePlayer opponent)
 {
     RoundFinished?.Invoke(opponent, GameSessionRoundResult.Missed());
 }
示例#7
0
 public void OnShipHit(GamePlayer player)
 {
     RoundFinished?.Invoke(player, GameSessionRoundResult.Hit());
 }
示例#8
0
 public void OnAllShipsSunk(GamePlayer opponent)
 {
     RoundFinished?.Invoke(opponent, GameSessionRoundResult.AllSunk());
 }
示例#9
0
 public void OnRoundSkipped(GamePlayer opponent)
 {
     RoundFinished?.Invoke(opponent, GameSessionRoundResult.Skipped());
 }