public void StartFight(Fighter myFighter, Fighter enemyFighter)
        {
            myFighter.Health    = health;
            enemyFighter.Health = health;
            do
            {
                Random rnd   = new Random();
                int    value = rnd.Next(0, 10);

                if (value < 5)
                {
                    myFighter.Health -= FighterDamage();
                }
                else
                {
                    enemyFighter.Health -= FighterDamage();
                }
            } while (myFighter.Health > 0 || enemyFighter.Health > 0);
            if (myFighter.Health <= 0 || enemyFighter.Health <= 0)
            {
                if (myFighter.Health <= 0)
                {
                    Winner?.Invoke("Ваш боец поражен!");
                }
                else
                {
                    Winner?.Invoke("Ваш боец победил!");
                }
            }
        }
예제 #2
0
 private void OnTriggerStay(Collider other)
 {
     if (open && other.gameObject.tag == "Player")
     {
         Winner?.Invoke();
     }
 }
예제 #3
0
        private void CalculateWhoWon(ICardPlayer player)
        {
            var houseTotal  = CountHand(_house.Hand);
            var playerTotal = CountHand(player.Hand);

            if (houseTotal > 21)
            {
                if (playerTotal <= 21)
                {
                    if (playerTotal == 21)
                    {
                        Winner?.Invoke(player, WinCondition.Blackjack);
                    }
                    else if (player.Hand.Count >= 5)
                    {
                        Winner?.Invoke(player, WinCondition.Five_Card_Charlie);
                    }
                    else
                    {
                        Winner?.Invoke(player, WinCondition.Win);
                    }
                }
                else
                {
                    Winner?.Invoke(player, WinCondition.Draw);
                }
            }
            else if (playerTotal > 21)
            {
                Winner?.Invoke(player, WinCondition.IsThisLoss);
            }
            else
            {
                if (player.Hand.Count >= 5)
                {
                    Winner?.Invoke(player, WinCondition.Five_Card_Charlie);
                }
                else if (playerTotal == 21)
                {
                    Winner?.Invoke(player, WinCondition.Blackjack);
                }
                else if (playerTotal > houseTotal)
                {
                    Winner?.Invoke(player, WinCondition.Win);
                }
                else if (houseTotal > playerTotal)
                {
                    Winner?.Invoke(player, WinCondition.IsThisLoss);
                }
                else
                {
                    Winner?.Invoke(player, WinCondition.Draw);
                }
            }
        }
예제 #4
0
        public Team Toss()
        {
            int  startSequenceStep = 0, endSequenceStep = 0;
            Team winner = null;

            while (!tossCompleted)
            {
                var key = Console.ReadKey().KeyChar;
                Debug.WriteLine($"Key pressed: {key}");

                if (startSequenceStep < startSequence.Length && startSequence[startSequenceStep] == key)
                {
                    startSequenceStep++;
                    Debug.WriteLine($"Start sequence process: {startSequenceStep} of {startSequence.Length}");
                }

                if (startSequenceStep == startSequence.Length)
                {
                    tossEnabled = true;
                    Debug.WriteLine($"Enabling toss...");
                }

                if (endSequenceStep < endSequence.Length && endSequence[endSequenceStep] == key)
                {
                    endSequenceStep++;
                    Debug.WriteLine($"End sequence process: {endSequenceStep} of {endSequence.Length}");
                }

                if (endSequenceStep == endSequence.Length)
                {
                    tossCompleted = true;
                    Debug.WriteLine($"Completing toss...");
                }

                if (teamChars.ContainsKey(key))
                {
                    Debug.WriteLine($".. {teamChars[key].Name} timer enabled {teamTimeouts[teamChars[key]].Enabled}");
                    if (!teamTimeouts[teamChars[key]].Enabled)
                    {
                        teamTimeouts[teamChars[key]].Enabled = true;
                        if (tossEnabled)
                        {
                            winner            = teamChars[key];
                            tossEnabled       = false;
                            startSequenceStep = 0;
                            Debug.WriteLine($"Winner {winner.Name}. Disabling toss...");
                            Winner?.Invoke(winner);
                        }
                    }
                }
            }

            return(winner);
        }
예제 #5
0
 public Game(Board board)
 {
     _board              = board;
     _board.BoardFilled += (s, e) =>
     {
         Result = new WinEventArgs
         {
             TimeCompleted = DateTime.Now,
             TimeStarted   = _timeOfFirstMove,
             Turns         = Turns,
             FilledEvent   = e
         };
         Winner?.Invoke(s, Result);
     };
 }
예제 #6
0
        public void Kill(Robot robot)
        {
            Robot winer = this;

            StartingFight?.Invoke(this, new EventArgs());

            while ((robot.IsAlive && this.IsAlive))
            {
                this.Attack(robot);
                robot.Attack(this);
            }

            if (robot.IsAlive)
            {
                winer = robot;
            }

            Winner?.Invoke(winer, new WinerEventArgs()
            {
                Winer = winer
            });
        }
예제 #7
0
파일: PiatVM.cs 프로젝트: rommoi/PiatVisual
        public void Move(Key k)
        {
            switch (k)
            {
            case Key.A:
                _piat.Move(Piatnashki.Direction.LEFT);
                break;

            case Key.S:
                _piat.Move(Piatnashki.Direction.DOWN);
                break;

            case Key.D:
                _piat.Move(Piatnashki.Direction.RIGHT);
                break;

            case Key.W:
                _piat.Move(Piatnashki.Direction.UP);
                break;

            default:
                break;
            }
            if (_piat.Win == true)
            {
                Win = true;
                Winner?.Invoke();
            }
            Numbers.Clear();
            foreach (var item in _piat.array)
            {
                Numbers.Add(item);
            }
            //Prop = Numbers[0];
            //NotifyPropertyChanged("Prop");
            NotifyPropertyChanged("Numbers");
        }
예제 #8
0
 public void OnWinner()
 {
     Winner?.Invoke();
 }
예제 #9
0
 public void Win(object sender, FighterEventArgs e)
 {
     Winner?.Invoke(this, new FighterEventArgs(_hp, Name));
 }
 public static void OnWinner(object sender, PlayerEventArgs e)
 {
     Winner?.Invoke(sender, e);
 }