Lernspiel Bremsweg (funktioniert unter Xorg aber nicht
unter Wayland)
(funktioniert unter Debian 11 aber nicht unter Debian 12) Die Ausführungen der
vorherigen Seiten über Programmfenster werden hier weitergeführt. Bewegt sich ein Objekt mit konstanter Geschwindigkeit so ist die zurückgelegte Wegstrecke = Geschwindigkeit x Zeit Physikalische Größen bestehen oft aus einer Zahl und einer Dimension. Auf dieser Seite gilt die Dimension bei der Zeit ist Sekunden (z.B. 12 s) s bedeuted die Zahl bei Zeit (z.B. 12) die Dimension bei Geschwindigkeit ist Kilometer pro Stunde v bedeuted die Zahl bei Geschwindigkeit (Anzeige auf Tacho) Ist also v die Zahl auf dem Tacho eines Autos, so fährt das Auto in 1/2 Sekunde den Weg |
Bei einer Geschwindigkeit von 36 km/h also v=36 (Tacho-Anzeige) fährt das Auto in 1/2 Sekunde (ein kurzer Blick zur Seite) 5 m weit. Bei einer Geschwindigkeit von 126 km/h also v=126 (Tacho-Anzeige) fährt das Auto in 1 Sekunde (Schrecksekunde) 35 m weit. Bei dem folgenden Lernspiel soll der Anhalteweg eines PKW bestimmt werden. Dazu wird die Reaktionszeit gemessen und bei vorgegebener Geschwindigkeit zunächst der zurückgelegte ungebremste Weg bestimmt (Reaktionsweg) und anschließend der Bremsweg bei voll durchgetretener Bremse (Gefahrenbremsung). Dieser Bremsweg berechnet sich durch |
Auf dieser Seite gilt die Dimension bei Bremsverzögerung a ist Meter pro Sekundenquadrat a bedeuted die positive Zahl bei Bremsverzögerung (z.B. 5) Es gilt nach Straßenverkehrs-Zulassungs-Ordnung (StVZO) § 41 : Kraftfahrzeuge müssen mindestens eine Bremsverzögerung von 5,0 m/s² erreichen. Bei nasser Straße kann man diese Bremsverzögerung von ca. 5m/s² annehmen (a=5). Bei trockener Straße kann man eine Bremsverzögerung von 7m/s² annehmen (a=7). Andere Straßenverhältnisse - Schnee, Eis, starker Regen, rutschige Fahrbahn durch Verschmutzung - führen teilweise zu deutlich niedrigeren Werten. Daher wird bei dieser Rechnung die Situation in der Realität nur näherungsweise erfaßt, aber besser erfaßt als durch die Faustformel in der Fahrschule (die jedoch leichter im Kopf zu berechnen ist). Beim Aufruf des script wird ein Info ausgegeben: |
Beim Klicken auf Spiel beginnen erscheint nach kurzer Verzögerung irgendwo auf dem Bildschirm eine Schaltfläche mit der Aufschrift BREMSEN Man soll mit der Maus zu dieser Schaltfläche fahren und darauf Klicken. Dadurch simuliert man eine Reaktionszeit. Es erscheint danach das Aufgabenfenster: |
Man kann einen Taschenrechner verwenden. Es gibt eine Schaltfläche um das Ergebnis anzuzeigen |
Nun kann man entscheiden ob man eine zufällige neue Aufgabe haben will
oder das Spiel beenden will. Das script wird wieder in dem Ordner ~/Bla abgelegt: |
nano ~/Bla/spielBREMSWEG.sh |
Eingabe in den Editor |
#!/bin/bash Uu=$(whoami) BBreit=$(xdpyinfo | grep 'dimensions' |tr -s ' ' | sed 's/ /#/g' | sed 's/x/#/g' | cut -f 3 -d '#') BHoch=$(xdpyinfo | grep 'dimensions' |tr -s ' ' | sed 's/ /#/g' | sed 's/x/#/g' | cut -f 4 -d '#') aA=9 while (( $aA == 9 )) do sS=$(zenity --scale --text "Ein PKW fährt mit einer konstanten Geschwindigkeit.\nDiese Geschwindigkeit kann mit dem Schieberegler\neingestellt werden. Es erscheint eine Aufforderung\n\nBremsen\n\nSie sollen auf diese Schaltfläche klicken\nund damit Ihre Reaktionszeit messen.\nAnschließend soll der Anhalteweg ausgerechnet werden." --value=50 --min-value=20 --max-value=180 --step=1 --title "Geschwindigkeit einstellen" --ok-label "Spiel beginnen" --cancel-label "Spiel beenden") sF=$? if (( sF == 1 )); then exit; fi Bpos=$(echo $(($RANDOM % 4)) ) if (( $Bpos == 1 )); then Fh=$(( BHoch -120)) ; Fb=50 ; fi if (( $Bpos == 2 )); then Fh=$(( BHoch -120)) ; Fb=$(( BBreit -250)) ; fi if (( $Bpos == 3 )); then Fh=50 ; Fb=$(( BBreit -250)) ; fi if (( $Bpos == 0 )); then Fh=50 ; Fb=50 ; fi Binfo=$(echo $(($RANDOM % 6)) ) if (( $Binfo == 1 )); then Btxt=$(echo -e "keine Fahrzeuge\nim Rückspiegel zu sehen") ; fi if (( $Binfo == 2 )); then Btxt=$(echo -e "kein Gegenverkehr\nvorhanden") ; fi if (( $Binfo == 3 )); then Btxt=$(echo -e "im Autoradio wird\nein toller Song gespielt") ; fi if (( $Binfo == 0 )); then Btxt=$(echo -e "am Straßenrand stehen\n2 Fußgänger") ; fi if (( $Binfo == 4 )); then Btxt=$(echo -e "Der Benzintank\nist noch halb gefüllt") ; fi if (( $Binfo == 5 )); then Btxt=$(echo -e "Das Navi zeigt:\nweiterhin geradeaus fahren") ; fi yad --center --no-focus --undecorated --borders=0 --width=500 --height=80 --no-buttons --justify=center --text-info --timeout=1 --back='#FFAC17' --fore=black --fontname="Monospace bold 20" <<<$Btxt tT="$(time ( yad --no-escape --title "haq" --geometry=200x69+$Fb+$Fh --undecorated --on-top --timeout=6 --button='!/home/'"$Uu"'/Bla/dea67-45.png!KLICKEN':6 ) 2>&1 1>/dev/null )" Az=$? if (( Az > 6 )) ; then yad --text-info --center --width=400 --height=110 --timeout=2 --back=red <<<$(echo -e "Zeitüberschreitung!\nSoll Abschleppwagen\nangefordert werden?") continue fi tTR=$(echo "$tT" | grep real | cut -f 2 -d 'm' | sed 's/s//g') yad --title "ony" --picture --geometry=780x500+160+160 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$Uu/Bla/dea67-09.gif & sleep 0.2s; GTK_THEME=Adwaita-dark yad --title "faq" --geometry=700x140+200+240 --no-focus --undecorated --no-buttons --borders=0 --justify=center --text-info --back='#BAECDB' --fore=black --fontname="Monospace bold 16" <<<$(echo -e "\nIhre Reaktionszeit = $tTR Sekunden\nGeschwindigkeit des PKW = $sS km/h\nBerechne Anhalteweg = Reaktionsweg + Bremsweg") & aT=$(GTK_THEME=Adwaita-dark yad --title "prt" --geometry=700x60+200+380 --on-top --no-buttons --undecorated --columns="3" --form --field='!/home/'"$Uu"'/Bla/dea67-02.png!BEENDEN:BTN' ' bash -c "echo 5 ; wmctrl -F -c ony; sleep 0.1s; wmctrl -F -c faq; sleep 0.1s; wmctrl -F -c prt" ' --field='!/home/'"$Uu"'/Bla/dea67-18.jpg!:BTN' '' --field='!/home/'"$Uu"'/Bla/dea67-03.png!Loesung:BTN' ' bash -c "echo 9 ; wmctrl -F -c ony; sleep 0.1s; wmctrl -F -c faq; sleep 0.1s; wmctrl -F -c prt" ') Ax=$(echo $aT) Az=$(echo $aT) if (( Az == 5 )) ; then exit fi wR=$(( ($(echo $tTR*1000/1 | sed 's/,/\./g' | bc)*sS*5/18 + 500)/1000 )) wBN=$(( (sS*sS*25+1620)/3240 )) wBT=$(( (sS*sS*25+2268)/4536 )) wAN=$(( wBN+wR )) wAT=$(( wBT+wR )) erG=$(echo -e "\nAnhalteweg nasse Straße = $wAN m \nAnhalteweg trockene Straße = $wAT m\n\nDetails\nReaktionsweg = $wR m \nBremsweg nasse Straße = $wBN m \nBremsweg trockene Straße = $wBT m ") yad --title "any" --picture --geometry=780x500+160+160 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$Uu/Bla/dea67-08.png & sleep 0.2s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=700x340+200+240 --undecorated --no-buttons --borders=0 --justify=center --text-info --back='#BAECDB' --fore=black --fontname="Monospace bold 16" <<<$erG & sleep 0.2s; aW=$(GTK_THEME=Adwaita-dark yad --title "krt" --geometry=700x60+200+480 --on-top --no-buttons --undecorated --columns="3" --form --field='!/home/'"$Uu"'/Bla/dea67-02.png!BEENDEN:BTN' ' bash -c "echo 5 ; wmctrl -F -c any; sleep 0.1s; wmctrl -F -c haq; sleep 0.1s; wmctrl -F -c krt" ' --field='!/home/'"$Uu"'/Bla/dea67-18.jpg!:BTN' '' --field='!/home/'"$Uu"'/Bla/dea67-05.png!Aufgabe:BTN' ' bash -c "echo 9 ; wmctrl -F -c any; sleep 0.1s; wmctrl -F -c haq; sleep 0.1s; wmctrl -F -c krt" ') Ax=$(echo $aW) aA=$(echo $aW) done |
Nun muß man das script ausführbar machen. |
chmod +x ~/Bla/spielBREMSWEG.sh |
Die yad-Fenster verwenden die unten gezeigten Bild-Dateien die Sie auf Ihren Computer kopieren müssen. Diese Bild-Dateien müssen in dem Ordner liegen auf den das script verweist. Hier ist es der Ordner ~/Bla. Ansonsten müssen Sie die Pfade anpassen. |
Sollte ein Info-Bild wie unten angezeigt werden so bedeuted dies daß die CPU zuviel zu tun hat. Man kann auf das Info-Fenster klicken und das Yad-Fenster sichtbar machen. Sollte dies öfters vorkommen so kann man die sleep-Zeiten im script vergrößern damit die CPU etwas durchschnaufen kann. |