Показать полную графическую версию : Дайте идею
DENoszone
24-07-2008, 17:39
Вот пишу игру балда поле 5 на 5 ..надо состовлять слова добавляя одну букву..
как осуществить ход компа?=(
DENoszone, как осуществить ход компа?=( »Сначало нужно сделать словарь слов, к которому программа будет обращаться. Я правильно понял игру?
| | | | | |
-----------
| |М| | | | // Здесь буква М делает слово Мышка ?
-----------
|в|ы|ш|к|а|
-----------
| | | | | |
-----------
| | | | | |
DENoszone
24-07-2008, 21:30
да ...
словарь есть...
загнал его в масив..
сделал ход...
человек с человеком уже можно играть .
а вот с компом...трудная задача=(
не могу придумать алгоритм поиска слова
DENoszone, Тогда нужно создать массив алфавита, и при ходе компьютера, перебирать по одной букве из массива алфавита подставляя букву из алфавитного массива к слову в массиве или сверять на предмет полученного слова со словарём. Ёлки, пока писал подумал, что слова могут идти и наоборот и ломанно... Запутался, честно говоря, не знаю. Но наверняка нужен ещё алфавитным массив. Мы ведь когда играем в эту игру, мысленно подставляем буквы и потом "видим" полученное слово. И ещё точно скажу, поскольку шаг проверяемого слова равен 1 (еденице) или одной букве, то нужно сделать таблицу шагов.
const int row = 5;
const int column = 5;
int board[row][column] = { 0 },
horisontal[2] = { 1, -1 },
vertical[2] = { -1, 1 };По принципу, если нужен ход вверх, то по массиву vertical идёт -1, если вниз, то 1, если влево, по массиву horisontal, идёт -1, вправо 1, перебирая полученные варианты. Извините, я дальше не знаю сам. :dont-know
DENoszone
24-07-2008, 23:51
вот такие идеи приходят...
но это не дело..
была идея...выписать все слова возможнные и проверить..
но тоже не то...
а про подстановку букв...это убьет все... 3к способов только в начале=)
Ну по сути от любой буквы есть всего 3 продолжения, что уже достаточно неплохо ограничивает кол-во вариантов перебора.
...
Пока писал придумал другой, как мне показалось более удачный алгоритм. Каждое слово массива разбиваем на составляющие. Пример разбития слова "Слово":
сл
сло
слов
1. Все эти частички запоминаем в новый массив.
2. И при переборе сверяем с нашим новым массивом.
3. Если ничего не найдено то берем другую букву,
____________если найдено - сверяем с основным массивом
_________________________если найдено это и есть искомое слово, но продолжаем набирать буквы.
_________________________если не найдено берем другую букву.
Хоть это и подстановка букв, но имхо должно быстро работать, ведь неверные направления будут достаточно быстро отсекаться еще в начале ветвления.
DENoszone, а про подстановку букв...это убьет все... »Нет, вы не поняли, не перебор по буквам, а например слово вышка перебираем от буквы ышка, начиная с А - Аышка, Бышка, Вышка ... Пышка. и т.д. Если в этом случае слова в словаре нет, то переходим ко второй букве: Ы, к третьей Ш. Как только слово найдено, создаём динамический массив, куда будет найденное слово сохраняться, чтобы потом не перебирать заново все варианты, а брать уже из найденного ранее и сохранённого. Правда как это реализовать я не знаю. :beta:
DENoszone
25-07-2008, 08:03
вот это сейчас и буду пытатся делать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.