Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Помогите пожалуйста (https://javascript.ru/forum/project/42862-pomogite-pozhalujjsta.html)

Cerfuck 12.11.2013 13:41

Помогите пожалуйста
 
Пишу морской бой на js. Я новичок. В общем не могу придумать алгоритмы. Корабли записаны в двумерном массиве. 0 - пустая клетка, в которой нет корабля и в нее не попадали. 1 - корабль. -1 - раненый корабль, -2 - убитый корабль, 2 - попадание мимо. Правильно ли я вообще мыслю? Я не могу сообразить как:
1. При обстреле понят уже убит корабль или нет???
2. Какие проверки сделать при рандомной расстановке??? Вообще как рандомную расстановку сделать.

ksa 12.11.2013 14:37

Цитата:

Сообщение от Cerfuck
Правильно ли я вообще мыслю?

Нет.
При выстреле нужно знать "ранил" или "подбил". Твоя "привязка" к игровому полю не верна.

Вообще "Морской бой" это программка т.с. на тест именно "организации данных", а не умении составлять алгоритмы...

Цитата:

Сообщение от Cerfuck
Вообще как рандомную расстановку сделать.

ППЦ! :blink:
Значит рано тебе еще такие программки писать. Начни с чего-то более простого...
Например "Угадай число". ;)

Cerfuck 12.11.2013 14:47

Цитата:

Сообщение от ksa (Сообщение 280598)
Нет.
При выстреле нужно знать "ранил" или "подбил". Твоя "привязка" к игровому полю не верна.

Вообще "Морской бой" это программка т.с. на тест именно "организации данных", а не умении составлять алгоритмы...

ППЦ! :blink:
Значит рано тебе еще такие программки писать. Начни с чего-то более простого...
Например "Угадай число". ;)

Подскажи пожалуйста тогда, как правильно организовать данные? А по поводу рандома я имею представление, пару лет назад писал пятнашки на delphi, но именно в данной ситуации не могу придумать проверки для правильной расстановки и наверное опять же из-за не правильной организации данных.

ksa 12.11.2013 14:50

Цитата:

Сообщение от Cerfuck
Подскажи пожалуйста тогда, как правильно организовать данные?

Тогда в чем смысл именно твоего участия? :D

Цитата:

Сообщение от Cerfuck
но именно в данной ситуации не могу придумать проверки для правильной расстановки

Вот я и пишу
Цитата:

Сообщение от ksa
рано тебе еще такие программки писать


alexan0308 12.11.2013 15:14

Цитата:

Сообщение от Cerfuck (Сообщение 280584)
Вообще как рандомную расстановку сделать.

Цитата:

Сообщение от ksa (Сообщение 280598)
Значит рано тебе еще такие программки писать. Начни с чего-то более простого...

Тут на самом дела не так просто. Нужно же чтобы разные корабли не задевали друг друга. Нужно затылок почесать.

Но все решаемо, люди сто раз делали, даже на этом форуме, просто поищи. А вообще, как я понимаю, этот раздел для готовых скриптов.

ksa 12.11.2013 15:25

Цитата:

Сообщение от alexan0308
Тут на самом дела не так просто.

Так и пишу - начни с чего по-проще... :D Если эта генерация сложна.

Цитата:

Сообщение от alexan0308
А вообще, как я понимаю, этот раздел для готовых скриптов.

Именно так. :yes:

alexan0308 12.11.2013 16:08

Цитата:

Сообщение от alexan0308 (Сообщение 280614)
Но все решаемо

Мне сначала показалось сложным, потому что кажется, что нужно крутить эти корабли. Но ничто не мешает считать корабли вида
***
и

*
*
*
разными кораблями и рандомно выбирать тип.
Создай функции типа add_korably_3_gorizontal(x,y) и add_korably_3_vertikal(x,y), где x, y крайняя точка корабля. Эта точка берется рандомно до тех пор, пока все клетки корабля, и примыкающие к ним, не лягут на свободные клетки (и не вылазиют за поле).

При этом сразу заполняешь массив занятыми клетками:

Цитата:

Сообщение от Cerfuck (Сообщение 280584)
Корабли записаны в двумерном массиве. 0 - пустая клетка, в которой нет корабля и в нее не попадали. 1 - корабль. -1 - раненый корабль, -2 - убитый корабль, 2 - попадание мимо. Правильно ли я вообще мыслю?

Удобнее наверно сделать ТРИ таких массива. В одном хранить свободные клетки, во втором корабли, а в третьем выстрелы.

ksa 12.11.2013 16:26

Цитата:

Сообщение от alexan0308
Создай функции типа add_korably_3_gorizontal(x,y) и add_korably_3_vertikal(x,y), где x, y крайняя точка.

Пипец!

alexan0308 12.11.2013 16:28

Цитата:

Сообщение от ksa (Сообщение 280648)
Пипец!

Ну дык же я нубу новичку объяснял. Чтобы понятнее было.

Cerfuck 12.11.2013 16:34

Цитата:

Сообщение от alexan0308 (Сообщение 280649)
Ну дык же я нубу новичку объяснял. Чтобы понятнее было.

Ну я же не настолько нуб. Работаю верстальщиком. Опыт есть.


Часовой пояс GMT +3, время: 03:36.