"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 운전할 수 있나요? 알코올 테스터 코딩

운전할 수 있나요? 알코올 테스터 코딩

2024년 11월 18일에 게시됨
검색:292

내가 살고 있는 덴마크에서는 안타깝게도 유럽 내에서 기록을 세웠습니다. 우리 아이들은 대륙에서 가장 술을 많이 마시는 사람입니다. 이 때문에 청소년 알코올 소비를 줄이고 알코올의 영향에 대해 어린이를 교육하는 데 중점을 두고 있습니다.

저는 알코올이 신체에 미치는 영향과 혈중 알코올 농도(BAC)가 어떻게 계산되는지 학생들에게 보여주기 위해 지역 학교에서 HTML과 JavaScript로 알코올 계산기를 구성했습니다.

BAC는 어떻게 계산되나요?

BAC 또는 "promille"을 추정하려면 몇 가지 주요 정보가 필요합니다.

  • 체중 – 몸이 클수록 작은 몸보다 알코올이 더 많이 희석될 수 있기 때문입니다.
  • 생물학적 성별 – 체내 수분 함량 수준이 다르기 때문에 체내 알코올 분포에 영향을 미칩니다.
  • 소비된 알코올 단위의 수 – 각 음료의 알코올 농도가 다르기 때문입니다.

알코올 단위 계산

다른 음료는 그 양과 알코올 농도에 따라 혈류에 다른 양의 알코올을 공급합니다. 이를 표준화하기 위해 알코올 계산 단위는 일반적으로 다음과 같이 수행됩니다.

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

이러한 필드의 가시성은 활성화Elements-함수에서 제어됩니다:

[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의 핵심 계산은calculateAnswer 함수에서 처리됩니다.

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: 이는 소비된 총 알코올 단위를 그램으로 변환합니다(1 단위는 순수 알코올의 약 10g과 동일하므로).
    • weight.valueAsNumber * 1000: 계산 목적으로 체중을 킬로그램에서 그램으로 변환합니다.
    • bodywater.value: 생물학적 성별을 기반으로 한 소수 요소로 알코올이 체내에 분포하는 방식에 영향을 미칩니다(예: 남성의 경우 0.58, 여성의 경우 0.49).
    • 그런 다음 결과에 100을 곱하여 BAC를 백분율로 변환합니다.
  3. 술을 끊는 데 걸리는 시간 추정: hourToSober = (currentBAC / alcoholMetabolismRate).toFixed(1);

    • 현재 BAC를 대사율로 나누어 BAC가 0에 도달하는 데 필요한 시간을 추정합니다.
  4. 합법적인 운전 상태 확인: canDrive = currentBAC

    • 현재BAC를 선택한 법적 BAC 한도와 비교합니다. 현재 BAC가 한도 내에 있으면 사용자는 "운전하기에 적합한" 것으로 간주됩니다. 그렇지 않으면 그렇지 않습니다.

calculateAnswer 기능은 이 값을 현재 BAC, 술에 취하기까지의 시간, 사용자가 운전하기에 적합한지 여부를 보여주는 메시지로 결합합니다.


… 이것으로 이 튜토리얼을 마칩니다. 원한다면 CodePen을 자유롭게 실험해 보십시오. 아마도 어린이에게 더 친숙한 UX를 만들 수도 있을 것입니다. 이 도구는 추정치를 제공하며 각 음료를 마신 시간과 같은 요소를 고려하지 않는다는 점을 기억하세요. 그리고 명심하세요, 그것은 술에 취하지 않은 사람들이 사용할 가능성이 가장 높습니다!


데모


DALL·E의 표지, 프롬프트에서: 1000x420px로 자를 수 있는 이미지로 초기 디즈니 및 컵헤드와 유사한 만화 스타일로 음주 자동차를 생성합니다.

릴리스 선언문 이 글은 https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1에서 복제되었습니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3