示例#1
0
文件: Race.cs 项目: aafonya/Exercises
 public Race(int numberOfRacers, int finish)
 {
     racers      = new List <Snail>(numberOfRacers);
     this.finish = finish;
     this.time   = 0;
     this.Winner = null;
 }
示例#2
0
文件: Factory.cs 项目: SK068/groups
 /// <summary>
 /// Creates and returns an array of 'howMany' Snails
 /// </summary>
 /// <param name="howMany"></param>
 /// <returns>Snail[]</returns>
 static public Snail[] GenerateSnails(int howMany)
 {
     Snail[] snailArray = new Snail[howMany];
     for (int i = 0; i < howMany; i++)
     {
         snailArray[i] = new Snail();
     }
     return(snailArray);
 }
示例#3
0
文件: Race.cs 项目: aafonya/Exercises
        public void UpdateWinner()
        {
            var orderedPosition = from racsn in racers
                                  orderby racsn.Position ascending
                                  select racsn.Position;

            var max          = orderedPosition.Last();
            var winnerSnails = from racersnail in racers where (racersnail.Position) == (max)select racersnail;

            Winner = winnerSnails.First();
        }
示例#4
0
        static void Main(string[] args)
        {
            Race snailRace = new Race(4, 50);

            for (int i = 0; i < 4; i++)
            {
                Console.WriteLine("added");
                Snail snail = new Snail("Player_" + i, 3);
                snailRace.AddRacer(snail);
                Console.WriteLine("added");
            }
        }
示例#5
0
        static void Main(string[] args)
        {
            int tracklength = 330;
            int s1Position  = 0;
            int s2Postition = 0;

            Snail s1 = new Snail(10, 20, "James");
            Snail s2 = new Snail(12, 18, "Jim");

            Console.WriteLine("Welcome to Snail Race! Now it's off to the races!");

            //Loop until a snail has finished
            while (s1Position < tracklength && s2Postition < tracklength)
            {
                int move1 = s1.Move();
                s1Position += move1;
                int move2 = s2.Move();
                s2Postition += move2;
                Console.WriteLine(s1.ToString() + " moves " + move1 + " for a total of " + s1Position);
                Console.WriteLine(s2.ToString() + " moves " + move2 + " for a total of " + s2Postition);
            }

            //Calculate winner
            if (s1Position >= 330 && s2Postition >= 330)
            {
                Console.WriteLine("It's a tie!");
            }
            else if (s1Position >= 330)
            {
                Console.WriteLine(s1.ToString() + " wins the race!");
            }
            else if (s2Postition >= 330)
            {
                Console.WriteLine(s2.ToString() + " wins the race!");
            }
            else
            {
                Console.WriteLine("Uh oh, something went wrong");
            }

            Console.WriteLine("Press any key to exit.");
            ConsoleKey repeatAnswer = Console.ReadKey().Key;
        }
示例#6
0
文件: Race.cs 项目: aafonya/Exercises
 public void AddRacer(Snail racerSnail)
 {
     racers.Add(racerSnail);
 }
示例#7
0
        static void Main(string[] args)
        {
            int tracklength = 330;

            int positionSnailOne = 0;
            int positionSnailTwo = 0;

            string snailOneName;
            string snailTwoName;

            int snailOneMinSpeed;
            int snailOneMaxSpeed;

            int snailTwoMinSpeed;
            int snailTwoMaxSpeed;



            Console.WriteLine("Welcome to the races!");
            Console.WriteLine("");
            Console.WriteLine("What is the first snail name?");
            snailOneName = Console.ReadLine();
            Console.WriteLine("What is the first snails minimum speed?");
            snailOneMinSpeed = Int32.Parse(Console.ReadLine());
            Console.WriteLine("What is the first snails maximum speed?");
            snailOneMaxSpeed = Int32.Parse(Console.ReadLine());

            Console.WriteLine("What is the second snail name?");
            snailTwoName = Console.ReadLine();
            Console.WriteLine("What is the second snails minimum speed?");
            snailTwoMinSpeed = Int32.Parse(Console.ReadLine());
            Console.WriteLine("What is the second snails maximum speed?");
            snailTwoMaxSpeed = Int32.Parse(Console.ReadLine());


            if (snailOneMinSpeed > snailOneMaxSpeed)
            {
                int tempInt = snailOneMinSpeed;
                snailOneMinSpeed = snailOneMaxSpeed;
                snailOneMaxSpeed = tempInt;
            }

            if (snailTwoMinSpeed > snailTwoMaxSpeed)
            {
                int tempInt = snailTwoMinSpeed;
                snailTwoMinSpeed = snailTwoMaxSpeed;
                snailTwoMaxSpeed = tempInt;
            }



            var snailOne = new Snail(snailOneMinSpeed, snailOneMaxSpeed, snailOneName);
            var snailTwo = new Snail(snailTwoMinSpeed, snailTwoMaxSpeed, snailTwoName);

            Console.WriteLine("On your marks!");
            Thread.Sleep(200);
            Console.WriteLine("Get set!");
            Thread.Sleep(200);
            Console.WriteLine("GO!");

            while (positionSnailOne < tracklength || positionSnailTwo < tracklength)
            {
                int snailOneTravel;
                snailOneTravel    = snailOne.Move();
                positionSnailOne += snailOneTravel;

                Console.WriteLine($"{snailOne.ToString()} has moved {snailOneTravel}mm to {positionSnailOne}mm");

                if (positionSnailOne > tracklength)
                {
                    Console.WriteLine($"{snailOne.ToString()} wins!");
                    break;
                }
                Thread.Sleep(400);

                int snailTwoTravel;
                snailTwoTravel    = snailTwo.Move();
                positionSnailTwo += snailTwoTravel;

                Console.WriteLine($"{snailTwo.ToString()} has moved {snailTwoTravel}mm to {positionSnailTwo}mm");

                if (positionSnailTwo > tracklength)
                {
                    Console.WriteLine($"{snailTwo.ToString()} wins!");
                    break;
                }
                Thread.Sleep(400);
                Console.WriteLine("Next round!");
            }

            Console.ReadKey();
        }
示例#8
0
        static void Main()
        {
            decimal dt     = 10.0m;  // sec
            decimal finish = 330.0m; // mm
            string  snailName;
            decimal snailMinSpeed;
            decimal snailMaxSpeed;
            decimal snailMove;
            int     numberOfSnails;
            bool    validInput;

            do
            {
                do
                {
                    Console.Write("How many Snails do you wish to enter (1-3)? ");
                    validInput = Int32.TryParse(Console.ReadLine(), out numberOfSnails);
                } while (!validInput);
            } while (!(numberOfSnails > 0 && numberOfSnails <= 3));

            // snails enter the race.
            Snail[] Snails = new Snail[numberOfSnails + 1];

            for (int i = 0; i < numberOfSnails; i++)
            {
                Console.Clear();
                Console.WriteLine($"Snail number {i + 1}:");
                do
                {
                    Console.Write("What is your snail called? ");
                    snailName = Console.ReadLine();
                } while (snailName.Length < 1);

                do
                {
                    Console.Write("How fast does your snail move minimally in mm/s? (0,0 - 2,0) ");
                    validInput = Decimal.TryParse(Console.ReadLine(), out snailMinSpeed);
                } while (!validInput);

                do
                {
                    Console.Write("How fast does your snail move maximally in mm/s? (min - 2,5) ");
                    validInput = Decimal.TryParse(Console.ReadLine(), out snailMaxSpeed);
                } while (!validInput);

                Snails[i] = new Snail(snailName, snailMinSpeed, snailMaxSpeed);
            }

            Console.WriteLine("The computer also adds a snail.");
            Console.ReadKey();
            Snails[numberOfSnails] = new Snail();

            // meet the contestants
            decimal[] distanceTraveled = new decimal[Snails.Length];
            Console.Clear();
            Console.WriteLine("Meet the contestants!!!");
            for (int i = 0; i < Snails.Length; i++)
            {
                Snails[i].ShowSnailStats();
                distanceTraveled[i] = 0.0m;
            }
            for (int i = 0; i < Snails.Length; i++)
            {
                Console.WriteLine($"a|          |          |          |          |          |          |      {Snails[i].GetName()}");
            }
            Console.ReadKey();

            // race
            Console.Write("Ready! "); Thread.Sleep(500); Console.WriteLine("Go! ");

            do
            {
                Thread.Sleep(Convert.ToInt32(Math.Floor(1000 * dt)));
                Console.SetCursorPosition(0, Snails.Length * 2 + 1);
                for (int i = 0; i < Snails.Length; i++)
                {
                    //move
                    snailMove            = Snails[i].Move() * dt;
                    distanceTraveled[i] += snailMove;
                    //Display results
                    Console.WriteLine(($"{Snails[i].GetName()} traveled {snailMove:N1} mm is now at " +
                                       $"{distanceTraveled[i]:N0} mm!").PadRight(Console.BufferWidth));
                }

                for (int i = 0; i < Snails.Length; i++)
                {
                    Console.SetCursorPosition(0, Snails.Length + i + 1);
                    Console.Write(" |          |          |          |          |          |          |");
                    Console.SetCursorPosition(Convert.ToInt32(Math.Floor((distanceTraveled[i] / finish) * 66)), Snails.Length + i + 1);
                    Console.Write("a");
                }
            } while (distanceTraveled.Max() < finish);

            Console.SetCursorPosition(0, Snails.Length * 3 + 1);
            int winner = Array.IndexOf(distanceTraveled, distanceTraveled.Max());

            Console.WriteLine($"The Winner is {Snails[winner].GetName()}!!!");

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }