Comments 85
А где картинки?
Тебе свой комп не жалко?)
Не жалко, но я такого не ожидал :-)
~$ uptime
10:22AM up 35 days, 18:21, 11 users, load averages: 1.02, 0.89, 0.80
~$ uptime
10:22AM up 35 days, 18:21, 11 users, load averages: 1.02, 0.89, 0.80
На текущий момент одновременно идёт более ста скачиваний! 8-O
Я буду раздавать дистрибутивы ещё недели две, а то и месяц. Кто не смог скачать сейчас — возращайтесь завта, думаю, основной наплыв скачиваний спадёт. Сейчас я остановил раздачу торентов. Весь мой скромный канал отдан хабражителям :-)
Я буду раздавать дистрибутивы ещё недели две, а то и месяц. Кто не смог скачать сейчас — возращайтесь завта, думаю, основной наплыв скачиваний спадёт. Сейчас я остановил раздачу торентов. Весь мой скромный канал отдан хабражителям :-)
Чот 10 игр, 10 побед, скучна как-то
Нуу… 10 из 10 — это вам везёт :-) Но сейчас человек выигрывает действительно чаще 50%. Дело в том, что компутер смотрит на один ход вперёд. Он старается сделать наиболее разумно текущий выстрел. Он не старается простроить стратегию игры. Реализация стратегии — следующий шаг.
Даёшь сетевую! Одному и в правду скучновато. Я после 5ти игр сдался.
играет честно (то есть, при выдумывании хода, компьютер не подглядывает в ваше поле)
а что в других реализациях он подглядывает? никогда бы не подумал…
а что в других реализациях он подглядывает? никогда бы не подумал…
Не думали «обучить» программу? заставить компьютер поиграть с самим собой, или с пользователями, и выудить из результатов несколько тактик, приводящих к успеху?
Ну и грабить корованы тоже неплохая идея ))
Ну и грабить корованы тоже неплохая идея ))
Это очень обширная тема. Есть несколько наработок. Самое интересное, заставить комп собирать статистику: как пользователь расставляет корабли. На пример, компутер может прочухать, что пользользователь никогда не ставит ничего на A1… Можно заставить компутер подражать пользователю, когда он (компутер) расставляет свои корабли; скажем, придерживать тактики «все корабли — в кучу»… Но оказывается, что игра становится менее интересной. Она становится более предсказуемой. Я не смог придумать такую обучаемость, которая делала бы игру интересней. Но думать продолжаю.
картинки накрылись :(
НУ и нахрена было не выложить на какой-нить файлообменник (хотя бы?), эдак по 700 байт в секунду долго тянуть будем…
Какой канал в инет у стрима, это ж адсл, да еще не симметричный? Издевательство.
Какой канал в инет у стрима, это ж адсл, да еще не симметричный? Издевательство.
Я даже из принципа «поддержать» хотел скачать, но при паре байтов в секунду это невозможно =(
Ну потому, что сотни народу тянут одновременно. Извините, не ожидал такого резонанаса. Сделайте закладку — приходите вечером.
Мне кажется, что уже позжно перекладывать на файлообменник — хабраэффект спадает за несклько часов.
Мне кажется, что уже позжно перекладывать на файлообменник — хабраэффект спадает за несклько часов.
За то время, за которое скачивался ваш морской бой, можно было жизнь прожить.
Чем вам файлообменный хостинг не понравился?? disk.yandex.ru к примеру! выложите туда, кто уже скачал, пожалуйста!
>> Никак не мог ожидать такого качалова
До сих пор еле тянется… Попробуйте torrent-трекер временно поднять — разгрузите себе сеть.
До сих пор еле тянется… Попробуйте torrent-трекер временно поднять — разгрузите себе сеть.
Камрады, подскажите, у одного меня picamatic.com сдох?
а почему GAE не вдохновил?
Приведу только два самых больших недостатка.
Со стороны пользователя основной минус — тормоза. По крайней мере год назад оно очень тормозило на абсолютно ровных местах.
Со стороны разработчика — жутко неудобно, что нельзя выгрузить сорцы. Ну неужели нельзя было прикрутить SVN? Это же элементарная культура!
Когда они это доделают — буду пользоваться, а пока… не вдохновляет.
Со стороны пользователя основной минус — тормоза. По крайней мере год назад оно очень тормозило на абсолютно ровных местах.
Со стороны разработчика — жутко неудобно, что нельзя выгрузить сорцы. Ну неужели нельзя было прикрутить SVN? Это же элементарная культура!
Когда они это доделают — буду пользоваться, а пока… не вдохновляет.
Есть стратегия достаточно простая и эффективная
но конечно не 100% выигрыш,
(НЕ основанная на подглядывании и нейросетях)
человек готов ее изложить и оформить за инвайт на хабре.
опять же при условии что автор ее возьмет на вооружение.
но конечно не 100% выигрыш,
(НЕ основанная на подглядывании и нейросетях)
человек готов ее изложить и оформить за инвайт на хабре.
опять же при условии что автор ее возьмет на вооружение.
> при условии что автор ее возьмет на вооружение
а вы уверены, что я не использую именно её? ,-)
а вы уверены, что я не использую именно её? ,-)
по-моему принцип «утром деньги, вечером стулья» на хабре не катит.
какбэ для таких дел есть песочница же
какбэ для таких дел есть песочница же
имелось ввиду как раз деньги после стульев.
т.е. если понравилось и будет использоваться целиком или ее часть.
но нужно согласие и наличие свободного инвайта.
сейчас в программе используется не эта стратегия.
т.е. если понравилось и будет использоваться целиком или ее часть.
но нужно согласие и наличие свободного инвайта.
сейчас в программе используется не эта стратегия.
скорее нужен человек, который скажет, что
готов дать инвайт за интрересную стратегию игры,
если она ему понравится.
(или наберет сколько-то плюсов)
готов дать инвайт за интрересную стратегию игры,
если она ему понравится.
(или наберет сколько-то плюсов)
расстановка по краям поля?:)
на мой взгляд поле слишком мелкое, вот бы возможность растянуть окошко побольше а то целиться приходится в клеточки. В принципе комп играет нормально, но со стратегией расстановки по краям поля я его всегда выигрываю, т.к. в первой половине игры краям уделяется очень мало внимания.
Такие вещи делаются уже как сервисы. Вот это я написал году так 1999: www.rt.mipt.ru/~ivan/SeaBattle/
Аналогично, честный AI. Сорцы где-то есть если поискать. Написано на java, если бы делал сейчас то на javascript. Винды нет, так что чесно скажу вашу програму не запускал.
Аналогично, честный AI. Сорцы где-то есть если поискать. Написано на java, если бы делал сейчас то на javascript. Винды нет, так что чесно скажу вашу програму не запускал.
не хватает сообщения типа you win или you lose
и надо убрать возможность стрелять по территории около уже потопленных кораблей
Замечание принято
Если кто-нибудь сделает сборку под Мак, киньте ссылку =)
Упомянутое в upd3 некомпилирование по причине непроприсанной stdlib.h в arena.cpp вылезло и у меня, под виндой в qt creator'е «из коробки».
Windows XP SP3, Qt Creator 1.3.0, Qt 4.6.0, компилировал g++, собирал mingw32-make.
Что понравилось: Очень меня порадовало автозаполнение поля (с кучей вариантов). Комп играл примерно на одном уровне со мной.
Что не понравилось: нелогичные цвета для кораблей (красный — подбит, жёлтый — потоплен), ИМХО, логичней было бы наоборот, невозможность растянуть окошко.
Какие идеи у меня есть: «конструктор» с готовыми кораблями, чтобы не требовалась проверка перед началом игры, а просто можно было расставить нужное количество кораблей нужного типа с соблюдением границ и т.п. Ну или просто программа не давала бы нарисовать неверно корабли, изначально. Т.к. я постоянно норовил пририсовать себе лишний кораблик, а то и два, а программа не говорила мне, ЧЯДНТ :-)
Windows XP SP3, Qt Creator 1.3.0, Qt 4.6.0, компилировал g++, собирал mingw32-make.
Что понравилось: Очень меня порадовало автозаполнение поля (с кучей вариантов). Комп играл примерно на одном уровне со мной.
Что не понравилось: нелогичные цвета для кораблей (красный — подбит, жёлтый — потоплен), ИМХО, логичней было бы наоборот, невозможность растянуть окошко.
Какие идеи у меня есть: «конструктор» с готовыми кораблями, чтобы не требовалась проверка перед началом игры, а просто можно было расставить нужное количество кораблей нужного типа с соблюдением границ и т.п. Ну или просто программа не давала бы нарисовать неверно корабли, изначально. Т.к. я постоянно норовил пририсовать себе лишний кораблик, а то и два, а программа не говорила мне, ЧЯДНТ :-)
Спасибо за конструктивный коммент!
1) А какие цвета вы считаете логичными? Я пробовал некоторые схемы и сразу скажу: схема «потоплен-красный; ранен-жёлтый» не очень удобная, так как жёлтый меньше бросается в глаза, а именно его-то и надо добивать. карсный же маячит совершенно зазря. Схема «ранен-красный; потоплен-чёрный» лучше… но мрачновата :-) Вы можете поиграться с цветами в файле src/gui/flags_colors.cpp (первые же строчки, там RGB-цвета). Присылайте ваши варианты! А вообще, надо бы скины сделать :-) но это в следующей версии.
2) Про конструктор я не очень понял, но я пробовал делать, чтобы человека контролировало при каждом тыке при расстанове кораблей. И это оказалось не удобно. Прежде чем что-то поставить надо что-то стереть. А со стиранием может быть проблема. Скажем вы уже поставили все однотрудные, и хотите поставить двухтрубный… но для этого надо поставить первую трубу, а это однорубный, а их уже ставить нельзя :-) Или у вас стоят все корабли, но вы хотите убрать трёхтрубный, но стереть трубу не можете, пока у вас стоят все двухтрубные… В общем, полный затык :-)
1) А какие цвета вы считаете логичными? Я пробовал некоторые схемы и сразу скажу: схема «потоплен-красный; ранен-жёлтый» не очень удобная, так как жёлтый меньше бросается в глаза, а именно его-то и надо добивать. карсный же маячит совершенно зазря. Схема «ранен-красный; потоплен-чёрный» лучше… но мрачновата :-) Вы можете поиграться с цветами в файле src/gui/flags_colors.cpp (первые же строчки, там RGB-цвета). Присылайте ваши варианты! А вообще, надо бы скины сделать :-) но это в следующей версии.
2) Про конструктор я не очень понял, но я пробовал делать, чтобы человека контролировало при каждом тыке при расстанове кораблей. И это оказалось не удобно. Прежде чем что-то поставить надо что-то стереть. А со стиранием может быть проблема. Скажем вы уже поставили все однотрудные, и хотите поставить двухтрубный… но для этого надо поставить первую трубу, а это однорубный, а их уже ставить нельзя :-) Или у вас стоят все корабли, но вы хотите убрать трёхтрубный, но стереть трубу не можете, пока у вас стоят все двухтрубные… В общем, полный затык :-)
Многотрубные можно (нужно?) ставить не собирая их «по одной трубе», а сразу целиком. Тогда не случится описанных Вами проблем.
Тогда нужно делать какой-то механизм выбора корабля. Причём понятный механизм; ибо никто не станет перед игрой читать инструкцию. Кроме того, проблема остаётся: Если сразу корабли расставить не удалось, то их захочется подвигать. Если контролировать каждое дижение, то может оказаться, что чтобы поменять местами трёхтрубный и четырёхтрубный, их надо на время поставить поперёк существующих, а это — нельзя… В общем, я долго думал сам и экспериментировал на окружающих :-) Человеку проще всего просто нарисовать корабли, как он это делат на бумаге — по клеточкам. По крайней мере, я не смог найти ничего лучшего.
>Тогда нужно делать какой-то механизм выбора корабля.
Да. Что-нибудь в виде тулбара или меню.
>Если контролировать каждое дижение, то может оказаться, что чтобы поменять местами трёхтрубный и четырёхтрубный, их надо на время поставить поперёк существующих, а это — нельзя…
Можно один из них временно удалить, переставить второй, вернуть первый обратно. В принципе, могу на досуге попробовать набросать черновичок конструктора. Так, как его вижу.я :)
Да. Что-нибудь в виде тулбара или меню.
>Если контролировать каждое дижение, то может оказаться, что чтобы поменять местами трёхтрубный и четырёхтрубный, их надо на время поставить поперёк существующих, а это — нельзя…
Можно один из них временно удалить, переставить второй, вернуть первый обратно. В принципе, могу на досуге попробовать набросать черновичок конструктора. Так, как его вижу.я :)
> Да. Что-нибудь в виде тулбара или меню.
Вот и получается, что вместо очевидного тыка туда, где хочется поставить корабль, требуется совершенно неочевидный поход в меню :( Сейчас вся игра управляется тремя кнопками, а тут появится такой наворот… поймёт ли это пользователь, который хочет просто поиграть?
> Можно один из них временно удалить, переставить второй, вернуть первый обратно.
Причём вернуть придётся через тот поход в меню… И как удалить? Правой кнопкой (левая, наверно будет двигать)?
> В принципе, могу на досуге попробовать набросать черновичок конструктора.
Если у вас хватит куража и вы его набросаете — дайте знать; мне было бы интересно посмотреть.
(я спорю не потому, что хочу потроллить :-) а потому, что надеюсь найти лучшее решение)
Вот и получается, что вместо очевидного тыка туда, где хочется поставить корабль, требуется совершенно неочевидный поход в меню :( Сейчас вся игра управляется тремя кнопками, а тут появится такой наворот… поймёт ли это пользователь, который хочет просто поиграть?
> Можно один из них временно удалить, переставить второй, вернуть первый обратно.
Причём вернуть придётся через тот поход в меню… И как удалить? Правой кнопкой (левая, наверно будет двигать)?
> В принципе, могу на досуге попробовать набросать черновичок конструктора.
Если у вас хватит куража и вы его набросаете — дайте знать; мне было бы интересно посмотреть.
(я спорю не потому, что хочу потроллить :-) а потому, что надеюсь найти лучшее решение)
Вот тут набросал кой-чего: pastebin.com/m3fb1ec45
Чтобы посмотреть, код нужно сохранить в отдельный файл (например, editor.cpp) и использовать в качестве главного файла (вместо fairseabattle.cpp).
Сделано несколько хаков, но цель была показать основную идею, а не чётко вписаться в существующую концепцию :)
1. сделал свой собственный класс для главного поля (ConstructorField вместо ArenaWidget) — лень было разбираться, как у Вас хранятся поля :)
2. сделал публичным метод void ArenaCellWidget::set_color(QColor const &); чтобы быстро перерисовывать клетки в нужный цвет
Вроде бы всё.
Длина корабля выбирается кнопкой на тулбаре. Поворот — с клавы, кнопка «R» (в принципе можно кнопкам выбора кораблей добавить выпадающее меню с вертикальным и горизонтальным вариантом).
Что нужно доделать (если захотите воспользоваться концепцией):
1. нужно считать количество уже установленных кораблей и делать соответствующую кнопку неактивной, если количество достигло разрешённого (при удалении, соответственно, возвращать обратно)
2. более строго выбирать разрешённые поля — у меня сейчас можно ставить корабли вплотную :)
3. починить баг с поворотом корабля, когда курсор находится вблизи уже существующего корабля
4. много других багов… :)
Чтобы посмотреть, код нужно сохранить в отдельный файл (например, editor.cpp) и использовать в качестве главного файла (вместо fairseabattle.cpp).
Сделано несколько хаков, но цель была показать основную идею, а не чётко вписаться в существующую концепцию :)
1. сделал свой собственный класс для главного поля (ConstructorField вместо ArenaWidget) — лень было разбираться, как у Вас хранятся поля :)
2. сделал публичным метод void ArenaCellWidget::set_color(QColor const &); чтобы быстро перерисовывать клетки в нужный цвет
Вроде бы всё.
Длина корабля выбирается кнопкой на тулбаре. Поворот — с клавы, кнопка «R» (в принципе можно кнопкам выбора кораблей добавить выпадающее меню с вертикальным и горизонтальным вариантом).
Что нужно доделать (если захотите воспользоваться концепцией):
1. нужно считать количество уже установленных кораблей и делать соответствующую кнопку неактивной, если количество достигло разрешённого (при удалении, соответственно, возвращать обратно)
2. более строго выбирать разрешённые поля — у меня сейчас можно ставить корабли вплотную :)
3. починить баг с поворотом корабля, когда курсор находится вблизи уже существующего корабля
4. много других багов… :)
Спасибо!
Первые два вопроса :-)
1) Я всё же не очень понял, как его прикрутить и что такое main.moc (последняя строка)
2) Судя по описанию, идея стОящая. Я пока всё же хочу остановиться, стабилизировать то, что есть, а потом двинуться дальше. Но вашу идею я бы хотел поместить в SVN в devel. Себе и другим разработчикам на заметку. Вы не возражаете? Как вас представить в README? Или напишите какой-нибудь copyright в сорцах что-ли, а то будет выглядеть, не красиво, как буд-то я умалчиваю имена контрибьюторов :-)
Первые два вопроса :-)
1) Я всё же не очень понял, как его прикрутить и что такое main.moc (последняя строка)
2) Судя по описанию, идея стОящая. Я пока всё же хочу остановиться, стабилизировать то, что есть, а потом двинуться дальше. Но вашу идею я бы хотел поместить в SVN в devel. Себе и другим разработчикам на заметку. Вы не возражаете? Как вас представить в README? Или напишите какой-нибудь copyright в сорцах что-ли, а то будет выглядеть, не красиво, как буд-то я умалчиваю имена контрибьюторов :-)
Почти понял вашу задумку. Вот как я вижу добавку вашего прототипа в devel-дерево
user.rol.ru/~alvm/editor-10-01-12.tgz
там я уже сделал хакнутый публичный set_color, но всё равно пока не собирается. Глянте… я на main.moc грешу :-)
user.rol.ru/~alvm/editor-10-01-12.tgz
там я уже сделал хакнутый публичный set_color, но всё равно пока не собирается. Глянте… я на main.moc грешу :-)
Это http://user.rol.ru/~alvm/editor-10-01-12-1.tgz уже собирается, и немного работает, но сигфолтится при нажатии на R.
Сейчас гляну и попробую сделать в виде патча относительно текущего свн, чтобы тарболами не заморачиваться.
Сделал: pastebin.com/m3a284901 (дифф относительно ревизии 4 из svn)
1. Сохраняем в основной каталог под именем, скажем, editor.patch
2. Делаем patch -p0 < editor.patch
3. qmake && make && ./fairseabattle
Запуск редактора сделан отдельной кнопкой на тулбаре, основной код не затронут. «Хакнутый» класс вынесен в отдельный namespace, так что основной код, опять же, не потревожен.
1. Сохраняем в основной каталог под именем, скажем, editor.patch
2. Делаем patch -p0 < editor.patch
3. qmake && make && ./fairseabattle
Запуск редактора сделан отдельной кнопкой на тулбаре, основной код не затронут. «Хакнутый» класс вынесен в отдельный namespace, так что основной код, опять же, не потревожен.
Гаццкий pastebin… префикс "@@" в строке он, видите ли, интерпретирует как собственную команду, а то, что это служебные символы в дифф-ах, ему почему-то неведомо :)
Не копируйте текст со страницы, жмите лучше «download» — скачается нормально, без пропущенных символов.
Не копируйте текст со страницы, жмите лучше «download» — скачается нормально, без пропущенных символов.
Что-то «изкоробки» не заработало
src/editor/arenawidget_hacked.cpp:320: error: redefinition of 'Hacked::ArenaCellWidget::ArenaCellWidget(QWidget*, Qt::WindowFlags)'
буду разбираться. В любом случае спасибо!
src/editor/arenawidget_hacked.cpp:320: error: redefinition of 'Hacked::ArenaCellWidget::ArenaCellWidget(QWidget*, Qt::WindowFlags)'
буду разбираться. В любом случае спасибо!
Не-не-не! отставить! Всё работает! :-)
Положу этот патч в исходники с инструкцией. Пусть люди посмотрят, кому интересно. Возможно что-то посоветуют, или доделают, или просто мне на память будет потому, что идея хороша. Мне кажется, что так расставлять проще. Надо оттестировать на людях :-)
Положу этот патч в исходники с инструкцией. Пусть люди посмотрят, кому интересно. Возможно что-то посоветуют, или доделают, или просто мне на память будет потому, что идея хороша. Мне кажется, что так расставлять проще. Надо оттестировать на людях :-)
насчет нелогичности, было бы здорово сделать чтобы настройки (вариант игры, кто первый ходит, скорость) сохранялись при закрытии
На первый взгляд могу сказать следующее: слишком много цветов — рассеивается внимание. Цветов должно быть три — красный(подбитые) синий(отсутствие) и серый(неизвестная зона).
Разница в цвете между выстрелом, и просто окружением корабля — не несёт никакой информационной нагрузки — удобнее было бы просто синим. Плюс было бы здорово, если бы убитый корабль — состоял из белых квадратиков, зачёркнутых красным крестом (как в детстве) — это касается как своих кораблей так и врага.
А так если бы не радуга — отличная вещь!
Разница в цвете между выстрелом, и просто окружением корабля — не несёт никакой информационной нагрузки — удобнее было бы просто синим. Плюс было бы здорово, если бы убитый корабль — состоял из белых квадратиков, зачёркнутых красным крестом (как в детстве) — это касается как своих кораблей так и врага.
А так если бы не радуга — отличная вещь!
Жаль, что не на русском языке.
А Вам не известны программы, позволяющие играть двум компьютерным противникам? Было бы интересно сравнить разные стратегии…
Чуть подшаманил, что бы с Qt5 собиралось и ворнингов не было: https://github.com/h4tr3d/fairseabattle
Sign up to leave a comment.
Морской бой с искусственным интеллектом — по-честному