GetSymbol() public méthode

public GetSymbol ( Point p ) : char
p Point
Résultat char
        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;
        }
Exemple #3
0
 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);
 }