В цьому завданні потрібно було реалізувати інтерфейс гри в п'ятнашки відповідно до наступного зразка:
Звісна річ, якщо йде мова про створення кнопок для керування інтерфейсом, слід було використовувати інструмент Запис макросу. Цей інструмент знаходиться на вкладці Вид в групі Макроси. Також його можна знайти на вкладці Розробник, що за замовчанням прихована, а тому її слід відобразити у параметрах стрічки інструментів Word.
Оскільки ми маємо справу з чотирма елементами керування грою, то й макросів нам потрібно записати чотири, моделюючи рух порожньої комірки в кожен з чотирьох боків.
Один із варіантів розв'язання завдання передбачає використання під час запису заміни за регулярним виразом. Розглянемо його детальніше.
Вхідні дані для нашого макросу - таблиця 4х4, в кожній комірці якої рівно один символ - цифра від 1 до 9 або одна з літер A, B, C, D, E, F, X. Оскільки межі таблиці заважають нам працювати з нашим полем, приберімо їх. Для цього виділяємо весь вміст документу (Ctrl+A), вирізаємо його (Ctrl+X) та вставляємо (Ctrl+V), при цьому обираючи в розкривному меню варіант Зберегти тільки текст:
Після цього ми отримаємо ту ж таблицю, стовпці якої розділені не межею, а знаком табуляції, а рядки - знаком абзацу (на зображенні нижче результат операції поданий з увімкненими недрукованими символами):
Цієї конфігурації вже достатньо для запису руху вліво та вправо. Наприклад, для руху вправо нам слід знайти в документі підрядок, що складається з символа X, табуляції та деякого іншого значущого символа і змінити їх місцями. Це легко зробити за допомогою заміни з увікненими підстановочними знаками:
Вище в рядку пошуку за допомогою дужок ми виділили групу символів, яку можемо використати у виразі для заміни. Для цього ми використовуємо заповнювач - номер відповідної групи зі зворотньою похилою лінією перед ним (\1). Номер групи визначається порядком розміщення відкриваючої дужки цієї групи. В даному випадку вона єдина, тому використано номер 1.
Аналогічно, розташовуючи значущий символ перед символом X, можна здійснити рух вліво.
З рухом вгору та донизу ситуація видається дещо складнішою. Оскільки заміна з увікненими знаками підстановки не дозволяє здійснювати пошук з використанням символу переносу абзацу (цей символ в рядку пошуку просто відсутній в цьому режимі), одразу здійснити заміну, як це було зроблено для руху вліво та вправо, не можна.
Для цього здійснимо заміну знаку абзацу на знак табуляції з вимкненими знаками підстановки:
Після цього ми отримаємо усі значення, розташовані в одному абзаці з розділювачем у вигляді знаку табуляції. Тепер можна здійснити заміну за регулярним виразом. Аби "пересунути" порожню комірку вгору нам достатньо змінити місцями символ X та символ, що знаходиться на 4 позиції раніше:
Для цього вище ми використали вже поділ на 2 групи, тому їх нумерація в рядку заміни теж змінилася. Позицію трьох символів між тими, що міняються місцями, ми не змінюємо, а два символи скраю змінюємо місцями.
Після цього потрібно повернути табличний вигляд нашому абзацу. Слід зауважити, що хоча символ абзацу не можна "шукати" при увімкнених знаках підстановки, здійснювати заміну на нього можна. Тому відповідна команда заміни доволі проста:
Аналогічно, змінюючи місцями символ X та символ, що знаходиться на 4 позиції пізніше, можна здійснити рух донизу.
Нижче подано перелік команд, які потрібно виконати під час запису макросів для кожного з напрямів.
Напрям вправо.
- Виділяємо весь вміст документу (Ctrl+A), вирізаємо його (Ctrl+X) та вставляємо (Ctrl+V), при цьому обираючи в розкривному меню варіант Зберегти тільки текст.
- Здійснюємо заміну з увікненими знаками підстановки X^t([1-9ABCDEF]) на \1^tX.
- Виділяємо весь вміст документу (Ctrl+A), за допомогою інструменту Вставка - Таблиця - Перетворити на таблицю... перетворюємо отриманий текст на таблицю, використовуючи розділювач знак табуляції.
Напрям вліво.
- Виділяємо весь вміст документу (Ctrl+A), вирізаємо його (Ctrl+X) та вставляємо (Ctrl+V), при цьому обираючи в розкривному меню варіант Зберегти тільки текст.
- Здійснюємо заміну з увікненими знаками підстановки ([1-9ABCDEF])^tX на X^t\1.
- Виділяємо весь вміст документу (Ctrl+A), за допомогою інструменту Вставка - Таблиця - Перетворити на таблицю... перетворюємо отриманий текст на таблицю, використовуючи розділювач знак табуляції.
Напрям вгору.
- Виділяємо весь вміст документу (Ctrl+A), вирізаємо його (Ctrl+X) та вставляємо (Ctrl+V), при цьому обираючи в розкривному меню варіант Зберегти тільки текст.
- Здійснюємо заміну з вимкненими знаками підстановки ^p на ^t.
- Здійснюємо заміну з увікненими знаками підстановки ([1-9ABCDEF])(^t[1-9ABCDEF]^t[1-9ABCDEF]^t[1-9ABCDEF]^t)X на X\2\1.
- Здійснюємо заміну з увікненими знаками підстановки ([1-9ABCDEFX]^t[1-9ABCDEFX]^t[1-9ABCDEFX]^t[1-9ABCDEFX])^t на \1^p.
- Виділяємо весь вміст документу (Ctrl+A), за допомогою інструменту Вставка - Таблиця - Перетворити на таблицю... перетворюємо отриманий текст на таблицю, використовуючи розділювач знак табуляції.
Напрям донизу.
- Виділяємо весь вміст документу (Ctrl+A), вирізаємо його (Ctrl+X) та вставляємо (Ctrl+V), при цьому обираючи в розкривному меню варіант Зберегти тільки текст.
- Здійснюємо заміну з вимкненими знаками підстановки ^p на ^t.
- Здійснюємо заміну з увікненими знаками підстановки X(^t[1-9ABCDEF]^t[1-9ABCDEF]^t[1-9ABCDEF]^t)([1-9ABCDEF]) на \2\1X.
- Здійснюємо заміну з увікненими знаками підстановки ([1-9ABCDEFX]^t[1-9ABCDEFX]^t[1-9ABCDEFX]^t[1-9ABCDEFX])^t на \1^p.
- Виділяємо весь вміст документу (Ctrl+A), за допомогою інструменту Вставка - Таблиця - Перетворити на таблицю... перетворюємо отриманий текст на таблицю, використовуючи розділювач знак табуляції.
Слід зазначити, що якщо хід в якусь зі сторін зробити неможливо, вказані вище заміни просто не знаходитимуть відповідних підрядків і жодних змін не послідує.
Важливо при створенні макросів обирати поточний документ в якості місця збереження, оскільки інакше макрос зберігається на комп'ютері та з файлом не передається.
Залишилось тільки створити кнопки для наших макросів. Для цього переходимо у меню Налаштування стрічки (в контекстному меню стрічки меню). Обираємо підменю Панель швидкого доступу у списку зліва. У розкривному списку лівої частини обираємо пункт Макроси, а у розкривному списку справа - налаштування для поточного документу. Після цього додаємо подвійним кліком кожен з макросів та за допомогою кнопки Змінити встановлюємо відповідну піктограму: