Files
basic-computer-games/93_23_Matches/csharp/23Matches.cs
2022-05-15 10:28:38 -04:00

145 lines
4.5 KiB
C#

using System;
namespace Program
{
class Program
{
public static int numberOfMatches;
public static int numberOfMatchesRemovedByPlayer;
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");
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. ");
PlayerTurn();
}
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.Write("THE NUMBER OF MATCHES IS NOW " + numberOfMatches);
PlayerTurn();
ComputerTurn();
} while (numberOfMatches > 1);
}
static void PlayerTurn()
{
Console.WriteLine("\n");
Console.WriteLine("YOUR TURN -- YOU MAY TAKE 1, 2, OR 3 MATCHES.");
Console.Write("HOW MANY DO YOU WISH TO REMOVE ?? ");
// Get player input
numberOfMatchesRemovedByPlayer = ReadPlayerInput();
// If the input is invalid (not 1, 2, or 3)
// then ask the player to input again
while (numberOfMatchesRemovedByPlayer > 3 || numberOfMatchesRemovedByPlayer <= 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 ??");
numberOfMatchesRemovedByPlayer = ReadPlayerInput();
}
// Remove the player specified number of matches
numberOfMatches = numberOfMatches - numberOfMatchesRemovedByPlayer;
Console.WriteLine("THE ARE NOW " + numberOfMatches + " MATCHES REMAINING");
}
static void ComputerTurn()
{
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");
numberOfMatches = numberOfMatches - numberOfMatchesRemovedByComputer;
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!");
}
}
}
static int ReadPlayerInput()
{
// Read user input and convert to integer
int playerInput = 0;
try
{
playerInput = Convert.ToInt32(Console.ReadLine());
}
catch (System.Exception)
{
Console.WriteLine("?REENTER");
Console.Write("?? ");
playerInput = ReadPlayerInput();
}
return playerInput;
}
}
}