2012-03-13 3 views
1

Я делаю платформер, с картой на основе плитки (как и многие люди). Я начинаю в разработке видеоигр, так что это немного сложно. Я не буду учиться сам, но по этой проблеме я застрял.2d карта на основе плитки - Как повторить карту по краям?

Мои карты сделаны со списком, как это:

mapList[x][y] = tile 

С помощью этого списка, я могу цикл по всей плитки и рисовать их.

Что я хочу сделать, это «Петля» (повторить) карту. Я имею в виду, когда персонаж достигает правого предела (или слева), карта повторяется. Я не понимаю, как это сделать, я ищу все форумы и все вопросы, но я ничего не нашел :(

For instance

Я не знаю, если я делаю себе ясно, но английский язык не мой лучший язык, и я извиняюсь за это:.. р

заранее спасибо за попытку помочь мне или просто за чтение моего вопроса

+0

Используйте [Modulo] (http://en.wikipedia.org/wiki/Modulo_operation) в соответствии с вашими границами – Shai

+0

Я тоже устал писать полный ответ (особенно, поскольку вы не говорите нам, что у вас проблемы с рисованием или с его реализацией в целом), но вы можете повторять фрагменты, обращаясь к таким фрагментам: 'mapList [x% MAP_WIDTH] [y% MAP_HEIGHT] ' – flai

+0

@JaakkoLipsanen Отлично! Спасибо вам, я попробую работать так :) –

ответ

0

Если у вас есть сетка, которая является Ш клетки, допустимые диапазоны для X являются 0..W-1

Так как первый подход:

int nextX = (X+1) % W; // wraps around to 0 

но вам также нужно что-то для PrevX (X-1) и, возможно, для X + D, где d может быть положительным или отрицательным.
Вы не хотите возиться с по модулю отрицательных чисел, так

int MoveX(int d) { return (X+W+d) % W; } 
+0

Здравствуйте, спасибо за ваш ответ. Но есть вещь, которую я не понимаю. Как я могу «показать» «следующий» и «предыдущий» фрагменты. Я рисую свои фактические плитки с помощью этих петель http://pastebin.com/R747q4dV. В любом случае, спасибо за ваш первый ответ :) Я узнаю. –

Смежные вопросы