コード例 #1
0
        private static void AddFullWall()
        {
            for (int i = 0; i < MapTiles[0].Length - 1; i++)
            {
                MapTiles[0][i] = new UnbreakableWallTile(new Position(i, 0));
            }
            MapTiles[0][MapTiles[0].Length - 1] = new EmptyNewLineTile();

            for (int i = 0; i < MapTiles[0].Length - 1; i++)
            {
                MapTiles[MapTiles.Length - 1][i] = new UnbreakableWallTile(new Position(i, MapTiles.Length - 1));
            }
            MapTiles[MapTiles.Length - 1][MapTiles[0].Length - 1] = new EmptyNewLineTile();
        }
コード例 #2
0
        private static void SetTile(ref int x, int y)
        {
            char currentCharacter = characters[random.Next(0, characters.Count)];

            ITile    tile     = null;
            Position position = new Position(x, y);

            switch (currentCharacter)
            {
            case Constants.TreasureLeftChar:
                if (x < Map.MapTiles[y].Length - 3 || (y == 1 && x == 1))
                {
                    tile = new TreasureChestTile(x, x + 1, y);
                    Map.MapTiles[y][x]     = tile;
                    Map.MapTiles[y][x + 1] = tile;
                    x += 1;
                    return;
                }
                else
                {
                    x -= 1;
                    return;
                }

            case Constants.MonsterChar:
                int power = new Random().Next(1, 4);
                if (power == 2)
                {
                    tile = new MonsterMediumTile(power, position);
                }
                else
                {
                    tile = new MonsterWeakTile(1, position);
                }
                break;

            case Constants.MonsterStrongChar:
                tile = new MonsterStrongTile(3, position);
                break;

            case Constants.BonusLifeChar:
                tile = new BonusLifeTile(new Random().Next(1, 6), position);
                break;

            case Constants.NextLevelChar:
                if (nextMapTileGenerated)
                {
                    x -= 1;
                    return;
                }
                else
                {
                    tile = new NextLevelTile(position);
                    nextMapTileGenerated = true;
                }
                break;

            case Constants.FreeSpaceChar:
                tile = new EmptySpaceTile();
                break;

            case Constants.WallChar:
                tile = new WallTile(position);
                break;

            case Constants.UnbreakableWallChar:
                tile = new UnbreakableWallTile(position);
                break;

            case Constants.QuestGiverChar:
                if (questGiverTileGenerated)
                {
                    x -= 1;
                    return;
                }
                tile = new QuestGiver(position);
                questGiverTileGenerated = true;
                break;
            }
            Map.MapTiles[y][x] = tile;
        }