如何将我的代码重构为OOP

时间:2017-08-01 00:24:51

标签: c# oop

我开始学习c#语言。我创建了一个简短易用的控制台应用程序,但没有做太多。那么你可以检查一下。它关于足球(足球)比赛。我真的想使用类和方法将该代码重构为OOP,但我不知道从哪里开始。在我的应用程序中,您可以从两个团队中选择一个,然后随机检查结果。但我想添加一个选项,你可以从1到更多的团队中选择。说实话,开始时可能只有4支球队。我知道我需要使用类来编写相同的代码块。我仍然很难理解OOP。如果有人能够以最简单的方式重新获取我的代码,我希望我能从中获得更多。谢谢

class Program
{
    static void Main(string[] args)
    {
        int inputGames = 0;
        string userInput;
        while (true)
        {
            Console.Write("Please select your team: Type '1' for FC Barcelona or '2' for Real Madrid: ");
            userInput = Console.ReadLine();

            if (userInput == "1")
            {
                Console.Write("Your select FC Barcelona. How many games you want to play against Real Madrid?: ");
                inputGames = int.Parse(Console.ReadLine());
                break;
            }
            else if (userInput == "2")
            {
                Console.Write("Your select Real Madrid. How many games you want to play against FC Barcelona?: ");
                inputGames = int.Parse(Console.ReadLine());
                break;
            }
            else
            {
                Console.Write("Wrong input! Try Again.");
                continue;
            }
        }



        int game = 0;
        //string clubA = "FC Barcelona";
        //string clubB = "Real Madrid";
        int teamAwins = 0;
        int teamBwins = 0;
        int teamAlose = 0;
        int teamBlose = 0;
        int teamAdraw = 0;
        int teamBdraw = 0;
        int teamApoints = 0;
        int teamBpoints = 0;
        int teamAgoles = 0;
        int teamBgoles = 0;

        while (game < inputGames )
        {

            int teamA = 0;
            int teamB = 0;
            int teamAresult = 0;
            int teamBresult = 0;

            int TeamADefense = 8;
            int TeamAMidfield = 9;
            int TeamAAttack = 10;
            int TeamAMentality = 8;

            int TeamBDefense = 9;
            int TeamBMidfield = 8;
            int TeamBAttack = 9;
            int TeamBMentality = 9;


            Random Num = new Random();
            int RandomTADefense = Num.Next(TeamADefense - 5, TeamADefense + 1);
            int RandomTAMidfield = Num.Next(TeamAMidfield - 5, TeamAMidfield + 1);
            int RandomTAAttack = Num.Next(TeamAAttack - 5, TeamAAttack + 1);
            int RandomTAMentality = Num.Next(TeamAMentality - 5, TeamAMentality + 1);

            int RandomTBDefense = Num.Next(TeamBDefense - 5, TeamBDefense + 1);
            int RandomTBMidfield = Num.Next(TeamBMidfield - 5, TeamBMidfield + 1);
            int RandomTBAttack = Num.Next(TeamBAttack - 5, TeamBAttack + 1);
            int RandomTBMentality = Num.Next(TeamBMentality - 5, TeamBMentality + 1);

            //Console.WriteLine("FC Barcelona - Defense: {0}", RandomTADefense);
            //Console.WriteLine("FC Barcelona - Midfield: {0}", RandomTAMidfield);
            //Console.WriteLine("FC Barcelona - Attack: {0}", RandomTAAttack);
            //Console.WriteLine("FC Barcelona - Mentality: {0}", RandomTAMentality);
            //Console.WriteLine("Real Madrid - Defense: {0}", RandomTBDefense);
            //Console.WriteLine("Real Madrid - Midfield: {0}", RandomTBMidfield);
            //Console.WriteLine("Real Madrid - Attack: {0}", RandomTBAttack);
            //Console.WriteLine("Real Madrid - Mentality: {0}", RandomTBMentality);


            if (RandomTADefense > RandomTBDefense)
            {
                teamA++;
            }
            else
            {
                teamB++;
            }
            if (RandomTAMidfield > RandomTBMidfield)
            {
                teamA++;
            }

            else
            {
                teamB++;
            }
            if (RandomTAAttack > RandomTBAttack)
            {
                teamA++;
            }

            else
            {
                teamB++;
            }
            if (RandomTAMentality > RandomTBMentality)
            {
                teamA++;
            }

            else
            {
                teamB++;
            }
            Random result = new Random();

            if(teamA > teamB)
            {
                teamAwins++;
                teamBlose++;
                teamApoints += 3;
                if (teamA == 4)
                {
                    int winner = result.Next(4, 7);
                    teamAresult = winner;
                    teamBresult = winner - result.Next(4, winner);
                    teamAgoles += winner;
                    teamBgoles += teamBresult;
                }
                else if (teamA == 3)
                {
                    int winner = result.Next(3, 5);
                    teamAresult = winner;
                    teamBresult = winner - result.Next(2, winner);
                    teamAgoles += winner;
                    teamBgoles += teamBresult;
                }
                else if (teamA == 2)
                {
                    int winner = result.Next(1, 3);
                    teamAresult = winner;
                    teamBresult = winner - result.Next(1, winner);
                    teamAgoles += winner;
                    teamBgoles += teamBresult;
                }
            }else if (teamB > teamA)
            {
                teamBwins++;
                teamAlose++;
                teamBpoints += 3;
                if (teamB == 4)
                {
                    int winner = result.Next(4, 7);
                    teamBresult = winner;
                    teamAresult = winner - result.Next(4, winner);
                    teamBgoles += winner;
                    teamAgoles += teamAresult;
                }
                else if (teamB == 3)
                {
                    int winner = result.Next(3, 5);
                    teamBresult = winner;
                    teamAresult = winner - result.Next(2, winner);
                    teamBgoles += winner;
                    teamAgoles += teamAresult;
                }
                else if (teamB == 2)
                {
                    int winner = result.Next(2, 3);
                    teamBresult = winner;
                    teamAresult = winner - result.Next(1, winner);
                    teamBgoles += winner;
                    teamAgoles += teamAresult;
                }
            }

            else
            {
                teamAdraw++;
                teamBdraw++;
                teamApoints++;
                teamBpoints++;
                int winner = result.Next(2, 5);
                teamAresult = winner - teamA;
                teamBresult = winner - teamB;
                teamAgoles += teamAresult;
                teamBgoles += teamBresult;
            }


            game++;
           // Console.WriteLine("\nFC Barcelona {0} - {1} Real Madrid", teamA, teamB);
            Console.WriteLine("{0}. FC Barcelona {1} - {2} Real Madrid",game, teamAresult , teamBresult);

            Console.ReadLine();

        }

        if (userInput == "1")
        {
            Console.WriteLine("FC Barcelona - Points: {0}, Wins: {1}, Draws: {2}, Losses: {3}, Goles: {4}", teamApoints, teamAwins, teamAdraw, teamAlose, teamAgoles);
        }
        else
        {
            Console.WriteLine("Real Madrid - Points: {0}, Wins: {1}, Draws: {2}, Losses: {3}, Goles: {4}", teamBpoints, teamBwins, teamBdraw, teamBlose, teamBgoles);
        }






        Console.ReadLine();
    }
}

}

1 个答案:

答案 0 :(得分:1)

//我无法为您编写完整的代码,但会尝试提供一个对您有帮助的整体结构,因为看起来您已经知道编码但只是寻找构造代码的初始帮助关注OOPS。

//You can have an Enum for team types as


public enum TeamType
{
     Barcelona, RealMadrid  // This can be extended at any point of time
}

//You can create a class as

Class Team{
    //Properties
    public int ID{get; set;}
    public string Name{get; set;}
    public TeamType Type{get; set;}
    public int InputGames{get; set;}

    //Methods
    //write your methods here 
}

// You can write you program here to use these as
class Program
{
     static void Main(string[] args)
     {
         //Program would be written here
         //If one team is needed, you will create one object of Team class. 
         //Similarily you can create as many number of Team object as many 
         //teams you need
     }
}