Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - *Теория*(VB.NET || C#.net ) Нужен алгоритм для мини - игры

Ответить
Настройки темы
.NET - *Теория*(VB.NET || C#.net ) Нужен алгоритм для мини - игры

Пользователь


Сообщения: 91
Благодарности: 3


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день!
Игра: есть поле 8 х 8 ячеек(изначально серого цвета), игрок имеет право ходить только буквой "Г" и только в ещё не пройденный квадрат(пройденный квадрат меняет цвет на красный).
Допустим игрок сделал n ходов, надо сделать так ,что бы при нажатии на кнопку рядом с игровым полем, компьютер заполнял оставшееся поле с учетом выше перечисленных правил(ходы компьютера сохраняются в файле) или ,если заполнить поле нет возможности, выдавал сообщение об этом.
Нужен алгоритм позволяющий заполнять поле после n>=0 ходов игрока.. Может кто нить знает где его можно взять или есть идеи как построить алгоритм?...
Заранее благодарю.

Отправлено: 14:36, 15-05-2007

 

Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


Цитата:
компьютер заполнял оставшееся поле с учетом выше перечисленных правил
Т.е. компьютер должен сам сходить "буквой Г"?
Ну и чего сложного? Массив 8х8, "непохоженное" поле - 0, похоженное - "1". Из текущего положения капм пытается сходить буквой Г, если там единичка - то пытается сходить по-другому, если больше вариантов хода для него нет - то все...

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 14:44, 15-05-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пользователь


Сообщения: 91
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата:
Т.е. компьютер должен сам сходить "буквой Г"?
Ну и чего сложного? Массив 8х8, "непохоженное" поле - 0, похоженное - "1". Из текущего положения капм пытается сходить буквой Г, если там единичка - то пытается сходить по-другому, если больше вариантов хода для него нет - то все...
ну это то понятно)) только у него в каждом случае от 1 до 8 вариантов ходов(допустим игрок сделал один ход, это ж сколько переборов сделать надо), а надо что бы он закрасил все поле.. если сделать такой перебор, то это имхо извращение..
думаю существует какое то математическое решение..

Отправлено: 14:57, 15-05-2007 | #3


Вредитель


Сообщения: 460
Благодарности: 126

Профиль | Отправить PM | Цитировать


Задачи такого типа решаются с помощью рекурсии, и единственный вариант - полный перебор всех вариантов. Насколько я знаю математического решения нет.

-------
Все сказаное является только моим личным мнением.


Отправлено: 15:16, 15-05-2007 | #4


Пользователь


Сообщения: 91
Благодарности: 3

Профиль | Отправить PM | Цитировать


CyberDaemon
DedAlex
ок.. прийду домой попробую написать.. но возникает такой вопрос:
Изначально я создаю массив кнопок 8 на 8( поле).. попутно создал массив 8 на 8 типа boolean(true - пройденная ячейка, false - непройденное ячейка).. так вот, как быстрее будет работать программа: если работать с массивом булеан или лучше создать целочисленный массив или вообще использовать свойство уже существующего массива кнопок .tab(mas(i,j) - массив кнопок, mas(i,j).tag=1 - пройденная кнопка-ячейка, mas(i,j).tag=0 - непройденная) ?

Отправлено: 15:33, 15-05-2007 | #5


Аватара для CyberDaemon

DOOMer


Сообщения: 3254
Благодарности: 438

Профиль | Отправить PM | Цитировать


ssdm
Цитата:
от 1 до 8 вариантов ходов(допустим игрок сделал один ход, это ж сколько переборов сделать надо
Полагаю, от одного до восьми на каждый ход. При условии, что они с игроком по очереди ходят.

Или игрок должен начать, а компьютер после этого "ходом коня пройти все поле, не попадая дважды в одну и ту-же клетку"? Тогда простор для фантазии в самом деле огромный, и перебором _это_ решать...

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 16:20, 15-05-2007 | #6


Пользователь


Сообщения: 91
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата:
Или игрок должен начать, а компьютер после этого "ходом коня пройти все поле, не попадая дважды в одну и ту-же клетку"? Тогда простор для фантазии в самом деле огромный, и перебором _это_ решать...
именно так )

Отправлено: 16:24, 15-05-2007 | #7


Аватара для bezumes

Пользователь


Сообщения: 68
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
ну это то понятно)) только у него в каждом случае от 1 до 8 вариантов ходов(допустим игрок сделал один ход, это ж сколько переборов сделать надо), а надо что бы он закрасил все поле.. если сделать такой перебор, то это имхо извращение..
думаю существует какое то математическое решение..
при маленьком количестве закрашеных клеток комп решение будет быстро находить(потому что куда ни плюнь везде пусто


А при занятых количестве клеток больше допустим 3/4. Можно сделать так:
Взять оставшиеся пустые клетки и проверять можно ли туды ходить.А если заняты все клетки то gane over and happy end.
Я думаю,если использовать такой вариант алгоритма , его работа существенно ускорится т.к. иначе при большом количестве занятых клеток комп будет впустую проверять варианты ходов.




Кстати можно вопрос. Комп просто показует все ходы которые возможно или вы играете с ним. Если идет игра с ним то придется делать еще оценку позицииь. В этом случае перебор вглубь на первых ходах будет ужасно медленным.И почему вы расматриваете только ходы коня, есть же еще много фигур(или это не шахматы)

-------
Ты говоришь я Демон, так и есть.
Со мною не видать тебе удачи.
Навеки моё дело зло и месть.
Для демона не может быть иначе.(с) КиШ


Последний раз редактировалось bezumes, 15-05-2007 в 18:53.


Отправлено: 18:46, 15-05-2007 | #8


Пользователь


Сообщения: 91
Благодарности: 3

Профиль | Отправить PM | Цитировать


bezumes
это не шахматы..
играю я один.. а комп это что то вроде подсказки..
Цитата:
при маленьком количестве закрашеных клеток комп решение будет быстро находить(потому что куда ни плюнь везде пусто
мало просто сходить, надо сходиь так, что бы закрасить все поле..

Отправлено: 20:25, 15-05-2007 | #9


Аватара для bezumes

Пользователь


Сообщения: 68
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
мало просто сходить, надо сходиь так, что бы закрасить все поле..
Придется строить дерево.
Получается количество ходов=63(8*8-1),и количество уровней дерева.Количество вариантов которые придется перебирать мне и представить сложно
Допустим все клетки свободные .фигура находится где то посредине.
Смотрим что за ходы у нас есть(8 ходов, если фигура находится с краю поля то меньше).Прросматриваем первый ход.Вновь строим все возможные ходы и так поднимаемся по "дереву" пока или не достигним того что все заполним(кстати все эти текущие ходы надо запоминать)и выведем то что снизу это первые сверху последнии.Если ходы заканчиваются а свободные клетки остаются на уровень вниз и расчет оставшихся ходов.

Можно еще сделать чтобы при переходе по дереву на уровень вверх просматривалась ветвь на которой больше всего ходов, т.к. там вероятность того что идем туда выше.

Еще можно прикрутить оценку позиции. В центре оценка будет больше, т.к ходов больше, по краям меньше.

Певые ходы(2-3) можно сделать случайными(или нельзя?), скорость возрастет на несколько порядков.



З.Ы. В любом случае алгоритм решения данной задачи будет жутко медленным, и оптимитизация его затруднена потому что я, допустим не очень то понимаю, где отсечение веток делать.

-------
Ты говоришь я Демон, так и есть.
Со мною не видать тебе удачи.
Навеки моё дело зло и месть.
Для демона не может быть иначе.(с) КиШ


Последний раз редактировалось bezumes, 15-05-2007 в 21:06.


Отправлено: 21:00, 15-05-2007 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - *Теория*(VB.NET || C#.net ) Нужен алгоритм для мини - игры

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Лучшие игры 2009 года по версии OSZONE.NET. Часть 6 OSZone News Новости информационных технологий 0 18-12-2009 23:30
Лучшие игры 2009 года по версии OSZONE.NET. Часть 5 OSZone News Новости информационных технологий 0 18-12-2009 23:30
Лучшие игры 2009 года по версии OSZONE.NET. Часть 4 OSZone News Новости информационных технологий 0 18-12-2009 21:30
[решено] .NET 3.0 нужен. А нужен ли .NET 2.0 для шаблонного сервера? LevT Автоматическая установка Windows 2000/XP/2003 7 09-07-2007 14:29
Нужен ли E-mail на oszone.net Seddos О сайте и форуме 50 06-02-2003 01:58




 
Переход