public Race(int numberOfRacers, int finish) { racers = new List <Snail>(numberOfRacers); this.finish = finish; this.time = 0; this.Winner = null; }
/// <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); }
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(); }
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"); } }
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; }
public void AddRacer(Snail racerSnail) { racers.Add(racerSnail); }
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(); }
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(); }