Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация записи в массив, Не знаю как это замутить. 
:(
    Опции темы
G_R_E_M_L_I_N
  Дата 5.4.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.10.2006

Репутация: нет
Всего: нет



Доброго всем времени суток.
Возникла у меня такая проблема.Делается примитивный солитер.Пользуюсь вот таким алгоритмом:
Что имеем
0) Номер карты на поле
1) Положение на поле, координаты Х,У.
2) Ширина и высота карты
3) Масть, соответственно цвет, текстуры
4) Статус карты, перекрывает ли она или ее перекрывают.
5) Массив int,в котором -1,если карта не перекрыта, и номер карты карты которыми данная перекрыта

При расположении карт на поле запоминаю позицию для каждой карты, если ты кладешь карту и она перекрывает другую, то добавляю в массив (5), номер карты или нескольких, которые перекрываешь. После того когда занес номер карты в массив(5), ту карту которую занес ставлю статус(4) что она перекрыта.

Проблема заключается в том,что я не пойму как записать в массив для каждой карты значения тех карт которые ее перекрывают.

Мой ход мысли был примерно таков - беру первую карту и проверяю есть ли у нее пересечения с какой либо другой,если да то записываю номер этой карты(например 2) в массив.потом беру эту карту( 2 ) и проверяю пересекает ли ее какя - нибудь карта,если да ( 3 ),то записываю ее в массив 1 и массив 2.И вот какая незадача а если 1 карту пересекают сразу три или четыре,короче незнаю как организовать эту запись.
Буду очень благодарен за помощь.
PM MAIL   Вверх
Promitheus
Дата 5.4.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2007

Репутация: 1
Всего: 1



Наксолько я вижу решение: отсортировать массив первая карта - самая нижняя, если она одна в этой стопке карт, то её никто не перекрывает, если есть элементы, то каждый следующий элемент перекрывает все предыдущие. Исходя из этого будет удобно отрисовывать, задать начальные координаты по оси у, х константата и идти по массиву, а игрек увеличивать скажем на 1/3 длины карты.

Это сообщение отредактировал(а) Promitheus - 5.4.2007, 12:51
PM MAIL ICQ   Вверх
zkv
Дата 5.4.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



G_R_E_M_L_I_N, думаю начинать над с организации удобного хранения данных. 

Для начала раздели данные и  их представление. 
Например неправильно хранить координаты карты на экране в объекте "карта". 

Для хранения сведений о текущем состоянии дел на игровом поле явно напрашиваются стеки (FIFO). 
Вообщем получается у тебя три массива стеков, первый - для исходных стопок карт, из восьми стеков, второй - для вспомогательных, из четырех элементов,  и третий - для результирующих стопок. 
Еще возможно стоит завести массив из восьми указателей (итераторов), каждый из  которых будет указывать  на карту, с которой начинается упорядоченная (по правилам игры) последовательность карт (естественно если она продолжается вплоть до верхней карты включительно).
Думаю эти данные будут однозначно и довольно удобно представлять ситуацию на поле. Останется их только правильно отобразить на экране.

Да, в качестве сведений о карте достаточно хранить ее значение и масть

PS возможно, конечно, чего то не учел, но общее направление, думаю, должно быть таким. 

Это сообщение отредактировал(а) zkv - 5.4.2007, 13:43
PM MAIL   Вверх
regis
Дата 5.4.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



В общем, мне тоже кажется, что достаточно для каждой карты хранить дополнительно z-координату. И рисовать каждую карту, учитывая ее.

Цитата
2) Ширина и высота карты


А что, возможно такое, что они не для всех карт одинаковы?  ;)



Это сообщение отредактировал(а) regis - 5.4.2007, 15:00
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
zkv
Дата 5.4.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(regis @  5.4.2007,  14:45 Найти цитируемый пост)
хранить дополнительно z-координату.

дополнительно к чему?
PM MAIL   Вверх
regis
Дата 5.4.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Цитата(zkv @ 5.4.2007,  14:50)
Цитата(regis @  5.4.2007,  14:45 Найти цитируемый пост)
хранить дополнительно z-координату.

дополнительно к чему?

Дополнительно к X и Y координатам карты. А вот отдельные массивы (где пытаемся хранить информацию о том, что эту карту перекрывает) на мой взгляд избыточны. (Тем более, что может быть накрыто более чем одной картой.) Хотя, конечно, все зависит от конкретного реализуемого пасьянса.

--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
zkv
Дата 5.4.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(regis @  5.4.2007,  15:03 Найти цитируемый пост)
Дополнительно к X и Y координатам карты. 

да не надо хранить никакие координаты, они должны расчитываться при каждой новой прорисовке (достаточно пройти по стекам в определенном порядке и нарисовать каждую встреченную карту), тем более не нужны никакие z-order'ы, цвета, текстуры, размеры. Хотя если каждая карта будет иметь свою индивидуальную картинку, то конечно стоит хранить указатель на нее.
Интересно, как вы собираетесь  организовывать всю работы программы? Основываясь на координатах карт на экране? 
Все конечно возможно, но зачем создавать себе сложности.

Это сообщение отредактировал(а) zkv - 5.4.2007, 15:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2753 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.