「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 運転できますか?アルコールテスターのコーディング

運転できますか?アルコールテスターのコーディング

2024 年 11 月 18 日に公開
ブラウズ:242

私が住んでいるデンマークでは、残念ながらヨーロッパ内での記録を保持しています。それは、私たちの子供たちが大陸で最もアルコールを大量に飲むということです。このため、青少年の飲酒量を減らし、子供たちにアルコールの影響について教育することに重点が置かれています。

地元の学校向けにアルコール計算ツールを HTML と JavaScript で作成し、アルコールが体にどのような影響を与えるか、また血中アルコール含有量 (BAC) がどのように計算されるかを生徒に示しました。

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 のコア計算は、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

    • この値は、身体が 1 時間あたりに BAC を減少させる平均速度を表します (約 0.015%)。
  2. 現在の BAC の計算: currentBAC = ((total * 10) / ((weight.valueAsNumber * 1000) * parseFloat(bodywater.value))) * 100

    • total * 10: 消費されたアルコールの合計単位をグラムに変換します (1 単位は純アルコール約 10 グラムに等しいため)。
    • weight.valueAsNumber * 1000: 計算のために体重をキログラムからグラムに変換します。
    • bodywater.value: アルコールが体内にどのように分布するかに影響する、生物学的性別に基づく小数係数 (例: 男性の場合は 0.58、女性の場合は 0.49)。
    • 次に、結果に 100 を掛けて、BAC をパーセンテージに変換します。
  3. 断酒までの時間の推定: 断酒時間 = (現在の BAC / アルコール代謝率).toFixed(1);

    • 現在のBACを代謝率で割って、BACがゼロに達するまでに必要な時間を推定します。
  4. 法的な運転ステータスの決定: canDrive = currentBAC

    • 現在の BAC を選択した法定 BAC 制限と比較します。現在の BAC が制限内にある場合、ユーザーは「運転に適している」とみなされます。それ以外の場合は、そうではありません。

calculateAnswer 関数は、これらの値を組み合わせて、現在の BAC、飲酒までの時間、ユーザーが運転に適しているかどうかを示すメッセージを生成します。


…これでこのチュートリアルは終了です。必要に応じて、より子供向けの UX を作成して、CodePen を自由に試してみてください。このツールは推定値を提供するものであり、各飲み物を飲んだ時間などの要因は考慮していないことに注意してください。そして、これはおそらく地味な人によって使用される可能性が高いことに注意してください!


デモ


DALL・E によるカバー、プロンプトから: 初期のディズニーやカップヘッズに似た漫画風のスタイルで酔った車を生成します。画像として 1000x420 ピクセルまでトリミングできます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3