zur Übersicht nächste Seite

Lernspiel Bremsweg
(funktioniert unter Xorg aber nicht unter Wayland)

Die Ausführungen der vorherigen Seiten über Programmfenster werden hier weitergeführt.
Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste. 
Oder man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Editors ein.  
Dann drückt man zum Abspeichern gleichzeitig Strg und O 
dann drückt man die Eingabetaste um den Dateinamen zu bestätigen 
dann drückt man zum Verlassen des Editors gleichzeitig Strg und X.


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.



zur Übersicht nächste Seite

Datenschutzerklärung
Impressum