Показать сообщение отдельно
  #30 (permalink)  
Старый 22.11.2013, 17:53
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Цитата:
Когда я подумал об этом, мне пришло такое решение. Можно при создании корабля каждый обозначать своей цифрой ))) И после каждого выстрела пробегать весь массив и и искать клеточки с такой ЖЕ цифрой )) Ну и при попадании менять циферку.

Итак, три массива. Первый массив, например, корабли

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 функцией, но я уже в пижаме)
__________________
Научу себя плохому
Ответить с цитированием