Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

30.10.2023

Спідран по саперу


Воно працює

Останнім часом сімʼя захоплюється “Сапером” в версії від Google (це одна їх з прихованих цяцьок). Мені відразу стає більш цікаво алгоритмізувати розвʼязок — цікава вправа. Щоб мати можливість робити інші експерименти, вирішив написати свою версію.

Сапер одна з найпростіших компʼютерних ігор, як для розуміння, так і у своїй моделі. Тому й добре підходить як вправа.

В стані маємо поле та міни. Міни розташовуються абсолютно випадково. Клітини навколо них оздоблюються лічильниками мін. Окремо відстежуємо стан відкриття клітин: закрито, відкрито, відмічено.

Гра закінчується тоді, коли відкриті всі клітини (а не за кількістю прапорців — бо ми маємо переконатися, що мін дійсно ніде більше немає.) Тож для стану гри обчислюємо: чи відкрили всі клітини (виграш), та чи відкрили міну (програш.) Поки гра не закінчилась, дозволяємо відкривати та відмічати клітини. От і весь ігролад.

На першу реалізацію в мене пішло година 20 хвилин, з яких останні 20 - на реалізацію двоетапного діалогу відкриття, бо плейтестінг показав, що на пристроях без миші він практично необхідний.

Це мій перший проєкт на SvelteKit, який тут, до речі, зовсім не потрібний, бо немає серверної складової. Чисто браузерний додаток можна було робити просто зі Svelte. Проте мені було ліньки налаштовувати проєкт з нуля, а SvelteKit все робить за мене. Далі проєкт можна безплатно розмістити на Vercel.

Ось: Сапер. А тут код. Далі можна робити над ним щось цікавеньке.