HPC.ru lite - Все форумы
Форум: [OFF] Оффтопики не про КПК
Тема: Выбор материнской платы или апдейт компьютера
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24
[Ответить]
Новый папа [16.11.2009 21:53] :
Научить комп играть в морской бой - на самом деле не шибко умная задача. Не в обиду будет сказано. Я вообще всегда по одной схеме играю - сеточкой обстреливаю
Так же и комп. бы научил.
Вот в шахматы научить - наука.
Новый папа [16.11.2009 22:08] :
Это я сделал рекурсивно. Строк кода... надо поглядеть
Но не 1000 думаю.
Там рекурсией все достаточно элементарно делается. С учетом того, что корабли у меня любой формы - с дырами посередине могут быть 
Хотя конечно я посидел над решением какое-то время, думал, рисовал на бумажке, а не тупо сел и накодил. Мозги для этого все таки нужны 
Новый папа [16.11.2009 22:17] :
Поглядел код. Не знаю называть ли кол-во строк процедуры, определяющей поражение корабля или нет
Ладно назову - 141 строка.
Могу поделиться - сделаешь у себя морской бой с кораблями произвольной конфигурации, например вот:
[К сообщению приложены файлы: 2009-11-16_221451.jpg (29 кб)]
Новый папа [16.11.2009 22:34] :
Из 141 строки на каменты приходится 9 строк ))
Скупые да. Но там и так все понятно.
4 секции кода - каждая отвечает за обход одного направления (вверх, вниз, влево, вправо).
Корабль изначально считается подбитым (мы же в него попали), т.е. считается, что он однопалубный.
Начинаем обход с палубы, в которую попали.
Идем в одну (любую) сторону. Допустим влево.
Если там живая палуба - сразу выход - корабль еще цел.
Если там подбитая палуба - вызываем алгоритм определения еще раз, но передаем в процедуру текущее поле (на одно влево, так как я пошел влево вначале).
Если там вода, то переходим на другое направление.
Каждое обойденное поле заносим в массив, чтобы не проверять его второй раз и при следующих обходах его проскакиваем.
Вот и все. Теперь начиная с любой палубы мы обойдем весь корабль пока:
- или найдем одно целое поле
- или обнаружим вокруг только воду
Новый папа [16.11.2009 22:47] :
Посмотрел сейчас свой код - весь морской бой - 523 строки.
Я ваш ПХП не знаю. Какие-то аццкие циклы ни разу не читабельны
)
А с выстрелом не понял. Что за куча входных параметров. Достаточно ведь только x,y передавать куда стрельнул. Зачем другие?
Новый папа [16.11.2009 22:49] :
Нечто писал(а):
только без всяких массивов... подумаешь, еще максимум три раза пробегусь по трем полям...
У меня корабли произвольной формы. Бесконечно будешь бегать, если на запомнишь на каких полях уже был. Условие выхода какое? Либо обошли все поля и не нашли живого или нашли живое. Без запоминания никак.
Новый папа [16.11.2009 23:38] :
Ну, тебе виднее что там у тебя за ситуации.
Для Сокобана сделай описание с первого же листа игры - там предыстория как чувак попал в лабиринт. Длинновато конечно, но это введение... вот такое вот оно.
Для тетриса просто напиши, что тетрис в екселе.
Для линий - линии в екселе.
И не забудь на странице сделать надпись, как играть - т.е. что надо включить макросы и выставить галочки на странице (на которой написано выше).
И что рекомендуется оффис 2003, а на других игра не гарантируется.
Новый папа [16.11.2009 23:55] :
Не проверяй ты там, в ОО бейсика нет 
Новый папа [17.11.2009 18:20] :
Нечто, что то твой сервер лежит походу. Набежали поклонники игр в екселе? 
Гони откат 
Polosatiy_io [17.11.2009 18:29] :
Новый папа писал(а):
Набежали поклонники игр в екселе?
Гони откат
Какой откат? Ты двумя екселевскими файликами уронил ФАЙЛООБМЕННИК!
Да тебе памятник надкусаный поставить надо! 
[Ответить]
[< Назад] [Вперед >]