Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions MathGame/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "C# External console",
"console": "externalTerminal",
"program": "${workspaceFolder}/bin/Debug/net10.0/MathGame.dll",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "dotnet: build"
}
]
}
10 changes: 10 additions & 0 deletions MathGame/MathGame.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>
24 changes: 24 additions & 0 deletions MathGame/MathGame.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MathGame", "MathGame.csproj", "{8E44D313-4A8D-F5FA-1FB5-C00DA569A7BD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E44D313-4A8D-F5FA-1FB5-C00DA569A7BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E44D313-4A8D-F5FA-1FB5-C00DA569A7BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E44D313-4A8D-F5FA-1FB5-C00DA569A7BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E44D313-4A8D-F5FA-1FB5-C00DA569A7BD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0148102B-0557-4077-957D-39C944201374}
EndGlobalSection
EndGlobal
306 changes: 306 additions & 0 deletions MathGame/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@


// ASK PLAYER A QUESTION + GET INPUT + ADD POINTS

// PARTIDAS MINIMA 5 PREGUNTAS

// DIVISIONS SHOULD RESULT IN INTEGERS + DIVIDENDS SHOULD BE BETWEEN 0 AND 100

// MENU TO CHOOSE OPERATION

// RECORD FROM PREVIOUS GAMES + VISUALIZE LIST

using System.IO.Pipelines;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.InteropServices.Marshalling;

Random rng = new Random();


int currentPoints = 0;
int currentAnswer = -1;

string? input;

int matchLength = 5;

List<string> previousGamesHistory = new List<string>();
bool mainMenuExit = false;

int mainMenuChosenOption = 0;

//0 - Add, 1 - Substraction, 2 - Mult, 3 - Div, 4 - Random
int chosenOperation = 0;

while (!mainMenuExit)
{
Console.Clear();

Console.WriteLine(
@"
---------
MATH GAME
---------
");
Console.WriteLine("Choose an option:");
Console.WriteLine("1. Play");
Console.WriteLine("2. Choose Operations");
Console.WriteLine("3. See Match Record");
Console.WriteLine("4. Exit");


mainMenuChosenOption = InputToInt();

Console.WriteLine($"YOU CHOSE OPTION {mainMenuChosenOption}");
Console.ReadLine();
Console.Clear();

switch (mainMenuChosenOption)
{
// PLAY
case 1:

int currentMatch = 0;

do
{


int operationResult = OperationHandler(chosenOperation);
currentAnswer = InputToInt();


if (operationResult == currentAnswer)
{
currentPoints++;
Console.WriteLine("Correct Answer!! +1 Points!");
Console.WriteLine($"Current Points: {currentPoints}");

currentMatch++;

}
else
{
Console.WriteLine("Wrong Answer!! \n GAME OVER ");

RecordPoints(ref currentPoints);
currentMatch = matchLength;
}

} while (currentMatch < matchLength);

break;

// CHOOSE OPERATIONS

case 2:

do
{
Console.WriteLine("Choose the game's operations!!");
Console.WriteLine($"Current Operation chosen: {OperationToString(chosenOperation)}");

Console.WriteLine("0 - Addition");
Console.WriteLine("1 - Substraction");
Console.WriteLine("2 - Multiplication");
Console.WriteLine("3 - Division");
Console.WriteLine("4 - Random Operations ");

chosenOperation = InputToInt();


// SEE if Option Good
if (chosenOperation < 0 || chosenOperation > 4)
{
Console.WriteLine("Choose a Valid operation or write just the number");
}


} while (chosenOperation < 0 || chosenOperation > 4);

Console.WriteLine($"YOU CHOSE {OperationToString(chosenOperation)}");

break;

// RECORD
case 3:

ShowRecord();

break;
// EXIT
case 4:
mainMenuExit = true;
Console.WriteLine("Bye Bye!");
break;

default:
Console.WriteLine($"THERE IS NO OPTION {mainMenuChosenOption}");

break;
}

Console.ReadLine();

}
;


void ShowRecord()
{
if (previousGamesHistory.Count <= 0)
{
Console.WriteLine(" No Record Yet!");
return;
}

foreach (string a in previousGamesHistory)
{
Console.WriteLine($"{a}");
}
}
void RecordPoints(ref int pointsToRecord)
{
previousGamesHistory.Add($"Points of previous match: {pointsToRecord}");
pointsToRecord = 0;
}
int OperationHandler(int operationNumber)
{
int currentOperation = operationNumber;
bool operationHasBeenChosen = false;

do
{
switch (currentOperation)
{
//ADDITION
case 0:
operationHasBeenChosen = true;
return AdditionHandler();
break;
//SUBSTRACTION
case 1:
operationHasBeenChosen = true;
return SubstractionHandler();
break;

//MULTIPLICATION
case 2:
operationHasBeenChosen = true;
return MultiplicationHandler();
break;
//DIVISION
case 3:
operationHasBeenChosen = true;
return DivisionHandler();
break;
//RANDOM
case 4:
currentOperation = rng.Next(0, 4);
break;
}
} while (!operationHasBeenChosen);
return -1;
}

string OperationToString(int operationNumber)
{
string operationName = "";

switch (operationNumber)
{
case 0:
operationName = "Addition";
break;
case 1:
operationName = "Substraction";
break;
case 2:
operationName = "Multiplication";
break;
case 3:
operationName = "Division";
break;
case 4:
operationName = "Random Operation";
break;
}

return operationName;
}
int AdditionHandler()
{
int firstOperand = rng.Next(0, 101);
int secondOperand = rng.Next(0, 101);

Console.WriteLine("QUESTION:");
Console.WriteLine($"{firstOperand} + {secondOperand} = ???");

return firstOperand + secondOperand;
}

int SubstractionHandler()
{
int firstOperand = rng.Next(0, 101);
int secondOperand = rng.Next(0, 101);

while (secondOperand > firstOperand)
{
firstOperand = rng.Next(0, 101);
secondOperand = rng.Next(0, 101);
}


Console.WriteLine("QUESTION:");
Console.WriteLine($"{firstOperand} - {secondOperand} = ???");

return firstOperand - secondOperand;
}

int MultiplicationHandler()
{
int firstOperand = rng.Next(0, 101);
int secondOperand = rng.Next(0, 101);

Console.WriteLine("QUESTION:");
Console.WriteLine($"{firstOperand} x {secondOperand} = ???");

return firstOperand * secondOperand;
}

int DivisionHandler()
{
int firstOperand = rng.Next(1, 101);
int secondOperand = rng.Next(1, 101);

while (firstOperand % secondOperand != 0)
{
firstOperand = rng.Next(1, 101);
secondOperand = rng.Next(0, 101);
}

Console.WriteLine("QUESTION:");
Console.WriteLine($"{firstOperand} / {secondOperand} = ???");

return firstOperand / secondOperand;
}


int InputToInt()
{
bool validInput = false;
int parsedInput = -1;
do
{

input = Console.ReadLine();

if (input != null)
{
validInput = int.TryParse(input, out parsedInput);
}

} while (!validInput);

return parsedInput;
}