Попросите звезду (спасибо, господа зрители~)
Гитхаб:GitHub.com/ordinary A/A…
Онлайн-демонстрация
- Тральщик:играть онлайн
- Трубочные птицы:играть онлайн
- жадная змея:играть онлайн
Тральщик
идеи
- Каждая клетка шахматной доски делится на один из трех типов:
- Гром: эммм это гром
- Числа: количество девяти дворцов Гнере в центре текущей сетки.
- Пусто: в сетке из девяти квадратов с центром в текущей сетке нет молнии.
- При щелчке по сетке возможны три ситуации, соответствующие вышеперечисленным трем типам:
- Рэй: эммм игра окончена
- Число: отображение текущего числа, запрашивающее у пользователя количество мин.
- Пусто: необходимо рекурсивно искать число типа сетки, чтобы остановить рекурсию с текущей выбранной сеткой в качестве центра, как показано на рисунке.
рекурсия
- Предположим, вы нажимаете координаты пустой ячейки
[x,y], координаты остальных восьми сеток с центром в нем:
const arr = [
//获取九宫格数据
[x - 1, y - 1], //左上
[x, y - 1], //中上
[x + 1, y - 1], //右上
[x - 1, y], //中左
[x + 1, y], //中右
[x - 1, y + 1], //左下
[x, y + 1], //中下
[x + 1, y + 1] //右下
];
- Отфильтруйте координаты за пределами границ, чтобы получить двумерный массив координат:
const [maxX, maxY] = this.boardSize; //棋盘的边界值
const filterArr = arr.filter(
([posX, posY]) =>
!(posX < 0 || posY < 0 || posX >= maxX || posY >= maxY)
);
- Пройдите набор координат, а затем рекурсивно получите другой набор из восьми координат, центрированных на каждом элементе;
- Когда тип определенной координаты не является пустым и является числом на пути рекурсии, рекурсия останавливается, как показано на следующем рисунке:
Нажмите красный, чтобы пройти наружу => фиолетовая стрелка => зеленая стрелка (найдите числовую сетку) => пропустите рекурсию зеленой стрелки => начните рекурсию черной стрелки
- Чтобы избежать повторной рекурсии определенной координаты в процессе рекурсии, к каждому объекту проверки добавляется логическое значение того, была ли добавлена рекурсия, и повторной рекурсии можно избежать, оценивая
- В итоге вы получите шахматную доску с расширенными границами цифровых сеток;
эмммм плевать на стиль рисования.
флаг
- Все плитки типа шахты должны быть помечены, чтобы выиграть
- Нажав на числовую сетку, оцените, правильно ли разминированы флаги в сетке из девяти клеток.
- Только судите, если количество флагов больше или равно количеству кликнутой сетки
- Когда флаг вставлен по ошибке, отображаются три состояния:
Правильный мой (нормальное отображение) Разряженные мины (мины на зеленом фоне) Шахматные мины (мины на красном фоне)
Заканчивать!
трубочная птица
Объекты птиц с коллекцией труб
const bird = {
top, //鸟的top值
right, //鸟的right值
sports, //记录运动状态来更改跳跃和下坠动画
};
const pipe = {
right, //管道的right值
topPipeTop, //上管道的top值
topPipeSrc, 上管道的资源地址
bottomPipeTop, //下管道的top值
bottomPipeSrc, //下管道的资源地址
isCross, //管道是否已被小鸟通过
};
Более важные моменты:
- Скорость падения и скорость подбрасывания птицы вверх (указывает на то, что все они были возвращены учителю физики, а я зашел в интернет проверить формулу (┬_┬))
- При обходе конвейерной коллекции, когда последний элемент находится на определенном расстоянии от правой границы, тогда
pushтрубный объект,unshiftскинь первый предмет - Когда птица проходит через набор верхних и нижних конвейеров, объект добавит новую запись, и она будет пропущена, если она существует во время обхода.
- Оценка граничного значения и значения ошибки
Оценка границы трубопровода
Есть три состояния, когда птица проходит через трубу
- на пути к трубопроводу или в трубопроводе
- Потерпеть поражение
- успех
Когда птица успешно пролетит над трубой, запишите текущую трубуisCrossПоле, пройденное птицами.
Заканчивать
Следующий шаг прост: напишите анимацию, чтобы фон и птица двигались, установите таймер, чтобы труба двигалась, и все готово!
жадная змея
Создайте прожорливую змею 🐍 и ее еду 🎂
Во-первых, вам нужно определить двумерный массив для хранения координат головы змеи и тела змеи.
- Змеиная голова:
[~~(Math.random() * (棋盘宽度 - 蛇长 - 1) + 1),~~(Math.random() * (棋盘高度 - 蛇长 - 1) + 1)]; - Змеиное тело: его можно получить случайным перемещением по координатам вверх или вниз по координатам головы змеи.
- Структура данных Snake: в итоге получится двумерный массив, подобный тому, что справа
[[10,10],[10,11],[10,12],[10,13],[10,14]] - Питание: Пасс
whileПросто пройдите координату, которая не принадлежит 🐍
Заставь змею двигаться 🐍
В соответствии с направлением движения текущая координата оси первого элемента змеи равна +1, а хвостовой элемент набора змей удаляется, и змея движется! нам нужно:
- Привяжите событие клавиатуры, чтобы задать направление движения змеи, когда пользователь нажимает на нее;
- Определите, есть ли граничная проблема или тело змеи, пройдя через голову змеи;
- Определить, совпадают ли координаты головы змеи с координатами еды;
- Когда змея «ест» пищу, элемент хвоста змеи не удаляется;
ты закончил
Далее вы можете добавить к жадной змее некоторые функции Инь (цветок) дуновение (ли) Си (Ху) Тин (свист) жадной змее 🐍!