private static IEnumerable<Point> GetPossibleMoves(Maze previousMaze) { var previousCoordinate = previousMaze.FindCoordinateOf(Properties.Settings.Default.SymbolPlayerA); var moveList = new List<Point>(); if (previousCoordinate.Y + 1 < Properties.Settings.Default.MazeWidth) if (!previousMaze.GetSymbol(previousCoordinate.X, previousCoordinate.Y + 1).Equals(Properties.Settings.Default.SymbolWall) && !WasInRespawnEntranceA(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X, previousCoordinate.Y + 1)); if (previousCoordinate.Y - 1 >= 0) if (!previousMaze.GetSymbol(previousCoordinate.X, previousCoordinate.Y - 1).Equals(Properties.Settings.Default.SymbolWall) && !WasInRespawnEntranceB(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X, previousCoordinate.Y - 1)); if (previousCoordinate.X + 1 < Properties.Settings.Default.MazeHeight) if (!previousMaze.GetSymbol(previousCoordinate.X + 1, previousCoordinate.Y).Equals(Properties.Settings.Default.SymbolWall) && !WasInRespawnZone(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X + 1, previousCoordinate.Y)); if (previousCoordinate.X - 1 >= 0) if (!previousMaze.GetSymbol(previousCoordinate.X - 1, previousCoordinate.Y).Equals(Properties.Settings.Default.SymbolWall) && !WasInRespawnZone(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X - 1, previousCoordinate.Y)); if (previousCoordinate.X.Equals(Properties.Settings.Default.MazeHeight / 2 - 1) && previousCoordinate.Y.Equals(Properties.Settings.Default.MazeWidth - 1)) moveList.Add(new Point(Properties.Settings.Default.MazeHeight / 2 - 1, 0)); if (previousCoordinate.X.Equals(Properties.Settings.Default.MazeHeight / 2 - 1) && previousCoordinate.Y.Equals(0)) moveList.Add(new Point(Properties.Settings.Default.MazeHeight / 2 - 1, Properties.Settings.Default.MazeWidth - 1)); return moveList; }
private static IEnumerable<Point> GetPossibleMoves(Maze previousMaze) { var previousCoordinate = previousMaze.FindCoordinateOf(Symbols.SYMBOL_PLAYER_A); var opponentCoordinate = previousMaze.FindCoordinateOf(Symbols.SYMBOL_PLAYER_B); var moveList = new List<Point>(); // Right if (previousCoordinate.Y + 1 < Properties.Settings.Default.MazeWidth) if (previousMaze.GetSymbol(previousCoordinate.X, previousCoordinate.Y + 1) != Symbols.SYMBOL_WALL && !WasInRespawnPoint(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X, previousCoordinate.Y + 1)); // Left if (previousCoordinate.Y - 1 >= 0) if (previousMaze.GetSymbol(previousCoordinate.X, previousCoordinate.Y - 1) != Symbols.SYMBOL_WALL && !WasInRespawnPoint(previousCoordinate.X, previousCoordinate.Y)) moveList.Add(new Point(previousCoordinate.X, previousCoordinate.Y - 1)); // Down if (previousCoordinate.X + 1 < Properties.Settings.Default.MazeHeight) if (previousMaze.GetSymbol(previousCoordinate.X + 1, previousCoordinate.Y) != Symbols.SYMBOL_WALL && !WasInRespawnEntranceA(previousCoordinate.X, previousCoordinate.Y) && !WasInRespawnPoint(previousCoordinate.X + 1, previousCoordinate.Y) && // Opponent cannot be eaten while in the respawn zone. (!WasInRespawnZone(opponentCoordinate.X, opponentCoordinate.Y) || previousCoordinate.Y!=opponentCoordinate.Y || previousCoordinate.X + 1!=opponentCoordinate.X)) moveList.Add(new Point(previousCoordinate.X + 1, previousCoordinate.Y)); // Up if (previousCoordinate.X - 1 >= 0) if (previousMaze.GetSymbol(previousCoordinate.X - 1, previousCoordinate.Y) != Symbols.SYMBOL_WALL && !WasInRespawnEntranceB(previousCoordinate.X, previousCoordinate.Y) && !WasInRespawnPoint(previousCoordinate.X - 1, previousCoordinate.Y) && // Opponent cannot be eaten while in the respawn zone. (!WasInRespawnZone(opponentCoordinate.X, opponentCoordinate.Y) || previousCoordinate.Y!=opponentCoordinate.Y || previousCoordinate.X - 1!=opponentCoordinate.X)) moveList.Add(new Point(previousCoordinate.X - 1, previousCoordinate.Y)); // Wrap right if (previousCoordinate.X == (Properties.Settings.Default.MazeHeight / 2 - 1) && previousCoordinate.Y == (Properties.Settings.Default.MazeWidth - 1)) moveList.Add(new Point(Properties.Settings.Default.MazeHeight / 2 - 1, 0)); // Wrap left if (previousCoordinate.X == (Properties.Settings.Default.MazeHeight / 2 - 1) && previousCoordinate.Y == 0) moveList.Add(new Point(Properties.Settings.Default.MazeHeight / 2 - 1, Properties.Settings.Default.MazeWidth - 1)); return moveList; }
public Maze(Maze maze) { _map = new char[Properties.Settings.Default.MazeHeight][]; for (var x = 0; x < Properties.Settings.Default.MazeHeight; x++) { var row = new char[Properties.Settings.Default.MazeWidth]; for (var y = 0; y < Properties.Settings.Default.MazeWidth; y++) { row[y] = maze.GetSymbol(x, y); } _map[x] = row; } }
public Maze(Maze maze) { _map = new char[Properties.Settings.Default.MazeHeight][]; for (var x = 0; x < Properties.Settings.Default.MazeHeight; x++) { var row = new char[Properties.Settings.Default.MazeWidth]; for (var y = 0; y < Properties.Settings.Default.MazeWidth; y++) { row[y] = maze.GetSymbol(x,y); } _map[x] = row; } }
private static int GetNumberOfDifferences(Maze currentMaze, Maze previousMaze) { var difference = 0; for (var x = 0; x < Properties.Settings.Default.MazeHeight; x++) { for (var y = 0; y < Properties.Settings.Default.MazeWidth; y++) { if (currentMaze.GetSymbol(x, y) != previousMaze.GetSymbol(x, y)) difference++; } } return difference; }
private static bool IsMoveMadeAndScoredPoint(Maze previousMaze, Point currentPosition) { return previousMaze.GetSymbol(currentPosition.X, currentPosition.Y) == Symbols.SYMBOL_PILL; }
private static bool IsMoveMadeAndDroppedPoisonPill(Maze currentMaze, Point previousPosition) { return currentMaze.GetSymbol(previousPosition.X, previousPosition.Y) == Symbols.SYMBOL_POISON_PILL; }
private static bool IsMoveMadeAndDiedFromPoisonPill(Maze previousMaze, Point currentPosition) { return previousMaze.GetSymbol(currentPosition.X, currentPosition.Y) == Symbols.SYMBOL_POISON_PILL; }
private static bool IsPillDroppedInRespawnZone(Maze currentMaze, Maze previousMaze) { var previousCoordinateA = previousMaze.FindCoordinateOf(Symbols.SYMBOL_PLAYER_A); if (currentMaze.GetSymbol(previousCoordinateA) == Symbols.SYMBOL_POISON_PILL) return WasInRespawnZone(previousCoordinateA.X, previousCoordinateA.Y); return false; }
private static bool IsMoveMadeAndScoredPoint(Maze previousMaze, Point currentPosition) { return previousMaze.GetSymbol(currentPosition.X, currentPosition.Y).Equals(Properties.Settings.Default.SymbolPill); }
private static bool IsMoveMadeAndDroppedPoisonPill(Maze currentMaze, Point previousPosition) { return currentMaze.GetSymbol(previousPosition.X, previousPosition.Y).Equals(Properties.Settings.Default.SymbolPoisonPill); }