Цитата:
|
Когда я подумал об этом, мне пришло такое решение. Можно при создании корабля каждый обозначать своей цифрой ))) И после каждого выстрела пробегать весь массив и и искать клеточки с такой ЖЕ цифрой )) Ну и при попадании менять циферку.
Итак, три массива. Первый массив, например, корабли
0000001100
2220000003
0000000000 и т.д.
Второй - свободные клетки (цифра 0) , 1 - занято. Этот массив нужен только на этапе рандомного заполнения кораблями:
1111011111
1111011111
1111000011
Третий массив- выстрелы. В начале он полностью дублирует ПЕРВЫЙ массив. При попадании в пустое поле меняешь циферку на -1 ( и соотв. рисунок ) При попадании в корабль меняешь циферку на -2 ( соотв. рисунок ). Об убийстве корабля позже. Ты сначала это сделай ))
Ответить с цитированием
|
А как ты будешь проверять куда выстрелил игрок попал/нет?
Я бы наверное сделал так: (написал первое что пришло в голову, не ругаца)
var map = {
"a": {
1: 0,
2: 0,
3: 2,
4: 0
...
},
"b": {
1: 0,
2: 0,
3: 2,
4: 0
...
}
...
}
Вот решил игрок стрельнуть по координатам a3, сразу смотрим попал или нет? если нет то отмечаем "мимо",
если да то узнаем сколько палуб у корабля по значению 1 == 1 палубному, 2 == 2х палубному и тд.
если однапалубный то просто отмечаем что убили, с дргуими чуть сложнее.
Например как в данной карте, при выстреле в a3 (или b3) мы проверяем что попали, определили 2х палубный корабль и тупо проверяем значения вокруг. то есть сначала по тому же самому обьекту сверяем a3 - 1 с a3 и a3 + 1 с а3 если не нашли то проверяем в соседних обьектах в данном случае b3, так как "a" - граница. Когда находим элемент просто присваиваем ему значение на 1 меньше (чтобы потом он не проверял окрестности).
Что касается генерации кораблей то тут нужно подумать но вполне решается 1 функцией, но я уже в пижаме)