Use the same notation as everyone else

This commit is contained in:
Markus Himmel
2016-08-28 10:57:40 +02:00
parent 2fe8fa2c27
commit c3abbf6966
2 changed files with 19 additions and 17 deletions

View File

@@ -130,25 +130,27 @@ namespace Morris
Console.Write($"{(state.NextToMove == Player.Black ? "Schwarz" : "Weiß")} am Zug ({phase}): "); Console.Write($"{(state.NextToMove == Player.Black ? "Schwarz" : "Weiß")} am Zug ({phase}): ");
// Eingabe parsen // Eingabe parsen
var input = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Format {a1-}b2{,c3}
var inputPositions = input.Skip(1).Select(pos => CoordinateTranslator.IDFromHumanReadable(pos)).ToArray(); // Bedeutet setze von a1 nach b2 und schlage c3
// Teile in {} sind optional
switch (input[0]) var rawInput = Console.ReadLine().ToLower();
var input = rawInput.Split(new[] { ',', '-' }).Select(pos => CoordinateTranslator.IDFromHumanReadable(pos)).ToArray();
switch (input.Length)
{ {
case "p": // place case 1:
return GameMove.Place(inputPositions[0]); return GameMove.Place(input[0]);
case "pr": // place remove case 2:
return GameMove.PlaceRemove(inputPositions[0], inputPositions[1]); if (rawInput[2] == '-')
return GameMove.Move(input[0], input[1]);
case "m": // move if (rawInput[2] == ',')
return GameMove.Move(inputPositions[0], inputPositions[1]); return GameMove.PlaceRemove(input[0], input[1]);
case "mr": // move remove
return GameMove.MoveRemove(inputPositions[0], inputPositions[1], inputPositions[2]);
default:
throw new InvalidOperationException(); throw new InvalidOperationException();
case 3:
if (rawInput[2] != '-' || rawInput[5] != ',')
throw new InvalidOperationException();
return GameMove.MoveRemove(input[0], input[1], input[2]);
} }
} }

View File

@@ -15,7 +15,7 @@ namespace Morris
var a = new ConsoleInteraction(); var a = new ConsoleInteraction();
var b = new RandomBot(); var b = new RandomBot();
var w = new GameWindow(); var w = new GameWindow();
var g = new Game(w, b); var g = new Game(a, b);
g.AddObserver(a); g.AddObserver(a);
g.AddObserver(w); g.AddObserver(w);
Task.Run(() => g.Run(0)); Task.Run(() => g.Run(0));