DevGang
Авторизоваться

Создайте оценочную игру с помощью Vanilla JavaScript

На прошлой неделе коллега попросил меня оценить количество людей на мероприятии, и именно тогда нам обоим стало очевидно, что мои навыки оценки ужасны. Мне было так неловко! Той ночью я решил попробовать написать игру, которая поможет мне лучше оценивать.

Используемые технологии

В игре Bubble Estimator используются следующие технологии:

  • JavaScript: основа игровой логики, обработка создания пузырьков, ввод данных пользователем и подсчет очков.
  • SVG (масштабируемая векторная графика): обеспечение визуально привлекательной и масштабируемой графики для динамических пузырьков.
  • API веб-аудио: добавление звуковых эффектов для улучшения игрового процесса.

Функции

  • Динамическое создание пузырьков разных размеров, цветов и положений.
  • Звуковые эффекты с использованием API веб-аудио для создания оживленной атмосферы.
  • Пользовательский ввод для оценки количества созданных пузырьков.
  • Система начисления баллов, основанная на точности оценки пользователя.

Основные моменты кода

Я так горжусь функцией генератора пузырьков, простой рекурсивной функцией, ответственной за всю магию!

function createBubbles(svg, centerX, centerY, radius, depth) {
    if (depth === 0) {
        return;
    }

    const numBubbles = Math.floor(Math.random() * 6) + 2;

    const angleIncrement = (3 * Math.PI) / numBubbles;
    for (let i = 0; i < numBubbles; i++) {
        const angle = i * angleIncrement;
        //cartesian coordinates
        const x = radius * Math.cos(angle) + centerX;
        const y = radius * Math.sin(angle) + centerY;
        const newRadius = radius / (Math.random() + 1);
        const newX = x + newRadius * Math.cos(angle);
        const newY = y + newRadius * Math.sin(angle);

        //draw circle
        const circle = document.createElementNS(
            "http://www.w3.org/2000/svg",
            "circle"
        );
        circle.setAttribute("cx", newX);
        circle.setAttribute("cy", newY);
        circle.setAttribute("r", newRadius);

        //color
        const randomColor = generateRandomColor();
        circle.setAttribute("fill", randomColor);

        circlesDrawn++;
        console.log("num bubbles", circlesDrawn);
        svg.appendChild(circle);
        //play sound
        playBlopSound();

        //recursive case
        setTimeout(() => {
            circle.style.transform = "translate(0,-5%)";
            createBubbles(svg, newX, newY, newRadius, depth - 1);
        }, i * 500);
    }
}

Демоверсия

Вы можете попробовать игру, пройдя по этой ссылке: https://voluble-duckanoo-221094.netlify.app/

Как реализовывалось/Учебное пособие

Да, и если вам интересно посмотреть, как я это сделал; вот ссылка на процесс реализации и учебник.

Исходный код:

Исходный код доступен на GitHub: Bubble Estimator Game на GitHub.

Я надеюсь, что этот проект вдохновит вас исследовать новые идеи и получить удовольствие от своего пути программирования.

Источник:

#JavaScript #CSS #HTML
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу