Кто может показать для примера процесс разработки архитектуры игры «Змейка»?

Читаю "Чистую архитектуру", просветления ещё не постиг... Решил попробовать на простом приложении, но мысль постоянно лезет в библиотеки, GUI, классы, а ведь архитектура - это не об этом. Может кто покажет ход мыслей от задачи до момента где можно переходить к разработке?

ЗЫ: "Змейка" - это где ползают удавы, едят фрукты и растут, умирая при любом столкновении. Одним управляет пользователь, остальные "шарятся" сами...
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev
software engineer
Архитектуру разбиваете на части:

Хранение информации о фруктах и собственной самой змейки
Логика движения змейки
Управление
Визуализация (отрисовка, которая может выполняться в зависимости от устройства, например с разным разрешением).
Отдельно - меню запуска и может быть, например, таблица рекордов.
Может быть даже таблица рекордов с передачей информации в интернет, для глобального рейтинга.
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
https://habr.com/ru/post/334434/

Представте в голове или на бумаге какие объекты вам нужны для разработкии описывайте каждый в виде объекта в коде.

1 поле чаще всего хранится в виде матрицы, как мы можем записать матрицу в нашем ЯП, в виде простых массивов или векторных, если такие есть. в случаи змейки мы можем использовать просто холст размером 300 на 300 где каждый пиксиль это клетка в матрице.

(Матрица в виде массивов используется всегда в играх типах Match3 легче придумывать алгоритмы)

2 игрок, как мы можем записать игрока в ЯП в виде объекта с кучей параметров
speed: float
diriction: num 1..4 направление движения 1 верх 2 влево 3 вниз 4 вправо (тодо вынести в константы, нужно больше констант богу констант )
x: num
y: num
lv: num
score: num
высота: num
ширина: : num

3 еда тоже самое что и игрок.
speed: float - еда тоже может убегать
lv: num уровень еды, 1 одну клетку даем змейке 3 3 клетки даем змейке. (можно пофантазировать с параметром и придумать геймплей игры. например если у еды больше лв чем у змейки, кушать нельзя )
x: num позиция а холсте
y: num
высота: num размер клетки на холсте
ширина: num

если еды на поле много то нужен лимитированый массив для количества еды на поле.

Любая игра начинается с инициализации игрового поля и объектов.

1 Создаем поле
2 Создаем игрока
Запускаем таймер, который должен рисовать нам картинку, каждый кадр и выполнять след код ( на самом деле не обязательно, у каждого объекта может быть свой таймер, основной таймер делается для плавности и стабильного FPS, в js это достигается через requestAnimationFrame(callback)

Проверка на столкновения игрока с едой или препятствиями.
Проверка вышли ли мы за пределы поля ( мы знаем начало поле это 0 и знаем ширину поля 300 от 0 до 300 в лево и в право мы можем бегать, мы знаем верх 0 и знаем высоту поля 300, от нуля мы можем бегать до 300 верх вних. в
Любая игра начинается с глобального таймера =)

Ну а что бы эту муть не читать, которую я написал, можно почитать статью
https://habr.com/ru/post/334434/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Бранд-Мастер Санкт-Петербург
от 70 000 до 100 000 ₽
До 100 000 ₽
Корда Групп Санкт-Петербург
от 100 000 до 150 000 ₽
18 сент. 2020, в 17:52
1000 руб./за проект
18 сент. 2020, в 17:49
500 руб./в час
18 сент. 2020, в 17:24
180 руб./за проект