Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Кстати, что лучше - сгруппировать в класс ship и сделать коллекцию кораблей или везде, где нужен корабль, доступаться по ID из enum'а? Почему и в каких случаях?
Графония пока нет, зато его можно будет легко прикрутить, на это и был расчёт. Расширяемость )))
А ещё мне показалось, что проще оперировать кораблями как объектами.
Вот захочется тебе удалить корабль, который ты поставил... Придётся проверять какая у него ориентация, потом в обе стороны шагать по полю и стирать клеточки (я обычно всегда проёбываюсь и шагаю слишком далеко)... А так выкидываешь инстанс из вектора и нормально.
На самом деле, он тут даже в тему -- надо посчитать хеш от поля перед началом игры и передать противнику. Тогда переставлять корабли посреди игры уже не выйдет.
У меня там, кстати, ещё был impossible mode, в котором комп переставляет "единички" куда-нибудь в другое место если игрок в них попадает. В итоге надо всё поле полностью расстрелять чтобы выиграть. И за это время комп обычно успевал у игрока всё потопить.
Была игрушка для DOS (что-то типа битвы за Чёрное море), в которой компьютер подглядывал за расположением твоих кораблей. Если он задевает твой многоклеточный корабль, то следующими ходами его добивает.
Прям всегда с первого раза, никогда не промахиваясь. Если попал в одну из клеток корабля, следующими выстрелами точно топит остальные клетки, не трогая незанятые. Т. е. после ранения никогда не было перехода хода.
Я когда-то видел эксперимент, где людям предлагали оценить количество питушни в каком-то ящике.
В итоге получилось так, что половина назвала число меньшее, чем там было, а половина – большее, а среднее арифметическое было очень близко к фактическому количеству питушни, так что вполне возможно )))
Ну да, если ты попросишь юзера придумать пароль или ещё какую-то случайную последовательность, то символы, скорее всего, не будут повторяться т.к. это "выглядит не случайно".
Возможно и тут человек будет раскидывать единички подальше друг от друга "чтобы случайно не попали" и т.п.
Кстати, а ещё в фильмах про отмывание денег, где придумывают цифр для отчетности «из воздуха», постоянно фигурируют фразы типа: «смотрите, видите? Вот здесь каждое третье число заканчивается на начётную цифру!»
Думаю, если ИИ будет подстраиваться под каждого игрока, то ИИ будет побеждать.
Мой морской бой на бейсике решал проблему троллинга пользователя иначе: все крупные корабли он группировал в по краям, так что их было относительно легко убить, но при этом карта почти не открывалась. А на оставшемся широком морском просторе он раскидывал четыре единички, которые можно было убить, только методично прокликивая все клетки. Какая честность )))
Я, когда это всё затевал, подумал: «так, я делаю какую-то дичь, крестов толком не знаю, пусть хотя бы будет рахитектура и ООП, а то стану как кое-кто».
В итоге у меня получился класс GameEngine (синглтон), который общается с гуём. Сам GameEngine использует NetworkingEngine (тоже синглтон), где я сру каждые 500 миллисекунд данными о курсоре оппонента и статусе хода (кликнули ли по полю).
Ещё есть два wxBoard, которые берут указатели на классы Board и отрисовывают доски с кораблями и отметками (попал/ не попал): одна доска для своей питушни, а другая – для чужой.
Всё это я пытался обернуть в RAII, но, т.к. это была лаба в конце семестра, по достижении более или менее нормального результата (в визуальном плане) я всё это забросил.
Неет, тут я дал реверс-инженерам и владельцам исходного кода возможность всегда выигрывать.
Клиент ждёт, пока не придёт true и два индекса, по которым стреляет противник, а затем отправляет success_code: промахнулся, ранил или убил (если убил, то начинается передача данных корабля другому игроку, чтобы он его себе нарисовал).
Не беспокойтесь. Попытайтесь следовать нашим советам и ссылкам. Если компьютер является частью локальной сети, отсоедините сетевой кабель, чтобы избежать дальнейшего распространения уёбка.
MAKAKA # 0
bootcamp_dropout # 0 ⇈
1024-- # 0
bormand # 0 ⇈
oaoaoammm # 0 ⇈
А ещё мне показалось, что проще оперировать кораблями как объектами.
Вот захочется тебе удалить корабль, который ты поставил... Придётся проверять какая у него ориентация, потом в обе стороны шагать по полю и стирать клеточки (я обычно всегда проёбываюсь и шагаю слишком далеко)... А так выкидываешь инстанс из вектора и нормально.
bormand # 0 ⇈
Lure Of Chaos # 0 ⇈
bormand # 0 ⇈
Но проверка расставленных юзером кораблей станет намного сложнее, да. Придётся форму распознавать а не просто полоски.
Lure Of Chaos # 0 ⇈
понадобится нейронка
bormand # 0 ⇈
И блокчейн!
На самом деле, он тут даже в тему -- надо посчитать хеш от поля перед началом игры и передать противнику. Тогда переставлять корабли посреди игры уже не выйдет.
Lure Of Chaos # 0 ⇈
bormand # 0 ⇈
Lure Of Chaos # 0 ⇈
runnonomaM # 0 ⇈
Lure Of Chaos # 0 ⇈
bormand # 0 ⇈
Или он прям всегда с первого раза добивал, никогда не промахиваясь?
Fainal_kantdaun # 0 ⇈
bormand # 0 ⇈
Fainal_kantdaun # 0 ⇈
bormand # 0 ⇈
Fainal_kantdaun # 0 ⇈
Мне после той игры было непривычно играть в другие реализации морского боя. Я удивлялся возросшей вероятности победы.
bormand # 0 ⇈
Какой анскилл )))
Можно же псевдорандомом по диагоналям чтобы по-быстрому найти длинные корабли и отбросить как можно больше пустых клеток.
oaoaoammm # 0 ⇈
bormand # 0 ⇈
oaoaoammm # 0 ⇈
В итоге получилось так, что половина назвала число меньшее, чем там было, а половина – большее, а среднее арифметическое было очень близко к фактическому количеству питушни, так что вполне возможно )))
bormand # 0 ⇈
Возможно и тут человек будет раскидывать единички подальше друг от друга "чтобы случайно не попали" и т.п.
oaoaoammm # 0 ⇈
Думаю, если ИИ будет подстраиваться под каждого игрока, то ИИ будет побеждать.
guest3 # 0 ⇈
CHayT # 0 ⇈
bormand # 0 ⇈
3.14159265 # 0 ⇈
> на оставшемся широком морском просторе он раскидывал четыре единички
Так это одна из лучших стратегий игры.
MAKAKA # 0 ⇈
Это на крестах.
На джавке или C# я бы взял enum, на котлине sealed classes
bormand # 0 ⇈
Я тогда писал в стиле ротоёба олимпиадников из вк.
oaoaoammm # 0 ⇈
В итоге у меня получился класс GameEngine (синглтон), который общается с гуём. Сам GameEngine использует NetworkingEngine (тоже синглтон), где я сру каждые 500 миллисекунд данными о курсоре оппонента и статусе хода (кликнули ли по полю).
Ещё есть два wxBoard, которые берут указатели на классы Board и отрисовывают доски с кораблями и отметками (попал/ не попал): одна доска для своей питушни, а другая – для чужой.
Всё это я пытался обернуть в RAII, но, т.к. это была лаба в конце семестра, по достижении более или менее нормального результата (в визуальном плане) я всё это забросил.
bormand # 0 ⇈
Какой киберспорт )))
oaoaoammm # 0 ⇈
bormand # 0 ⇈
oaoaoammm # 0 ⇈
Клиент ждёт, пока не придёт true и два индекса, по которым стреляет противник, а затем отправляет success_code: промахнулся, ранил или убил (если убил, то начинается передача данных корабля другому игроку, чтобы он его себе нарисовал).
Вот такой вот багор )))
MAKAKA # 0 ⇈
"тогда" у меня тоже noname01.pas был
guest3 # 0 ⇈
Не беспокойтесь. Попытайтесь следовать нашим советам и ссылкам. Если компьютер является частью локальной сети, отсоедините сетевой кабель, чтобы избежать дальнейшего распространения уёбка.
guest3 # 0 ⇈
CBuHOKYP # 0 ⇈
3.14159265 # 0 ⇈
Сишка. Массив клеточек. Енум.
KISS во все поля.
guest3 # 0 ⇈
Касперски интернет секурити сетуп?