„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Kann ich fahren? Codierung eines Alkoholtesters

Kann ich fahren? Codierung eines Alkoholtesters

Veröffentlicht am 18.11.2024
Durchsuche:596

In Dänemark, wo ich lebe, halten wir leider einen Rekord innerhalb Europas: Unsere Kinder sind die stärksten Alkoholtrinker auf dem Kontinent. Aus diesem Grund liegt ein starker Fokus auf der Reduzierung des Alkoholkonsums bei Jugendlichen und der Aufklärung von Kindern über die Auswirkungen von Alkohol.

Ich habe für unsere örtliche Schule einen Alkoholrechner in HTML und JavaScript zusammengestellt, um Schülern zu zeigen, wie sich Alkohol auf den Körper auswirkt und wie der Blutalkoholgehalt (BAC) berechnet wird.

Wie wird der BAC berechnet?

Um den BAC oder „Promille“ zu schätzen, benötigen Sie ein paar wichtige Informationen:

  • Ihr Körpergewicht – da ein größerer Körper Alkohol stärker verdünnen kann als ein kleinerer.
  • Biologisches Geschlecht – aufgrund unterschiedlicher Körperwassergehalte, die sich auf die Alkoholverteilung im Körper auswirken.
  • Die Anzahl der konsumierten Alkoholeinheiten – da jede Getränkeart eine andere Alkoholkonzentration hat.

Berechnen von Alkoholeinheiten

Verschiedene Getränke tragen je nach Menge und Alkoholkonzentration unterschiedlich viel Alkohol zu Ihrem Blutkreislauf bei. Um dies zu standardisieren, erfolgt die Berechnung der Alkoholeinheit in der Regel wie folgt:

volume (cl) * alcohol percentage * 0.8 / 120

Struktur

Die gesamte „App“ ist als mit organisierten Feldsätzen und benannten Steuerelementen strukturiert, sodass die erforderlichen Elemente einfach extrahiert werden können mit:

const { add, addbeverage, etc. } = app.elements;

Da BAC-Grenzwerte je nach Region variieren, müssen wir zunächst eine Region auswählen, den Gewichtsregler anpassen und ein biologisches Geschlecht auswählen:

Can I Drive? Coding an Alcohol Tester


Als nächstes können wir mit dem Hinzufügen von Getränken beginnen:

Can I Drive? Coding an Alcohol Tester

Dies ist ein einfacher , bei dem die einzelnen Felder für Einheiten, Volumen und Alkoholprozentsatz deaktiviert (und über CSS ausgeblendet) sind, bis Sie eine Auswahl aus der Getränkeauswahl treffen:

Can I Drive? Coding an Alcohol Tester

Die Sichtbarkeit dieser Felder wird über eine enableElements-Funktion gesteuert:

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

Wenn wir dann das Getränk hinzufügen, wird eine Liste der konsumierten Getränke erstellt und der BAC, die geschätzten Stunden bis zum Ausnüchtern usw. berechnet:

Can I Drive? Coding an Alcohol Tester

Sie können dann weiterhin weitere Getränke hinzufügen und der BAC wird entsprechend aktualisiert:

Can I Drive? Coding an Alcohol Tester

Es war sehr überraschend für mich zu erfahren, dass der gesetzliche BAC in den USA viermal höher ist als der in Schweden oder Norwegen!

Mit anderen Worten: In Schweden könnten Sie Ihren Führerschein verlieren, wenn Sie eine Menge trinken, die in den USA gesetzlich zulässig wäre


Aufschlüsselung der BAC-Berechnung

Die Kernberechnung für BAC wird in der Funktion „calculeAnswer“ durchgeführt:

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 



Lassen Sie es uns aufschlüsseln:

  1. Alkoholstoffwechselrate: AlcoholMetabolismRate = 0,015

    • Dieser Wert stellt die durchschnittliche Rate dar, mit der der Körper die BAC pro Stunde reduziert (ca. 0,015 %).
  2. Berechnung des aktuellen BAC: currentBAC = ((total * 10) / ((weight.valueAsNumber * 1000) * parseFloat(bodywater.value))) * 100

    • total * 10: Dies rechnet die insgesamt konsumierten Alkoholeinheiten in Gramm um (da eine Einheit etwa 10 Gramm reinen Alkohols entspricht).
    • weight.valueAsNumber * 1000: Konvertiert das Körpergewicht zu Berechnungszwecken von Kilogramm in Gramm.
    • bodywater.value: Ein auf dem biologischen Geschlecht basierender Dezimalfaktor, der die Verteilung von Alkohol im Körper beeinflusst (z. B. 0,58 für Männer, 0,49 für Frauen).
    • Das Ergebnis wird dann mit 100 multipliziert, um den BAC in einen Prozentsatz umzuwandeln.
  3. Schätzung der Stunden bis zur Nüchternheit: hoursToSober = (currentBAC / AlcoholMetabolismRate).toFixed(1);

    • Dividiert den aktuellen BAC durch die Stoffwechselrate, um die Zeit abzuschätzen, die benötigt wird, bis der BAC Null erreicht.
  4. Bestimmung des legalen Fahrstatus: canDrive = currentBAC

    • Vergleicht den aktuellen BAC mit dem ausgewählten gesetzlichen BAC-Grenzwert. Liegt der aktuelle BAC innerhalb des Grenzwertes, gilt der Nutzer als „fahrtauglich“; andernfalls sind sie es nicht.

Die Funktion „calculeAnswer“ kombiniert diese Werte dann zu einer Nachricht, die den aktuellen Blutzuckerspiegel, die Stunden bis zur Nüchternheit und die Fahrtauglichkeit des Benutzers anzeigt.


… Und damit ist dieses Tutorial abgeschlossen. Wenn Sie möchten, können Sie gerne mit dem CodePen experimentieren – vielleicht indem Sie eine kinderfreundlichere Benutzeroberfläche schaffen. Denken Sie daran, dass dieses Tool eine Schätzung liefert und Faktoren wie die Zeit, zu der Sie jedes Getränk konsumiert haben, nicht berücksichtigt. Und denken Sie daran, dass es höchstwahrscheinlich von nüchternen Menschen verwendet wird!


Demo


Cover von DALL·E, aus der Eingabeaufforderung: Generieren Sie ein betrunkenes Auto in einem Cartoon-Stil, ähnlich dem frühen Disney und Cupheads, als Bild, das ich auf 1000 x 420 Pixel zuschneiden kann.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3