Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 13:18   #1
WillyWonka
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 12
По умолчанию Массив со "склеенными" границами.

Здравствуйте.
В качестве небольшого упражнения решил "написать" игру "Жизнь", мир реализован с помощью двумерного массива.
Т.к. должны проверяться соседние клетки, то, по идее, при проверке крайней клетки в качестве соседней должна проверяться клетка с диаметрально противоположного края. Но, реализовать такое подобие отсутствия границ получилось только с помощью большого числа выбора вариантов.
Можно это сделать по-другому:?
Заранее спасибо за внимание.
WillyWonka вне форума Ответить с цитированием
Старый 08.11.2012, 13:25   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Как вариант - сделать отдельный инлайн метод, или шаблон
Код:
CellType GetCellType(int x, int y)
{
   // Ширина поля
   int arrayLengthX = array.Length
   // Высота поля
   int arrayLengthY = array[0].Length
   
   // Проверки на "выход за границы"
   if (x>arrayLengthX)
     x-=arrayLengthX; // Корректируем значение переменной, если вышли за границы
	if (x<0)
      x+=arrayLengthX;
   if (y>arrayLengthY)
     y-=arrayLengthX;
   if (y<0)
      y+=arrayLengthY;
  // Возвращаем содержимое ячейки массива с учетом проверки на выход за границы  
  return array[x][y];
}
P.S. не очень дружу с с++, но принцип, надеюсь, ясен
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 08.11.2012, 14:02   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Можно.
Код:
map[x][y]; // "Наша" клетка
map[(x+1)%mapWidth][y];// Клетка справа от нашей
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04