コード例 #1
0
        public Tile[,] Load( int mapNumber)
        {
            List<Tile[,]> maps = new List<Tile[,]>();
            string[] rows = File.ReadAllLines(_fileName);

            List<char[]> currentMapRows = new List<char[]>();
            foreach (var row in rows)
            {

                if (String.IsNullOrWhiteSpace(row))
                {
                    int xSize = currentMapRows.Max(x => x.Length);
                    int ySize = currentMapRows.Count;

                    var currentMap = new Tile[ySize, xSize];
                    for (int i = 0; i < ySize; i++)
                    {
                        for (int j = 0; j < xSize; j++)
                        {
                            currentMap[i, j] = new Tile() { Type = TileType.Blank };
                            if (j <= currentMapRows[i].Length - 1)
                            {
                                switch (currentMapRows[i][j])
                                {
                                    case ' ':
                                        currentMap[i, j].Type = TileType.Blank;
                                        break;
                                    case '@':
                                        currentMap[i, j].Type = TileType.Player;
                                        break;
                                    case '*':
                                        currentMap[i, j].Type = TileType.BarrelInStorage;
                                        break;
                                    case 'o':
                                        currentMap[i, j].Type = TileType.Barrel;
                                        break;
                                    case '+':
                                        currentMap[i, j].Type = TileType.PlayerOverStorage;
                                        break;
                                    case '.':
                                        currentMap[i, j].Type = TileType.Storage;
                                        break;
                                    case '#':
                                        currentMap[i, j].Type = TileType.Wall;
                                        break;

                                }

                            }

                        }
                    }

                    maps.Add(currentMap);

                    currentMapRows = new List<char[]>();
                }
                else
                {
                    currentMapRows.Add(row.ToCharArray());
                }

            }

            var loadMap = maps[mapNumber];

            return loadMap;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: brgoza/Sokoban
 public static Tile GetTargetTile(Tile currentTile, Directions dir)
 {
     switch (dir)
     {
         case Directions.Left:
             return ThisMap.GetTileAtPosition(currentTile.X - 1, currentTile.Y);
         case Directions.Right:
             return ThisMap.GetTileAtPosition(currentTile.X + 1, currentTile.Y);
         case Directions.Down:
             return ThisMap.GetTileAtPosition(currentTile.X, currentTile.Y + 1);
         case Directions.Up:
             return ThisMap.GetTileAtPosition(currentTile.X, currentTile.Y - 1);
     }
     return null;
 }