Создание и сохранение карт с плитками в XNA - PullRequest
5 голосов
/ 23 ноября 2011

Я пытаюсь сделать демо-версию игры типа "Подземелье", и я впервые делаю что-то помимо клонов Pong & Pac-Man.Моя большая зависание прямо сейчас создает настоящий уровень.Я прошел урок о том, как рисовать плитки на экране, но я не могу ничего найти о том, куда идти дальше.

Как перейти от одного экрана к созданию большего подземелья?Любая помощь приветствуется.

Ответы [ 3 ]

6 голосов
/ 24 ноября 2011

Вы должны рассмотреть возможность использования двухмерных массивов.Таким образом, вы можете довольно легко представить свои данные визуально.

Начните с инициализации:

//2D array
int[,] array;

Некоторые примеры данных:

array= new int[,]
        {
            {0, 2, 2, 0},
            {3, 0, 0, 3},
            {1, 1, 1, 1},
            {1, 0, 0, 0},
        };

Создайте себеперечисление, которое будет индексировать каждое целое число в вашей карте:

enum Tiles
{
    Undefined = 0,
    Dirt = 1,
    Water = 2,
    Rock = 3
}

Затем загрузите ваши текстуры, а что нет, просматривая массив по одному элементу за раз.Исходя из размера текстур, вы можете легко нарисовать текстуры на экране, как показано на вашей карте:

for (int i = 0; i < array.Count; i++)
{
    for (int j = 0; j < array[0].Count; j++)  //assuming always 1 row
    {
       if (array[i][j] == (int)Tiles.Undefined) continue;

       Texture = GetTexture(array[i][j]);  //implement this

       spriteBatch.Draw(Texture, new Vector2(i * Texture.Width, j * Texture.Height), null, Color.White, 0, Origin, 1.0f, SpriteEffects.None, 0f);
    }
}
1 голос
/ 25 ноября 2011

Будет намного проще спроектировать карту, если вы реализуете сохранение / загрузку для формата плиточной карты .

1 голос
/ 25 ноября 2011

PSK http://msdn.microsoft.com/en-us/library/dd254918(v=xnagamestudio.31).aspx - это демонстрационная программа, созданная Microsoft, которая использует ASCII-файл для создания уровней. Есть также много демонстрационных и обучающих программ и других вещей для этого. Это тот же подход, который описал Джон.

пример:

.......
.....e.
xx...xx
..s....

Где точка - это пустое место, s - начальная позиция, а e - враг. Поскольку вы знаете, что каждая плитка (например) имеет размер 32x32 пикселя, вы просто помещаете 's' в координату (2x32,3 * 32).

Есть много способов справиться с этой трудностью.

Для создания более одного экрана вам необходимо реализовать класс камеры. То, что вы, вероятно, хотите, это уровень прокрутки. Но я бы посоветовал вам сначала научиться делать один экран из массива, файла ASCII и т. Д., Прежде чем идти дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...