ООП — объектно-ориентированное программирование

Учимся описывать «чертежи» объектов: героев, машин, врагов — и создавать по ним сколько угодно экземпляров.

📋 Заданий: 5✅ С автопроверкой: 3✨ Новых: 2

🧰Методы и функции для заданий

Всё, что написано ЗАГЛАВНЫМИ буквами, — заранее выбранный элемент

Как вызватьЧто делает
setTimeout(function, time, arguments)Вызвать функцию один раз через заданное время (в миллисекундах)
setInterval(function, time, arguments)Вызывать функцию снова и снова через заданный интервал
clearTimeout(NAME)Отменить однократный вызов
clearInterval(NAME)Остановить повторяющийся вызов
Math.random() * nСлучайное число от 0 до n (не включительно)
ELEMENT.append(OTHER)Добавление элемента OTHER в DOM-дерево
ELEMENT.remove()Удаление элемента из DOM-дерева

🏎️Задания

1

Модальное окно

среднеавтопроверка

Создай модальное окно: кнопка #close убирает окно #modal со страницы, а кнопка #open возвращает его.

Модальное окно
Показать ответ (сначала попробуй сам!)
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Модальное окно</title>
    <style>

        body { margin: 0; height: 100vh; background-color: #482ff7; color: white; display: flex; flex-direction: column;
               justify-content: center; align-items: center; text-align: center; font-family: sans-serif; }
        #modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: rgba(131, 24, 131, 0.83);
                 display: flex; justify-content: center; align-items: center; }
        button { border: 0; color: white; font-size: 2em; font-weight: bold; padding: 1em 1.75em; border-radius: 10px; cursor: pointer; }
        #close { background-color: #fc5185; }
        #open { background-color: #22eaaa; }
    </style>
</head>
<body>
    <h1>Lorem ipsum dolor sit amet consectetur, adipisicing elit.</h1>
    <button id="open">ОТКРЫТЬ ОКНО</button>
    <div id="modal">
        <button id="close">ЗАКРЫТЬ ОКНО</button>
    </div>
    <script>
        let body = document.querySelector('body')
        let modal = document.querySelector('#modal')

        document.querySelector('#close').addEventListener('click', function () {
            modal.remove()
        })
        document.querySelector('#open').addEventListener('click', function () {
            body.append(modal)
        })
    </script>
</body>
</html>

Открыть готовую страницу с ответом ↗

2

Гонка — простой вариант

сложнов VS Code

Создай игру «Гонка», как на анимации. Каждая машина — объект, созданный конструктором.

Гонка

🖥️ Это большое задание — делай его в VS Code на компьютере и открывай страницу в браузере. Не забудь выложить результат на свой сайт на GitHub!

Показать ответ (сначала попробуй сам!)
3

Гонка — сложный вариант

сложнов VS Code

Усложни «Гонку»: добавь препятствия и счёт.

Гонка hard

🖥️ Это большое задание — делай его в VS Code на компьютере и открывай страницу в браузере. Не забудь выложить результат на свой сайт на GitHub!

Показать ответ (сначала попробуй сам!)
4

Конструктор героя

средненовоеавтопроверка

Напиши функцию-конструктор Hero(name, hp) (или класс class Hero). У героя есть свойства name и hp и метод attack(target), который отнимает у цели 10 здоровья.

Показать ответ (сначала попробуй сам!)
function Hero(name, hp) {
    this.name = name
    this.hp = hp
    this.attack = function (target) {
        target.hp -= 10
    }
}

let arthur = new Hero('Артур', 100)
let goblin = new Hero('Гоблин', 30)
arthur.attack(goblin)
console.log(goblin.hp)
5

Класс Car

сложноновоеавтопроверка

Напиши класс Car:

  • в constructor(brand) сохраняются марка brand и скорость speed = 0
  • метод accelerate() увеличивает скорость на 10
  • метод brake() уменьшает скорость на 10, но не ниже 0
  • метод info() возвращает строку Лада: 20 км/ч

Показать ответ (сначала попробуй сам!)
class Car {
    constructor(brand) {
        this.brand = brand
        this.speed = 0
    }

    accelerate() {
        this.speed += 10
    }

    brake() {
        this.speed = Math.max(0, this.speed - 10)
    }

    info() {
        return this.brand + ': ' + this.speed + ' км/ч'
    }
}

let car = new Car('Лада')
car.accelerate()
car.accelerate()
console.log(car.info())