private static void initializeDecks() { Random rnd = new Random(); // Read dog names. Console.WriteLine("\nReading dogs.txt"); var dogNames = File.ReadAllLines("dogs.txt"); // Randomize dog names. IComparer comparer = new randomComparer(); // why is c# so complicated Console.WriteLine("Randomizing..."); Array.Sort(dogNames, comparer); // Create dogs List <Dog> dogs = new List <Dog>(); foreach (var name in dogNames) { Dog dog = new Dog(); dog.Name = name; dog.Exercise = rnd.Next(1, 6); dog.Intelligence = rnd.Next(1, 101); dog.Friendlyness = rnd.Next(1, 11); dog.Drool = rnd.Next(1, 11); dogs.Add(dog); } // Deck size input int cards = 30; while (true) { Console.WriteLine("How many dogs in deck? (4-30, even numbers only, please!)"); try { int result = Int16.Parse(Console.ReadLine()); if (result < 4 || result > 30) { Console.WriteLine("Between 4-30 please."); } else { if (result % 2 == 0) { Console.WriteLine(result); cards = result; break; } else { Console.WriteLine("Even number please."); } } } catch (FormatException) { Console.WriteLine("That doesn't look like a number to me."); } } Console.WriteLine(cards); if (dogs.Count > cards) { dogs.RemoveRange(cards - 1, dogs.Count - cards); } // Deck seperation List <Dog> computerDogs = new List <Dog>(); List <Dog> humanDogs = new List <Dog>(); bool turn = false; // if false, add to computer's deck, if true add to humans deck foreach (var dog in dogs) { if (turn) { humanDogs.Add(dog); } else { computerDogs.Add(dog); } turn = !turn; } game(computerDogs, humanDogs); }
private static void game(List <Dog> computerDogs, List <Dog> humanDogs) { bool humanTurn = true; while (true) { if (computerDogs.Count <= 0) { Console.WriteLine("Congratulations! You win!"); System.Threading.Thread.Sleep(2000); break; } if (humanDogs.Count <= 0) { Console.WriteLine("Ooops! You lost."); System.Threading.Thread.Sleep(2000); break; } Console.WriteLine("\n\n\n\n"); Console.WriteLine($"CPU: {computerDogs.Count} | YOU: {humanDogs.Count}"); Dog computerCard = computerDogs[0]; computerDogs.RemoveAt(0); Dog humanCard = humanDogs[0]; humanDogs.RemoveAt(0); int humanScore; int cpuScore; if (humanTurn) { Console.WriteLine("It's your turn!"); Console.WriteLine("Your current card:"); printCard(humanCard); while (true) { Console.WriteLine("What stat would you like to play? [1-4]"); ConsoleKeyInfo input = Console.ReadKey(); if (input.Key == ConsoleKey.D1) // Exercise { humanScore = humanCard.Exercise; cpuScore = computerCard.Exercise; break; } else if (input.Key == ConsoleKey.D2) // Intelligence { humanScore = humanCard.Intelligence; cpuScore = computerCard.Intelligence; break; } else if (input.Key == ConsoleKey.D3) // Friendlyness { humanScore = humanCard.Friendlyness; cpuScore = computerCard.Friendlyness; break; } else if (input.Key == ConsoleKey.D4) // Drool { humanScore = 10 - humanCard.Drool; cpuScore = 10 - computerCard.Drool; break; } else { Console.WriteLine("Invalid key choice!"); } } } else { Console.WriteLine("It's the computers turn."); Console.WriteLine("Your current card:"); printCard(humanCard); Console.WriteLine("Computers current card:"); printCard(computerCard); Dictionary <string, float> results = new Dictionary <string, float>(); results.Add("exercise", computerCard.Exercise / 5); results.Add("intelligence", computerCard.Intelligence / 100); results.Add("friendlyness", computerCard.Friendlyness / 10); results.Add("drool", 1 - (computerCard.Drool / 10)); // pick highest of above double max = results.Max(kvp => kvp.Value); string chosen = results.Where(kvp => kvp.Value == max).Select(kvp => kvp.Key).First(); Console.WriteLine($"Computer chose {chosen}"); if (chosen == "exercise") // Exercise { humanScore = humanCard.Exercise; cpuScore = computerCard.Exercise; } else if (chosen == "intelligence") // Intelligence { humanScore = humanCard.Intelligence; cpuScore = computerCard.Intelligence; } else if (chosen == "friendlyness") // Friendlyness { humanScore = humanCard.Friendlyness; cpuScore = computerCard.Friendlyness; } else // Drool { humanScore = 10 - humanCard.Drool; cpuScore = 10 - computerCard.Drool; } } Console.WriteLine("\n\n\n\n"); Console.WriteLine("Your card was: "); printCard(humanCard); Console.WriteLine("The computers card was: "); printCard(computerCard); System.Threading.Thread.Sleep(2500); Console.WriteLine("\n\n\n\n"); if (humanScore >= cpuScore) { Console.WriteLine("You won that round!"); Console.WriteLine("You obtained the card:"); printCard(computerCard); humanDogs.Add(humanCard); humanDogs.Add(computerCard); humanTurn = true; } else { Console.WriteLine("You lost that round."); Console.WriteLine("You lost the card:"); printCard(humanCard); computerDogs.Add(computerCard); computerDogs.Add(humanCard); humanTurn = false; } System.Threading.Thread.Sleep(2500); } }