Как сделать игру «Морской бой» в Excel: подробное руководство с формулами и примерами

Создание игрового поля: основа для морского боя

Игра «Морской бой» в Microsoft Excel — это не только развлечение, но и отличный способ потренировать навыки работы с условным форматированием, логическими функциями и динамическими диапазонами. В отличие от классической бумажной версии, электронная таблица позволяет автоматизировать проверку попаданий, подсчёт очков и даже добавить искусственный интеллект для одиночной игры.

Прежде чем приступить к формулам, нужно правильно организовать структуру документа. Мы будем использовать два отдельных листа: один для Игрового поля, второй для Логики (скрытых вычислений). Такой подход сделает файл аккуратным и легко редактируемым. Начнём с разметки координатной сетки 10×10 — стандартного размера для морского боя.

Важно: если вы планируете играть на Excel Online или в мобильной версии, учитывайте ограничения на количество одновременно активных формул. Для сложных логических цепочек лучше использовать десктопную версию Excel 2019 или новее.

Шаг 1: Разметка игрового поля и координат

Создайте новый лист и назовите его «Игра». Здесь мы разместим видимую часть морского боя. Для удобства игровое поле лучше начинать с ячейки B3, оставляя сверху и слева место для подписей строк и столбцов (A–J и 1–10 соответственно).

Как быстро заполнить буквенные обозначения столбцов:

  1. В ячейку A3 введите =CHAR(64+COLUMN()) и растяните формулу вправо до K3.
  2. В ячейку A4 введите 1, в A52, затем выделите обе ячейки и растяните до A13.
  3. Объедините ячейки A1:K1 и напишите заголовок «Морской бой».

Для визуального разделения клеток установите границы для диапазона B4:K13 (меню Главная → Границы → Все границы). Чтобы клетки выглядели квадратными, отрегулируйте ширину столбцов и высоту строк (оптимально — 25 пикселей).

Шаг 2: Размещение кораблей с проверкой правил

Корабли в морском бое должны размещаться по строгим правилам: нельзя ставить их впритык (должна быть хотя бы одна пустая клетка между кораблями), а также диагонально. Для автоматизации проверки нам понадобятся вспомогательные ячейки.

Создайте второй лист «Логика» и организуйте там таблицу для хранения координат кораблей. Например:

Тип корабляКоличествоДлинаКоординаты началаОриентация
Линкор14B4Горизонтальная
Крейсер23D7Вертикальная
Эсминец32F2Горизонтальная
Катер41H9

Для визуализации кораблей на игровом поле используйте функцию ВПР или ИНДЕКС/ПОИСКПОЗ, чтобы подтягивать данные с листа «Логика». Например, в ячейку B4 листа «Игра» введите:

=ЕСЛИ(ИЛИ(ИНДЕКС(Логика!$D$2:$D$5;ПОИСКПОЗ(B$3;Логика!$A$2:$A$5;0))=АДРЕС(СТРОКА();СТОЛБЕЦ();4);...);"●";"")

Где — символ, обозначающий часть корабля. Полную формулу с проверкой ориентации и длины смотрите в спойлере ниже.

Полная формула для отображения кораблей

=ЕСЛИОШИБКА(

ЕСЛИ(

И(

ИНДЕКС(Логика!$D$2:$D$5;ПОИСКПОЗ(B$3;Логика!$A$2:$A$5;0))=ЛЕВСИМВ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);1)&ПОДСТАВИТЬ(АДРЕС(СТРОКА();СТОЛБЕЦ();4);1;1;"");

ИЛИ(

И(Логика!$E$2="Горизонтальная";СТОЛБЕЦ()<=СТОЛБЕЦ(ИНДЕКС(Логика!$D$2:$D$5;ПОИСКПОЗ(B$3;Логика!$A$2:$A$5;0);1))+Логика!$C$2-1);

И(Логика!$E$2="Вертикальная";СТРОКА()<=СТРОКА(ИНДЕКС(Логика!$D$2:$D$5;ПОИСКПОЗ(B$3;Логика!$A$2:$A$5;0);1))+Логика!$C$2-1)

)

);

"●";

""

);

""

)

📊 Какой элемент морского боя в Excel вызвал у вас больше всего вопросов?
Разметка поля
Размещение кораблей
Логика попаданий
Оформление и дизайн
ИИ для одиночной игры

Шаг 3: Логика выстрелов и проверка попаданий

Самая сложная часть — реализация механики выстрелов. Нам нужно:

  • 🎯 Отмечать выстрелы игрока (например, крестиком «✖»)
  • 🔍 Проверять, попал ли выстрел в корабль
  • 💥 Подсвечивать попадания и промахи разными цветами
  • 🏆 Вести счёт уничтоженных кораблей

Для этого создадим на листе «Логика» таблицу с координатами выстрелов и их статусом. Используем функцию ЕСЛИ с вложенными условиями:

=ЕСЛИ(Игра!B4="✖";

ЕСЛИ(Игра!B4="●";"Попадание";

ЕСЛИ(СЧЁТЕСЛИ(Логика!$A$2:$A$100;АДРЕС(СТРОКА();СТОЛБЕЦ();4))>0;"Мимо";""));

"")

Критичный момент: чтобы избежать циклических ссылок, никогда не размещайте формулы проверки на том же листе, где пользователь вводит выстрелы (крестики). Используйте отдельный лист или скрытый диапазон.

Шаг 4: Условное форматирование для наглядности

Без визуальных подсказок игра будет неудобной. Настройте условное форматирование для игрового поля:

  1. Выделите диапазон B4:K13 на листе «Игра».
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите «Форматировать только ячейки, которые содержат».
  4. Установите правило: «Значение ячейки равно = ●» и задайте зелёный цвет фона.
  5. Добавьте второе правило для значения «✖» с красным цветом (промах) и третье для «Попадание» с оранжевым.

Для подсветки текущей выбранной клетки используйте формулу в правиле условного форматирования:

=И(СТРОКА()=СТРОКА(ВыделеннаяЯчейка);СТОЛБЕЦ()=СТОЛБЕЦ(ВыделеннаяЯчейка))

Где ВыделеннаяЯчейка — именованный диапазон, связанный с активной ячейкой (можно реализовать через VBA или вручную обновлять ссылку).

Цвета для кораблей (зелёный) настроены|Цвета для промахов (красный) настроены|Цвета для попаданий (оранжевый) настроены|Подсветка текущей клетки работает|Правила не конфликтуют между собой-->

Шаг 5: Автоматизация подсчёта очков и завершение игры

Чтобы игра сама определяла победителя, добавьте счётчик уничтоженных кораблей. На листе «Логика» создайте таблицу:

Тип корабляВсегоУничтоженоОсталось
Линкор (4)1=СЧЁТЕСЛИ(ДиапазонПопаданий;"Попадание*4")=B2-C2
Крейсер (3)2=СЧЁТЕСЛИ(ДиапазонПопаданий;"Попадание*3")/3=B3-C3
Эсминец (2)3=СЧЁТЕСЛИ(ДиапазонПопаданий;"Попадание*2")/2=B4-C4
Катер (1)4=СЧЁТЕСЛИ(ДиапазонПопаданий;"Попадание*1")=B5-C5

Формула для определения конца игры:

=ЕСЛИ(СУММ(Логика!D2:D5)=0;"Игра окончена!";"")

Отобразите этот статус на листе «Игра» в заметной ячейке (например, M5) и настройте для неё условное форматирование с крупным шрифтом.

Шаг 6: Добавление искусственного интеллекта (для одиночной игры)

Для игры против компьютера нужно запрограммировать простейший ИИ. Алгоритм может быть таким:

  1. Компьютер «стреляет» по случайным координатам, избегая повторных выстрелов.
  2. При попадании ИИ продолжает стрелять по соседним клеткам (поиск «раненого» корабля).
  3. Используются функции СЛЧИС() для генерации координат и ВПР для проверки истории выстрелов.

Пример формулы для генерации случайного выстрела (лист «Логика»):

=ЕСЛИ(

СЧЁТЕСЛИ($A$2:A2;АДРЕС(ЦЕЛОЕ(СЛЧИС()*10+1);ЦЕЛОЕ(СЛЧИС()*10+1);4))=0;

АДРЕС(ЦЕЛОЕ(СЛЧИС()*10+1);ЦЕЛОЕ(СЛЧИС()*10+1);4);

""

)

Для реализации «умного» поиска после попадания потребуется VBA или сложные массивы формул. В упрощённом варианте можно ограничиться случайными выстрелами.

Дополнительные улучшения и советы

Чтобы игра стала ещё интереснее, добавьте:

  • ⏱️ Таймер хода (используйте функцию ТДАТА() для отсчёта времени).
  • 🎨 Темную тему оформления (измените цвета фона и текста в условном форматировании).
  • 📊 Статистику игр (количество ходов, точность попаданий).
  • 🔄 Кнопку «Новая игра» (с помощью VBA или гиперссылки на макрос очистки).

Для защиты формул от случайного изменения:

  1. Выделите все ячейки с формулами.
  2. Перейдите в Рецензирование → Защитить лист.
  3. Установите пароль и разрешите изменять только ячейки для ввода выстрелов.
⚠️ Внимание: При использовании Excel Online некоторые функции (например, АДРЕС с динамическими массивами) могут работать медленнее. Тестируйте игру на десктопной версии перед сохранением в облако.

FAQ: Частые вопросы по созданию морского боя в Excel

Можно ли сделать морской бой без VBA?

Да, всю логику можно реализовать через формулы, но для некоторых функций (например, «умного» ИИ или кнопки сброса) потребуется VBA. Без макросов игра будет проще, но менее динамичной.

Как сохранить прогресс игры?

Сохраните файл Excel после каждого хода или используйте функцию АвтосохранениеExcel 365). Для многопользовательской игры лучше использовать Google Sheets с общим доступом.

Почему формулы возвращают ошибку #ЗНАЧ?

Ошибка #ЗНАЧ! обычно возникает из-за неверного формата ссылок на ячейки или конфликта типов данных. Проверьте:

  • Все ли диапазоны в формулах имеют одинаковый размер.
  • Нет ли текстовых значений там, где ожидаются числа.
  • Правильно ли указаны абсолютные/относительные ссылки (например, $A$1 vs A1).
Как добавить звуковые эффекты?

В Excel нет встроенных звуковых функций, но можно:

  1. Использовать VBA с командой Beep для простых сигналов.
  2. Вставить объекты Media Player (меню Вставка → Объект) с звуками выстрелов.
  3. Создать гиперссылки на внешние аудиофайлы (откроются в проигрывателе по умолчанию).

Для полноценных звуков лучше интегрировать Excel с PowerPoint или специализированными программами.

Где скачать готовый шаблон морского боя для Excel?

Готовые шаблоны можно найти на сайтах:

  • Office Templates (официальные шаблоны Microsoft).
  • Vertex42 (бесплатные и платные шаблоны игр).
  • Exceljet (примеры с формулами).

Обратите внимание: многие шаблоны требуют настройки под вашу версию Excel.