«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Могу ли я водить машину? Кодирование тестера на алкоголь

Могу ли я водить машину? Кодирование тестера на алкоголь

Опубликовано 18 ноября 2024 г.
Просматривать:134

В Дании, где я живу, мы, к сожалению, держим рекорд в Европе: наши дети являются самыми злоупотребляющими алкоголем на континенте. По этой причине особое внимание уделяется снижению потребления алкоголя среди молодежи и просвещению детей о влиянии алкоголя.

Я собрал калькулятор алкоголя на HTML и JavaScript для нашей местной школы, чтобы показать учащимся, как алкоголь влияет на организм и как рассчитывается содержание алкоголя в крови (BAC).

Как рассчитывается БАК?

Чтобы оценить BAC или «промилле», вам понадобится несколько ключевых данных:

  • Вес вашего тела – поскольку тело большего размера может разбавлять алкоголь сильнее, чем тело меньшего размера.
  • Биологический пол – из-за разного уровня содержания воды в организме, что влияет на распределение алкоголя в организме.
  • Количество выпитых единиц алкоголя – потому что в каждом виде напитка разная концентрация алкоголя.

Расчет единиц алкоголя

Различные напитки вносят в кровь разное количество алкоголя, в зависимости от их объема и концентрации алкоголя. Чтобы стандартизировать это, единица расчета алкоголя обычно делается следующим образом:

volume (cl) * alcohol percentage * 0.8 / 120

Структура

Все «приложение» структурировано как

с организованными наборами полей и именованными элементами управления, что позволяет легко извлекать необходимые элементы с помощью:
const { add, addbeverage, etc. } = app.elements;

Поскольку пределы BAC различаются в зависимости от региона, нам нужно сначала выбрать регион, отрегулировать ползунок веса и выбрать биологический пол:

Can I Drive? Coding an Alcohol Tester


Далее мы можем начать добавлять напитки:

Can I Drive? Coding an Alcohol Tester

Это простой

, в котором отдельные поля для единиц измерения, объема и процентного содержания алкоголя отключены (и скрыты с помощью CSS), пока вы не сделаете выбор из селектора напитков:

Can I Drive? Coding an Alcohol Tester

Видимость этих полей контролируется с помощью функции EnableElements:

[percentage, units, volume].forEach(el => el.disabled = !bool);

Когда мы затем добавляем напиток, создается список употребленных напитков и рассчитываются BAC, расчетное время, необходимое для трезвости, и т. д.:

Can I Drive? Coding an Alcohol Tester

После этого вы можете продолжить добавлять еще напитков, и BAC соответственно обновится:

Can I Drive? Coding an Alcohol Tester

Для меня было очень удивительно узнать, что юридический уровень BAC в США в 4 раза выше, чем в Швеции или Норвегии!

Другими словами, в Швеции вы можете лишиться лицензии за употребление алкоголя в количестве, разрешенном законом в США


Разбивка расчета BAC

Основные вычисления для BAC выполняются в функции CalculAnswer:

function calculateAnswer() {
  const alcoholMetabolismRate = 0.015;
  const currentBAC =
    ((total * 10) /
      (weight.valueAsNumber *
        1000 *
        parseFloat(bodywater.value))) *
    100;
  const hoursToSober = (
    currentBAC / alcoholMetabolismRate
  ).toFixed(1);
  const canDrive =
    currentBAC 



Давайте разберемся:

  1. Скорость метаболизма алкоголя: Скорость метаболизма алкоголя = 0,015

    • Это значение представляет собой среднюю скорость, с которой организм снижает уровень BAC в час (приблизительно 0,015%).
  2. Вычисление текущего BAC: currentBAC = ((total * 10) / ((weight.valueAsNumber * 1000) * parseFloat(bodywater.value))) * 100

    • total * 10: конвертирует общее количество потребляемого алкоголя в граммы (поскольку одна единица равна примерно 10 граммам чистого спирта).
    • weight.valueAsNumber * 1000: преобразует массу тела из килограммов в граммы для целей расчета.
    • bodywater.value: десятичный коэффициент, основанный на биологическом поле и влияющий на распределение алкоголя в организме (например, 0,58 для мужчин, 0,49 для женщин).
    • Затем результат умножается на 100, чтобы преобразовать BAC в проценты.
  3. Оценка времени, необходимого для трезвости:hoursToSober = (currentBAC / AlcoholMetabolismRate).toFixed(1);

    • Делит текущий уровень BAC на скорость метаболизма, чтобы оценить время, необходимое для того, чтобы уровень BAC достиг нуля.
  4. Определение легального статуса вождения: canDrive = currentBAC

    • Сравнивает текущий уровень BAC с выбранным допустимым пределом BAC. Если текущий уровень BAC находится в пределах допустимого, пользователь считается годным к вождению; в противном случае это не так.

Функция CalculAnswer затем объединяет эти значения в сообщение, которое показывает текущий уровень BAC, количество часов до трезвости и пригодность пользователя к вождению.


… На этом урок заканчивается. Если хотите, не стесняйтесь экспериментировать с CodePen — возможно, создавая более удобный для детей пользовательский интерфейс. Помните: этот инструмент дает приблизительную оценку и не учитывает такие факторы, как время употребления каждого напитка. И имейте ввиду, скорее всего им будут пользоваться трезвые люди!


Демо


Обложка DALL·E, из подсказки: Создать пьяную машину в мультяшном стиле, похожем на ранние Disney и Cupheads, в качестве изображения, которое можно обрезать до размера 1000x420 пикселей.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3