-
Кто писал сабж? Какие алгоритмы использовали? :)
-
Я писал. Какие алгоритмы интересуют?
-
За комп... сейчас использую гибрид случайного выстрела + случайная выборка из нескольких наборов точек - по первое кольцо (периметр), второе кольцо и в центре. Иногда пользователь выигрывает :)
-
Хочу ещё добавить выстрелы по пересечению самых длинных колонок и рядов...
-
Может посмотришь готовые исходники
-
Все готовые (которые нашёл).. сводяться к тупому случайному долбанию до ранения с последующим убиванием... и дальнейшим долбанием.
-
... а да... был ещё вариант случайного долбания с периодическим подсмотриванием расстановки кораблей пользователя :)
-
блин и почему на этом форуме людей так мало
вообще глухомань.
человеку даже посоветовать некому
-
ЗЫ: Поэтому большинство задают вопросы в ту конфу где народу всегда много... "Потрепаться" :)
-
Есть ещё мысль вставить повтор случайных кусков из ходов пользователя.
-
Не знаю вот стоит заморачиваться или ничего хорошего не даст..
-
> стоит заморачиваться
конечно стоит. создашь одну из миллиона игру. или из миллиарда? да какая разница. пин-понги пишут, значит, и морской бой актуален как никогда.
-
> [2] Knight © (04.01.09 22:40)
Случайная стрельба с анализом положения кораблей. Сначала охотимся за 4 палубным - делаем рандом до тех пор пока указанная точка теоретически не может принадлежать 4 палубному. Как поймали, ищем 2 трех палубных и так далее. Оптимальнее ничего не придумаешь.
-
> KilkennyCat © (04.01.09 23:37) [11]
Я не про то... я про дубляж серии выстрелов пользователя с случайной позиции...
ЗЫ: Курсовую такую выбрал, всё-равно давно хотел попробовать... совместить приятное с полезным :)
-
> @!!ex © (04.01.09 23:45) [12]
Корабли ведь не однопалубные, всё-равно где-то вероятность корабля выше... Запускал генерацию положений кораблей, на 10 тысяч самый высокий процент на втором кольце и к центру, минимум на углах... но генератор не пользователь :)
-
Ну, если курсовая, то советую к [12] добавить анализ психологии, например, лепление только горизонтально, только в один угол, а также анализ психологии атаки. Дабы вторая игра была еще более оптимальна. Самообучаемость, так сказать.
-
Дал тут знакомым поиграть... идёт примерно 50 на 50... в основном проигрывает не одноклеточных.
-
Из всех позиций рандома убираются те точки, которые не могут быть под обстрелом (вокруг подбитых кораблей). Если было попадание как нимимум 4 точки не будут под обстрелом - угловые возле точки попадания. Если было попадание, но не смерть - нужно долбить на поиск вокруг этого попадания. Сначала ищутся бОльшие корабли, соответственно строятся временные маски исключающие невероятные позиции (например ищем 3х палубный, пустое место из двух ячеек не может его содержать и помечается "временно простреленной").
Примерно так, все не помню :)
-
> antonn © (05.01.09 00:46) [17]
У меня сейчас каждая ячейка таблицы анализатора имеет массу от 0 до 6...
0 - это иключённая из поиска (прострелянная или в зоне корабля)
1 - изначальная (для случайной стрельбы)
2 - набор ячеек первого круга (переферия)
3 - набор ячеек второго круга
4 - редкая сетка на центральную часть
5 - ячейки для обстрела раненого корабля
6 - если 5 совпало с 2, 3 или 4
Перед каждым выстрелом ячейки по массам заносятся в массив целей, 6 и 5 вне конкуренции, если они имеют элементы, то выирается случайная ячейка из 6, когда 6 не остаётся из 5... потом выбирается случайное число 1-4 и из выбранного массива случайная цель. При попадании и добиве, следующая цель выбирается из того-же массива при 2-х промахах снова идёт выбор массива от 1 до 4.
Примерно так.
-
> antonn © (05.01.09 00:46) [17]
Насчёт "маски" мысль дельная... надо подумать :)
-
ну "маски" - я про копию поля боя только во временном массиве, где помечены невалидные ячейки (а их больше, чем на "боевом" поле) :)
> Knight © (05.01.09 01:03) [18]
очень похоже я когда то делал крестики-нолики на большом поле, почти такая же структура, только вместо массивов 4 стринггрида, куча мемо (я не умел делать массивы с числами, и tstrings тоже не умел :)), и все это крутилось в них, только все они были visible:=false :) Почему то вот напомнило :)
-
Сейчас такой массив весовых коэф.
Может можно ещё оптимизировать? :)
0 2 0 2 0 0 2 0 2 0
2 3 0 0 3 0 0 0 3 2
0 0 4 0 0 4 0 4 0 0
2 0 0 4 0 0 4 0 0 2
0 0 4 0 4 0 0 4 0 0
0 3 0 0 0 4 0 0 3 0
2 0 0 4 0 0 4 0 0 2
0 0 4 0 0 4 0 4 0 0
2 3 0 0 3 0 0 0 3 2
0 2 0 2 0 0 2 0 2 0
-
У Мартина Гарднера в одной из его книг - рассматривалась оптимальная стратегия для "Морского боя" и она очень похода на совет
@!!ex из [12] .
-
А что за "анализ положения кораблей"?
-
Постараюсь описать вкратце.
1) Ловим 4-х палубный корабль, для этого обстреливаем поле через каждые 3 клетки
0*000*000*
00*000*000
000*000*00
*000*000*0
0*000*000*
00*000*000
000*000*00
*000*000*0
0*000*000*
00*000*000
* - место потенциального выстрела, т.о. через 25 выстрелов мы вычислим гле находится флагман(только в книге по-моему чуть сдвинута эта сетка и получается 24 выстрела)
Каждая из этих 25 звездочек выбирается рандомно, если попадаем на менее значимый корабль добиваем его.
После "убийства" флагмана также ловим трехпалубные:
0*00*00*00
00*00*00*0
*00*00*00*
0*00*00*00
00*00*00*0
*00*00*00*
0*00*00*00
00*00*00*0
*00*00*00*
0*00*00*00
Как то так, насколько я помню оптимальный алгоритм.
-
> [24] Putnik © (06.01.09 19:02)
Проблема этого алгоритма в том, что зная его легко компа обдурить. Вернее не обдурить, но сильно уменьшить его эффективность. Например однопалубные ставить так, чтобы они никогда не попадали под выстрелы. двух палубные ставить так, чтобы они не попадались при охоте на 4 палубный.
Поэтому старый добрый рандо всеже рулит. :)
-
2 @!!ex © (06.01.09 20:01) [25]
Я могу быть неправ, но таких видов таких сеток с минимальным числом выстрелов для поимки каждого вида корабля совсем не одна(для 4-х палубного, точно помню по Гарднеру, - 2, не считая зеркальных отражений, для 2-х и трехпалубных должно быть также). Каким видом сетки ловить определять рандомом, поэтому он и рулит)) А однопалубные так и так придется рандомно ловить))
-
> Putnik © (06.01.09 19:02) [24]
Я бы не назвал это анализом... анализ это когда пользователь расставляет корабли по периметру поля (или в один угол, или по углам, или в центре и т.п.), пару одноклеточных бросает на открытое пространство, а комп, найдя лишь один корабль - убивает их все, "предположив", что они находятся там же, после чего начинает искать одноклеточные, так же анализируя взаимное расположение кораблей. Т.е. анализ - это не что-то однотипно предопределённое, это гибкая система с использованием хоть любых систем хоть по Фрейду или Юнгу, по звёздам или Фен-Шую :)
У человека с этим делом проще, интуиция - мощная штука... модет срубить почти все корабли (включая однопалубные) при любой расстановке без промахов %)
Вот с этим напряг %)
-
> У человека с этим делом проще, интуиция - мощная штука...
> модет срубить почти все корабли (включая однопалубные) при
> любой расстановке без промахов %)
Не поверю :) Один раз - повезло.
Но чтоб каждый раз эта интуиция работала - так не бывает)
-
> {RASkov} © (07.01.09 02:12) [28]
просто берешь снаряд размером 10x10...
а вообще, про вероятность подания снаряда в какое-то место на поле очень хорошо Almaz рассказывал...
-
2 Knight © (07.01.09 01:02) [27]
Я и не называл это анализом, просто описал оптимальный алгоритм.
Если я расположу "абсолютно случайно" все корабли, интуиция наверное даст сбой.
>модет срубить почти все корабли (включая однопалубные) при любой >расстановке без промахов
Тогда придется подсматривать, чтобы воссоздать такую интицию)
-
> Поэтому старый добрый рандо всеже рулит. :)
Тут тоже вопросы бывают. Допустим у нас только однопалубники и стоят как угодно - соприкасаясь и т.п. Каков алгоритм случайных выстрелов или расстановок?
Часто ппредлагают с виду простые и правдоподобные алгоритмы, которые тем не меннее допукают наличие выигрышной стратегии у противника.
-
> Допустим у нас только однопалубники
С "допустим" - начинают только математики :)
-
> Knight © (08.01.09 15:55) [32]
Так тут везде - сплошная математика. :) Однопалубники нужны для постановк и начального понимания проблемы. :)
Задача не такая праздная, кстати. Грубо можно так(одному на собеседовании в Сингапуре так и дали) - перемешать массив из миллиона чисел.(у Кнута есть ответ - очень простой, но если без него). Я такую задачку решал 20 лет назад - как раз при проектировании Морского боя.
-
А может кто-нить на примере морского боя привести пример нейронной сети и принципа её обучения? %)
-
> [34] Knight © (09.01.09 20:26)
нах НС в морском бое?
-
А фх знает... думал, мож она думать будет.. и обучаться :))
-
> [36] Knight © (09.01.09 23:17)
не получится. не обучится.
Можно попробовать, но далеко от тупого рандома не уйдет.
-
> далеко от тупого рандома не уйдет.
тупая - да. а умная и обучающаяся нейросеть быстро придет к выводу, что проще подглядывать :)
-
Удалено модератором
Примечание: Мы все скорбим.
-
> [39] aleks (18.02.09 16:23)
сочувствую. www.playground.ru Там помогут. здесь - нет.