Add code examples, and documentation

This commit is contained in:
Aaron Po
2026-08-12 00:03:32 -04:00
commit 77c16e69f6
79 changed files with 4458 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
namespace WithoutStatePattern;
public class Car
{
private State _state = State.Off;
public bool HandleInput(string input)
{
switch (input)
{
case "turn-clockwise":
switch (_state)
{
case State.Off:
Console.WriteLine("The engine has started");
Console.WriteLine();
_state = State.Stopped;
break;
case State.Stopped:
case State.Driving:
Console.WriteLine("You hear a grinding noise...");
Console.WriteLine();
break;
}
break;
case "turn-counter":
switch (_state)
{
case State.Stopped:
Console.WriteLine("The engine has stopped");
Console.WriteLine();
_state = State.Off;
break;
case State.Driving:
Console.WriteLine(
"The engine turns off, and the car stops suddenly"
);
Console.WriteLine();
_state = State.Off;
break;
}
break;
case "gas":
switch (_state)
{
case State.Stopped:
Console.WriteLine("The car begins to drive");
Console.WriteLine();
_state = State.Driving;
break;
}
break;
case "brake":
switch (_state)
{
case State.Driving:
Console.WriteLine("The car slows to a stop");
Console.WriteLine();
_state = State.Stopped;
break;
}
break;
case "exit":
return false;
}
return true;
}
private enum State
{
Off,
Stopped,
Driving,
}
}

View File

@@ -0,0 +1,35 @@
namespace WithoutStatePattern;
internal class Program
{
private static void Main(string[] args)
{
var car = new Car();
string input;
bool keepRunning = true;
Console.WriteLine("Welcome to the Driving Simulater");
Console.WriteLine();
Console.WriteLine("Usage:");
Console.WriteLine(" turn-clockwise -Turns the car's key clockwise");
Console.WriteLine(
" turn-counter -Turns the car's key counter clockwise"
);
Console.WriteLine(" gas -Presses the gas pedal");
Console.WriteLine(" brake -Presses the brake pedal");
Console.WriteLine(" exit -Exits the simulator");
Console.WriteLine();
do
{
Console.Write("> ");
input = Console.ReadLine();
Console.WriteLine();
keepRunning = car.HandleInput(input);
} while (keepRunning);
Console.WriteLine();
Console.WriteLine("goodbye");
Console.WriteLine();
}
}

View File

@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>