Learn Go Game
Общение любителей и Мастеров игры Го
Страницы: <<123>>
Страница: 2 из 3
Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 14:47   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Камень кодируется цифрами с учетом свободных дамэ.
Т.е. белые камни идут со знаком минус , черные - плюс,
одиночный камень имеет четыре дамэ соответсвенно обозначается
(x,y,4) или (x,y,-4) можно вместо координат x,y записать соотвествие
номеров элементов в таблице - где А1 - 0, А2-1, B1-20, b2-21 и т.д.
тогда форма записи будет (0,2) или (0-2) и т.д.

группа камней расположеных по одной линии объединяются в одну запись пример (0:30,4) где 0:30 координаты группы А1, В1, С1 и 4 дамэ.
группы "кривые" расположенные не по одной линии а по нескольким, объединяются в структуру.......

Модификация записей втаблице производиться обычным способом,
путем добавления или удаления по смещению адреса от начала записи таблицы в стеке.

Re: формализация общего алгоритма компьютерной игры ГО
Les на rugo.ru Любитель Го
13, November, 2003 15:45   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Расскажу, как я сделал представление позиции для для своего флешового вьюэра. Никаких думаний там делать не надо, но экшнскрипт тормозной, поэтому пришлось думать и об эффективности.
Во-первых матрица. Каждый элемент - "пусто", "белый" или "черный". Это база. Однако, надо делать кой-какие расчеты, ведь СГФ не говорит явно, когда группа умирает, значит надо самому считать дамэ.
Для быстрого расчета дамэ применяется следующая процедура.

Структура каждого пункта дополняется двумя полями.
1) указатель на лидера моей цепи
2) число, которое указывает количество дамэ цепи, если я - лидер.

Получаем нечто вроде:

struct Field
{
int color;
Field* leader;
int dames;
}

Как это поддерживается?
Установка камня обрабатывается так.

leader = <я сам>.
<Для всех соседних пунктов>
{
<Если свободный>
<Увеличить dames у моего лидера>
<Если друг>{
<Сложить dames лидера моей группы и лидера друга>
<Результат уменьшить на единицу>
<Сменить лидера моей группы на лидера друга>
<Если враг>{
<Уменьшить dames врага на единицу>
}
}

Последний хитрый момент в том, что не для всякого камня leader - настоящий лидер группы. Поэтому функция getLeader выглядит так:

Field::getLeader()
{
если( <Я> == leader )
вернуть leader
иначе
leader = leader.getLeader()
вернуть leader
}
Обратите внимание, что средняя глубина рекурсии меньше 2.

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

Re: формализация общего алгоритма компьютерной игры ГО
Илья Ветров на rugo.ru Ценитель Го
13, November, 2003 15:54   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Лес , у меня аллергия на флэш , как и на джаву , но чтобы посмотреть на твой вьюер SGF - включу ее . Только дай ссылочку пожалуйста !



Отправка отредактированного (13/11/03 15:55)

Наш рот всегда открыт для диалога (c) Владимир ВишневскийOkruzhor (экс-Игозавр)

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 16:25   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Для вьювера, такая реализация кода не столь существенна.

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

Re: формализация общего алгоритма компьютерной игры ГО
WinPooh на rugo.ru Ценитель Го
13, November, 2003 16:37   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

список из 12 пунктов - в студию :)

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 16:44   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

на халяву и уксус сладкий.)))

Re: формализация общего алгоритма компьютерной игры ГО
Илья Ветров на rugo.ru Ценитель Го
13, November, 2003 17:11   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

А остальные 11 ?



Наш рот всегда открыт для диалога (c) Владимир ВишневскийOkruzhor (экс-Игозавр)

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 17:14   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

а первый пункт в периоде................)))

Re: формализация общего алгоритма компьютерной игры ГО
Илья Ветров на rugo.ru Ценитель Го
13, November, 2003 17:17   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Я так и думал



Наш рот всегда открыт для диалога (c) Владимир ВишневскийOkruzhor (экс-Игозавр)

Re: формализация общего алгоритма компьютерной игры ГО
Евгений Матвеев на rugo.ru Гость
13, November, 2003 17:29   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>А пробовал работать со списком? Ну как с ним легко ? И выборку и перебор делать..............
> По смещению или по адресу? Так где легче будет запрограмить?
>И еще - список , это частный случай одномерной матрици, в приложении к программированию......

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

Re: формализация общего алгоритма компьютерной игры ГО
WinPooh на rugo.ru Ценитель Го
13, November, 2003 17:30   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Евгений, не дождетесь. Сразу предупреждаю.
:)

Re: формализация общего алгоритма компьютерной игры ГО
Les на rugo.ru Любитель Го
13, November, 2003 17:30   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>>Только дай ссылочку пожалуйста !

Там нужно сделать еще одну вещь - понимать команды от окружения. Как минимум - имя СГФ файла. Сделаю - покажу.

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 18:22   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

С матрицей работать легче из-за того что заранее известен адрес ячеек, независимо от того, заполнена она (яейка) данными или нет.

к сведению, я программирую только на ассемблере.

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

а так как матрица фиксирована, то ее не нужно будет персчитывать, при изменении записей.
И объем памяти занимает то же фиксированый.............а двумерная, потому что доска такая............по двум координатам.

Re: формализация общего алгоритма компьютерной игры ГО
Les на rugo.ru Любитель Го
13, November, 2003 19:12   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>>к сведению, я программирую только на ассемблере.

Ходят слухи, что он совершенно перестал пить портвейн и пьет только водку, настоянную на смородиновых почках, отчего очень поздоровел. (c) Мастер и Маргарита

Re: формализация общего алгоритма компьютерной игры ГО
Илья Ветров на rugo.ru Ценитель Го
13, November, 2003 19:14   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

А Обломову настаивали водку на смородиновом листе . Какое полезное растение !



Наш рот всегда открыт для диалога (c) Владимир ВишневскийOkruzhor (экс-Игозавр)

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 19:24   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Злые вы все.................(((((((((((((

Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 19:27   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Языки высокого уровня, только для ленивых.................

Re: формализация общего алгоритма компьютерной игры ГО
Олег Попов на rugo.ru Любитель Го
13, November, 2003 19:35   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

ассемблер тоже для ленивых
реальные программеры пишут прямо в бинарных кодах!


Re: формализация общего алгоритма компьютерной игры ГО
kit на rugo.ru Гость
13, November, 2003 20:38   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

и это можно.................

Re: формализация общего алгоритма компьютерной игры ГО
Евгений Матвеев на rugo.ru Гость
14, November, 2003 02:31   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>И объем памяти занимает то же фиксированый.............а двумерная,
>потому что доска такая............по двум координатам.

Так я правильно понял, мы храним в матрице все-таки текущую расстановку, а не позицию с полной предысторией? Тогда смысл двух координат предельно ясен. Ясно и то, что наряду с позицией нужно отдельно хранить информацию о том, чей сейчас ход. Непонятно другое - как определить, какой из ходов E10 и L10 является запрещенным для белых в следующей позиции?

(;
GM[1]FF[4]VW[]
SZ[19]
HA[0]
ST[1]
AB[dj][ei][fj][ek][jj][ki][lj][kk]
AW[dk][el][fk][jk][kl][lk])

PS Естественно, черные захватили один белый камень. В исходной об этом не сказано, но будем считать, что эта информация тоже хранится в каком-нибудь удобном месте :)

Страницы: <<123>>
Страница: 2 из 3


Извините, только зарегистрированные пользователи могут писать в этом форуме.

  cassino online brasil   apuestas online en chile   Go game in Russia   Online Go lessons   How to Play Go