This commit is contained in:
Markus Himmel
2016-08-28 10:37:27 +02:00
parent 4054f60952
commit 2fe8fa2c27
3 changed files with 10 additions and 6 deletions

View File

@@ -317,10 +317,6 @@ namespace Morris
// Hinbewegter Stein // Hinbewegter Stein
Board[move.To] = (Occupation)NextToMove; Board[move.To] = (Occupation)NextToMove;
// Wiederholte Stellung
if (!playerPhase.Values.All(phase => phase == Phase.Placing) && history.Any(pastBoard => Board.SequenceEqual(pastBoard)))
Result = GameResult.Draw;
// ggf. entfernter Stein // ggf. entfernter Stein
if (move.Remove.HasValue) if (move.Remove.HasValue)
{ {
@@ -330,6 +326,11 @@ namespace Morris
playerPhase[NextToMove.Opponent()] = Phase.Flying; playerPhase[NextToMove.Opponent()] = Phase.Flying;
} }
// Wiederholte Stellung
if (!playerPhase.Values.All(phase => phase == Phase.Placing) && history.Any(pastBoard => Board.SequenceEqual(pastBoard)))
Result = GameResult.Draw;
// Gegner hat nur noch zwei Steine // Gegner hat nur noch zwei Steine
if (playerPhase[NextToMove.Opponent()] != Phase.Placing && currentStones[NextToMove.Opponent()] == 2) if (playerPhase[NextToMove.Opponent()] != Phase.Placing && currentStones[NextToMove.Opponent()] == 2)
Result = (GameResult)NextToMove; Result = (GameResult)NextToMove;

View File

@@ -352,7 +352,10 @@ namespace Morris
// Ungültiges Feld, einfach einen ungültigen Zug zurückgeben, damit GetNextMove // Ungültiges Feld, einfach einen ungültigen Zug zurückgeben, damit GetNextMove
// erneut aufgerufen wird // erneut aufgerufen wird
if (error) if (error)
return null; {
Dispatcher.Invoke(() => resetPositon(source));
return null;
}
// Source und Destination erhalten Anfang und Ende des Drag-Events // Source und Destination erhalten Anfang und Ende des Drag-Events
mode = Mode.Normal; mode = Mode.Normal;

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, w); var g = new Game(w, b);
g.AddObserver(a); g.AddObserver(a);
g.AddObserver(w); g.AddObserver(w);
Task.Run(() => g.Run(0)); Task.Run(() => g.Run(0));