Вывод отношений

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Вывод отношений

Страницы: 1  новая тема

Автор Сообщение

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 02-12-2006 16:10
Есть отношения между сторонами:
.|1|2|3
1|x|5|1
2|5|x|3
3|1|3|x

Цифры слева и сверху - это стороны.
Цифры в внутри таблицы - отношения между ними(0-5,0-враждебны, 5- оч. хор. отношения)
x - между одинаковыми сторонами нет отношений.
Т.е здесь отображены 1 сторона дружит со 2, но воюет с 3.
А 2 сторона дружит с 1, но в нейтралитете с 3.
Таблица выглядит ввиде дин. структуры grid, но очевидно что делать грид неэффективно, т.к. у нас симметричная матрица.
Я использовал лист. Если сторон 3, то у первой стороны будет 2 отношения, у 2 стороны на одно отношение меньше, потому что оно описано для 1 стороны и совподает. и т.д. до посл.
идея понятна, а реализация хромает, помогите отыскать ошибку:

//argument0 - global.owners; Всего сторон
if(argument0 > 1)
{
....for(a = 0; argument0 - 1 > a ; a += 1)
........draw_sprite(sRelationship,ds_list_find_value(global.list_relationship, a), x + 16 * a + 32, y + 16 * (global.owners - argument0) + 16);

....LIST_DRAW_RELATIONSHIP(argument0 - 1);
}

P.S.: Точки в коде сделал для сохранения структуры кода, в редакторе скриптов нажимаете кнопку Replace: Что: .... Чем: (четырьма пробелами) и всё будет в поряде.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 02-12-2006 16:37
А слабо двумерные массивы?

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 02-12-2006 16:38
читай внимательнее:
Таблица выглядит ввиде дин. структуры grid(2 мерный массив динамический), но очевидно что делать grid неэффективно, т.к. у нас симметричная матрица.

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 02-12-2006 16:49
grid(2 мерный массив динамический),

А ты ее делай не как грид, а как двумерный динамический массив.
А вобще, делаешь список такого вида: (n - кол-во групп, например 3)


х
3
1
3
х
5
1
0
1
4
х

Т.е. хранишь как в массиве, токо в списке, а печать определенной группы:
for(i:= 0; i < index * n; i+=1)
if ds_list_findvalue(list, i * n) <> 'x' then
draw_text(x, y, 'Группа #' + index + ' имеет отношени с группой #' + i + '= ' + ds_list_findvalue(list, i * n));

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 02-12-2006 17:27
for(i:= 0; i < index * n; i+=1)

Если это лист почему ты всегда читаешь всегда сначала?

Дундук - не беспокоить!
Группа: Модераторы
Сообщений: 1435
Добавлено: 02-12-2006 19:10
Не заметил? Я читаю не весь список, а лишь ту часть, к которой относится нужная группа
PS. Там от еденици надо начинать, а не от 0, и *n убери, я в спешке писал)

Страницы: 1  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Вывод отношений

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

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

KXK.RU