Pull to refresh

Comments 85

Не жалко, но я такого не ожидал :-)
~$ uptime
10:22AM up 35 days, 18:21, 11 users, load averages: 1.02, 0.89, 0.80
На текущий момент одновременно идёт более ста скачиваний! 8-O
Я буду раздавать дистрибутивы ещё недели две, а то и месяц. Кто не смог скачать сейчас — возращайтесь завта, думаю, основной наплыв скачиваний спадёт. Сейчас я остановил раздачу торентов. Весь мой скромный канал отдан хабражителям :-)
это Хабра-эффект, можно были подготовиться заранее :)
Я думал, что в основном народ из SVN будет брать.
Qt-проекту место на Qt-Apps. Залейте туда хотябы исходники (со сборкой не получится, т.к. там ограничение в 750Кб) — посмотрим, как они справятся с хаброэффектом.
Заодно люди, занимающиеся непосредственно Qt, может что-нибудь дельное подскажут.
Qt-Apps — это мой следующий шаг :-) Я там уже хостью кое-что. Пока я хотел показать отечественным специалистам pre-версию. И, как видите, народ обнаружил неточности (см. upd3)
Нуу… 10 из 10 — это вам везёт :-) Но сейчас человек выигрывает действительно чаще 50%. Дело в том, что компутер смотрит на один ход вперёд. Он старается сделать наиболее разумно текущий выстрел. Он не старается простроить стратегию игры. Реализация стратегии — следующий шаг.
UFO just landed and posted this here
лучшая стратегия в морском бое зависит от набора краблей :-) У меня там, видели, есть один отладочный режим с десятитрубным кораблями :-)
Даёшь сетевую! Одному и в правду скучновато. Я после 5ти игр сдался.
играет честно (то есть, при выдумывании хода, компьютер не подглядывает в ваше поле)

а что в других реализациях он подглядывает? никогда бы не подумал…
За все реализации не скажу, но я видел две — где явно подглядывал.
Не думали «обучить» программу? заставить компьютер поиграть с самим собой, или с пользователями, и выудить из результатов несколько тактик, приводящих к успеху?
Ну и грабить корованы тоже неплохая идея ))
Это очень обширная тема. Есть несколько наработок. Самое интересное, заставить комп собирать статистику: как пользователь расставляет корабли. На пример, компутер может прочухать, что пользользователь никогда не ставит ничего на A1… Можно заставить компутер подражать пользователю, когда он (компутер) расставляет свои корабли; скажем, придерживать тактики «все корабли — в кучу»… Но оказывается, что игра становится менее интересной. Она становится более предсказуемой. Я не смог придумать такую обучаемость, которая делала бы игру интересней. Но думать продолжаю.
Второй пост про картинки. Про какие картинки все говорят? Картинки к статье? — тормозит пикаматика — с ней быват.
НУ и нахрена было не выложить на какой-нить файлообменник (хотя бы?), эдак по 700 байт в секунду долго тянуть будем…
Какой канал в инет у стрима, это ж адсл, да еще не симметричный? Издевательство.
Тот, кто поставил минус, считает, что качать 5 метров в течение 13 часов — это нормально?
Я даже из принципа «поддержать» хотел скачать, но при паре байтов в секунду это невозможно =(
Ну потому, что сотни народу тянут одновременно. Извините, не ожидал такого резонанаса. Сделайте закладку — приходите вечером.
Мне кажется, что уже позжно перекладывать на файлообменник — хабраэффект спадает за несклько часов.
Сделайте торрент, что ли.
Пусть скачивающие друг другу помогают, а не Вам мешают.
UFO just landed and posted this here
За то время, за которое скачивался ваш морской бой, можно было жизнь прожить.
Сейчас скачивают 179 человек :-) Хорошо ещё я не apache использую, a lighttpd; а то бы тормозил не только канал, а ещё и ОС, путаясь между сотнями апачевских детёнышей :-)
UFO just landed and posted this here
Чем вам файлообменный хостинг не понравился?? disk.yandex.ru к примеру! выложите туда, кто уже скачал, пожалуйста!
>> Никак не мог ожидать такого качалова

До сих пор еле тянется… Попробуйте torrent-трекер временно поднять — разгрузите себе сеть.
Я сейчас выложу на яндекс-диск. Вот только сам скачаю :-))))
Ну нихрена себе! Яндекс диск говорит «Выберите для загрузки файлы меньшего размера.» :-(
у меня 86 кб скачало за 10 минут :)
Кидайте уже куда-нибудь!
Камрады, подскажите, у одного меня picamatic.com сдох?
Мы ему легкий ддос устроили )))
Приведу только два самых больших недостатка.
Со стороны пользователя основной минус — тормоза. По крайней мере год назад оно очень тормозило на абсолютно ровных местах.
Со стороны разработчика — жутко неудобно, что нельзя выгрузить сорцы. Ну неужели нельзя было прикрутить SVN? Это же элементарная культура!
Когда они это доделают — буду пользоваться, а пока… не вдохновляет.
Есть стратегия достаточно простая и эффективная
но конечно не 100% выигрыш,
(НЕ основанная на подглядывании и нейросетях)
человек готов ее изложить и оформить за инвайт на хабре.
опять же при условии что автор ее возьмет на вооружение.
> при условии что автор ее возьмет на вооружение
а вы уверены, что я не использую именно её? ,-)
по-моему принцип «утром деньги, вечером стулья» на хабре не катит.
какбэ для таких дел есть песочница же
имелось ввиду как раз деньги после стульев.
т.е. если понравилось и будет использоваться целиком или ее часть.
но нужно согласие и наличие свободного инвайта.

сейчас в программе используется не эта стратегия.
скорее нужен человек, который скажет, что
готов дать инвайт за интрересную стратегию игры,
если она ему понравится.
(или наберет сколько-то плюсов)
Пишите в песочницу и давайте ссылку сюда. Я её могу вынести в текст статьи, чтобы она заметней была.
Ок. Подготовлю и напишу.
А зачем вам инвайт? Вы же уже пользователь хабра?
расстановка по краям поля?:)
UFO just landed and posted this here
на мой взгляд поле слишком мелкое, вот бы возможность растянуть окошко побольше а то целиться приходится в клеточки. В принципе комп играет нормально, но со стратегией расстановки по краям поля я его всегда выигрываю, т.к. в первой половине игры краям уделяется очень мало внимания.
Такие вещи делаются уже как сервисы. Вот это я написал году так 1999: www.rt.mipt.ru/~ivan/SeaBattle/

Аналогично, честный AI. Сорцы где-то есть если поискать. Написано на java, если бы делал сейчас то на javascript. Винды нет, так что чесно скажу вашу програму не запускал.
Винды и не надо, под линухом спокойно идет
и надо убрать возможность стрелять по территории около уже потопленных кораблей
зачем? ,-) если человек дурной, то пускай стреляет :-)
ну добивать уже потопленные корабли и стрелять в туже точку нельзя, а около — можно? просто странно немного)
Логика простая. Куда стрелял — стрелять нельзя. Куда не стрелял — стреляй пожалуйста.
Если кто-нибудь сделает сборку под Мак, киньте ссылку =)
Упомянутое в upd3 некомпилирование по причине непроприсанной stdlib.h в arena.cpp вылезло и у меня, под виндой в qt creator'е «из коробки».
Windows XP SP3, Qt Creator 1.3.0, Qt 4.6.0, компилировал g++, собирал mingw32-make.

Что понравилось: Очень меня порадовало автозаполнение поля (с кучей вариантов). Комп играл примерно на одном уровне со мной.
Что не понравилось: нелогичные цвета для кораблей (красный — подбит, жёлтый — потоплен), ИМХО, логичней было бы наоборот, невозможность растянуть окошко.
Какие идеи у меня есть: «конструктор» с готовыми кораблями, чтобы не требовалась проверка перед началом игры, а просто можно было расставить нужное количество кораблей нужного типа с соблюдением границ и т.п. Ну или просто программа не давала бы нарисовать неверно корабли, изначально. Т.к. я постоянно норовил пририсовать себе лишний кораблик, а то и два, а программа не говорила мне, ЧЯДНТ :-)
Спасибо за конструктивный коммент!

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. много других багов… :)
Спасибо!

Первые два вопроса :-)

1) Я всё же не очень понял, как его прикрутить и что такое main.moc (последняя строка)

2) Судя по описанию, идея стОящая. Я пока всё же хочу остановиться, стабилизировать то, что есть, а потом двинуться дальше. Но вашу идею я бы хотел поместить в SVN в devel. Себе и другим разработчикам на заметку. Вы не возражаете? Как вас представить в README? Или напишите какой-нибудь copyright в сорцах что-ли, а то будет выглядеть, не красиво, как буд-то я умалчиваю имена контрибьюторов :-)
Почти понял вашу задумку. Вот как я вижу добавку вашего прототипа в devel-дерево
user.rol.ru/~alvm/editor-10-01-12.tgz
там я уже сделал хакнутый публичный set_color, но всё равно пока не собирается. Глянте… я на main.moc грешу :-)
Сейчас гляну и попробую сделать в виде патча относительно текущего свн, чтобы тарболами не заморачиваться.
Сделал: pastebin.com/m3a284901 (дифф относительно ревизии 4 из svn)

1. Сохраняем в основной каталог под именем, скажем, editor.patch
2. Делаем patch -p0 < editor.patch
3. qmake && make && ./fairseabattle

Запуск редактора сделан отдельной кнопкой на тулбаре, основной код не затронут. «Хакнутый» класс вынесен в отдельный namespace, так что основной код, опять же, не потревожен.
Гаццкий pastebin… префикс "@@" в строке он, видите ли, интерпретирует как собственную команду, а то, что это служебные символы в дифф-ах, ему почему-то неведомо :)
Не копируйте текст со страницы, жмите лучше «download» — скачается нормально, без пропущенных символов.
Что-то «изкоробки» не заработало

src/editor/arenawidget_hacked.cpp:320: error: redefinition of 'Hacked::ArenaCellWidget::ArenaCellWidget(QWidget*, Qt::WindowFlags)'

буду разбираться. В любом случае спасибо!
Не-не-не! отставить! Всё работает! :-)
Положу этот патч в исходники с инструкцией. Пусть люди посмотрят, кому интересно. Возможно что-то посоветуют, или доделают, или просто мне на память будет потому, что идея хороша. Мне кажется, что так расставлять проще. Надо оттестировать на людях :-)
насчет нелогичности, было бы здорово сделать чтобы настройки (вариант игры, кто первый ходит, скорость) сохранялись при закрытии
Это одна из вещей, запланированных на ближайшее время. Там в коде даже комментарии есть, в каком месте надо сохранять, а в каком восстанавливать конфигурацию.
На первый взгляд могу сказать следующее: слишком много цветов — рассеивается внимание. Цветов должно быть три — красный(подбитые) синий(отсутствие) и серый(неизвестная зона).
Разница в цвете между выстрелом, и просто окружением корабля — не несёт никакой информационной нагрузки — удобнее было бы просто синим. Плюс было бы здорово, если бы убитый корабль — состоял из белых квадратиков, зачёркнутых красным крестом (как в детстве) — это касается как своих кораблей так и врага.

А так если бы не радуга — отличная вещь!
Спасибо! Уже несколько человек посетовало на радугу.
Можете взять новую версию из SVN там почти на 100% реализована именно ваша идея, хотя с такой чёткостью её никто и не высказывал, но, видимо, имели ввиду именно это :-)
А Вам не известны программы, позволяющие играть двум компьютерным противникам? Было бы интересно сравнить разные стратегии…
Sign up to leave a comment.

Articles