Files
basic-computer-games/93_23_Matches/csharp/23Matches.cs
Sean Lynch 570355695d Finished draft
Code is not fully commented
There is an issue of double input if you win the coin toss
2022-05-15 10:06:14 -04:00

141 lines
4.6 KiB
C#

using System;
namespace Program
{
class Program
{
static void Main(string[] args)
{
// Print introduction text
// Prints the title with 31 spaces placed in front of the text using the PadLeft() string function
Console.WriteLine("23 MATCHES".PadLeft(31));
Console.WriteLine("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY".PadLeft(15));
// Print 3 blank lines with \n escape sequence
Console.Write("\n\n\n");
Console.WriteLine(" THIS IS A GAME CALLED '23 MATCHES'.");
Console.Write("\n");
Console.WriteLine("WHEN IT IS YOUR TURN, YOU MAY TAKE ONE, TWO, OR THREE");
Console.WriteLine("MATCHES. THE OBJECT OF THE GAME IS NOT TO HAVE TO TAKE");
Console.WriteLine("THE LAST MATCH.");
Console.Write("\n");
Console.WriteLine("LET'S FLIP A COIN TO SEE WHO GOES FIRST.");
Console.WriteLine("IF IT COMES UP HEADS, I WILL WIN THE TOSS.");
Console.Write("\n");
int numberOfMatches = 23;
// Create a random class object to generate the coin toss
Random random = new Random();
// Generates a random number between 0.0 and 1.0
// Multiplies that number by 2 and then
// Converts it into an integer giving either a 0 or a 1
int coinTossResult = (int)(2 * random.NextDouble());
if (coinTossResult == 1)
{
Console.WriteLine("TAILS! YOU GO FIRST. ");
Console.Write("\n");
numberOfMatches = PlayerTurn(numberOfMatches)[0];
}
else
{
Console.WriteLine("HEADS! I WIN! HA! HA!");
Console.WriteLine("PREPARE TO LOSE, MEATBALL-NOSE!!");
Console.Write("\n");
Console.WriteLine("I TAKE 2 MATCHES");
numberOfMatches = numberOfMatches - 2;
}
do
{
Console.WriteLine("THE NUMBER OF MATCHES IS NOW " + numberOfMatches);
int[] totalNumberAndNumberRemoved = PlayerTurn(numberOfMatches);
numberOfMatches = ComputerTurn(totalNumberAndNumberRemoved);
} while (numberOfMatches > 1);
}
static int[] PlayerTurn(int numberOfMatches)
{
Console.WriteLine("YOUR TURN -- YOU MAY TAKE 1, 2, OR 3 MATCHES.");
Console.Write("HOW MANY DO YOU WISH TO REMOVE ?? ");
// Get player input
int numberOfMatchesRemove = ReadPlayerInput();
// If the input is invalid (not 1, 2, or 3)
// then ask the player to input again
while (numberOfMatchesRemove > 3 || numberOfMatchesRemove <= 0)
{
Console.WriteLine("VERY FUNNY! DUMMY!");
Console.WriteLine("DO YOU WANT TO PLAY OR GOOF AROUND?");
Console.Write("NOW, HOW MANY MATCHES DO YOU WANT ??");
numberOfMatchesRemove = ReadPlayerInput();
}
// Remove the player specified number of matches
numberOfMatches = numberOfMatches - numberOfMatchesRemove;
Console.WriteLine("THE ARE NOW " + numberOfMatches + " MATCHES REMAINING");
int[] totalNumberAndNumberRemoved = {numberOfMatches, numberOfMatchesRemove};
return totalNumberAndNumberRemoved;
}
static int ComputerTurn(int[] totalNumberAndNumberRemoved)
{
int numberOfMatches = totalNumberAndNumberRemoved[0];
int numberOfMatchesRemovedByPlayer = totalNumberAndNumberRemoved[1];
int numberOfMatchesRemovedByComputer = 0;
switch (numberOfMatches)
{
case 4:
numberOfMatchesRemovedByComputer = 3;
break;
case 3:
numberOfMatchesRemovedByComputer = 2;
break;
case 2:
numberOfMatchesRemovedByComputer = 1;
break;
case 1: case 0:
Console.WriteLine("YOU WON, FLOPPY EARS !");
Console.WriteLine("THING YOU'RE PRETTY SMART !");
Console.WriteLine("LETS PLAY AGAIN AND I'LL BLOW YOUR SHOES OFF !!");
break;
default:
numberOfMatchesRemovedByComputer = 4 - numberOfMatchesRemovedByPlayer;
break;
}
if (numberOfMatchesRemovedByComputer != 0)
{
Console.WriteLine("MY TURN ! I REMOVE " + numberOfMatchesRemovedByComputer + " MATCHES");
if (numberOfMatches <= 1)
{
Console.Write("\n");
Console.WriteLine("YOU POOR BOOB! YOU TOOK THE LAST MATCH! I GOTCHA!!");
Console.WriteLine("HA ! HA ! I BEAT YOU !!!");
Console.Write("\n");
Console.WriteLine("GOOD BYE LOSER!");
}
}
return numberOfMatches;
}
static int ReadPlayerInput()
{
// Read user input and convert to integer
int playerInput = Convert.ToInt32(Console.ReadLine());
return playerInput;
}
}
}