Beispiel #1
0
        static void Main(string[] args)
        {
            var        random       = SingletonRandom.GetRandom();
            var        match        = new Match("Stadium#1", DateTime.Now);
            ViewReuslt ResultViewer = match.PrintMatchResult;
            var        referee      = new Referee("Kassai Viktor", random.Next(0, 1));
            Parser     parser       = new Parser();
            var        team1        = parser.GetTeam();
            var        team2        = parser.GetTeam();

            Func <int, int, bool> isMatchOver = delegate(int score1, int score2) { return(score1 > score2 || score2 > score1); };
            //Weathe coeficients that have got influence on match
            //int[] weatherCoefficiend = (int[])Enum.GetValues(typeof(Weather));
            var matchState = new MatchState(team1, team2, referee);

            match.MatchNotify      += match.StartMatch;
            match.MatchStageNotify += match.NextMatchStage;
            match.StartMatch();

            if (isMatchOver(match.State.ScoreTeam1, match.State.ScoreTeam2))
            {
                match.NextMatchStage(match);
                match.StartMatch();
            }
            else if (isMatchOver(match.State.ScoreTeam1, match.State.ScoreTeam2))
            {
                match.NextMatchStage(match);
            }
            ResultViewer(match.State.CareTaker);
        }
Beispiel #2
0
        public bool KickBall(Team enemyTeam, double teamSkill)
        {
            var random = SingletonRandom.GetRandom();
            int percentEnemyPlayersSkill = (enemyTeam.Players.Count * 80) / 100;

            bool[] gamefactors = new bool[2];
            gamefactors[0] = teamSkill > enemyTeam.TotalSkillTeam;
            foreach (var item in enemyTeam.Players)
            {
                if (Skill > item.Skill)
                {
                    --percentEnemyPlayersSkill;
                }
            }
            gamefactors[1] = percentEnemyPlayersSkill <= 0;
            return(gamefactors[random.Next(0, 1)]);
        }
Beispiel #3
0
        public void Start()
        {
            var    random     = SingletonRandom.GetRandom();
            string teamWinner = "None";
            var    teams      = new List <Team>();
            int    queue      = 0;
            int    j          = 0;

            teams.Add(Team1);
            teams.Add(Team2);

            for (int i = 0; i < Shots; i++)
            {
                var currentPlayer = teams[queue].Players.FindByIndex(j);
                var goal          = currentPlayer.PenaltyKick();

                if (goal)
                {
                    Console.WriteLine($"{currentPlayer.Name} scores goal!");
                    if (queue == 0)
                    {
                        ++ScoreTeam1;
                    }
                    else
                    {
                        ++ScoreTeam2;
                    }
                    CareTaker.LastState();
                    CareTaker.PushEvent(new Memento(Team1.TeamName, Team2.TeamName, ScoreTeam1, ScoreTeam2));
                }
                else
                {
                    Console.WriteLine($"{currentPlayer.Name} misses the gates!");
                }
                if (ScoreTeam1 - ScoreTeam2 >= 1)
                {
                    teamWinner = Team1.TeamName;
                }
                else
                {
                    teamWinner = Team2.TeamName;
                }
            }
            Console.WriteLine($"Team {teamWinner} wins! by penalty");
        }
        public void Start()
        {
            var    random = SingletonRandom.GetRandom();
            Team   oponentTeam;
            Team   currentTeam;
            Player currentPlayer;
            var    teams = new List <Team>();
            int    index = 0;
            var    goal  = false;

            teams.Add(Team1);
            teams.Add(Team2);
            for (int i = 0; i <= MatchTime; i++)
            {
                index = random.Next(0, 1);
                if (i == 45)
                {
                    Referee.MakeHalfTime(Team1.TeamName);
                    Referee.MakeHalfTime(Team2.TeamName);
                }
                if (i == 90)
                {
                    MatchTime = Referee.GiveAdditionalTime();
                }
                currentTeam   = teams[index];
                oponentTeam   = teams[index ^= 1];
                currentPlayer = currentTeam.Players.FindByIndex(random.Next(0, 10));
                goal          = currentPlayer.KickBall(oponentTeam, teams[index].TotalSkillTeam);
                if (goal)
                {
                    Console.WriteLine($"{currentPlayer.Name} scores goal!");
                    if (index == 0)
                    {
                        ++ScoreTeam1;
                    }
                    else
                    {
                        ++ScoreTeam2;
                    }
                    CareTaker.LastState();
                    CareTaker.PushEvent(new Memento(Team1.TeamName, Team2.TeamName, ScoreTeam1, ScoreTeam2));
                }
            }
        }
Beispiel #5
0
        public int GiveAdditionalTime()
        {
            var random = SingletonRandom.GetRandom();

            return(random.Next(0, 10));
        }
Beispiel #6
0
        public bool PenaltyKick()
        {
            var random = SingletonRandom.GetRandom();

            return(Skill * Lucky > random.Next(5, 150));
        }