zur Übersicht nächste Seite

Lernspiel Wasserstand

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.


Wasserstände von Behältern sind ein interessantes Thema. Dazu gehören auch ein Schwimmbad oder ein Stausee wenn ein Hochwasser bevorsteht. Auch Heizöltanks, Benzindepots von Tankstellen oder Industrieflüssigkeiten gehören dazu. Es wird hier ein Lernspiel mit zwei Behältern aufgeschrieben und als Einheit LITER gewählt. Andere Einheiten sind möglich, z.B. ml. Oder auch kg, dann könnte der große Behälter für das maximale Transportgewicht eines LKW stehen und der kleine Behälter für ein weiteres aufzuladendes Gewicht.
Die Aufgabenstellung wird angezeigt:

Man kann einen Taschenrechner verwenden. Für das Kürzen des Bruches kann man das script von der Seite
Debian Gnome Bruchrechnung
verwenden. Man kann damit auch berechnen
1/2 + 43344/134400 .
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/spielWASSERSTAND.sh
Eingabe in den Editor
#!/bin/bash

Uu=$(whoami)
gcd() { ! (( $1 % $2 )) && echo $2 || gcd $2 $(( $1 % $2 )); }

aA=9
while (( $aA == 9 ))
do

nN=$(echo -e "2\n3\n4\n6\n7\n8\n12\n14\n21" | sort -R | head -n 4 | tail -n 1)
zZ=$(($RANDOM % ((nN-1)) +1))
zZZ=$(( zZ/$(gcd $zZ $nN) ))
nNN=$(( nN/$(gcd $zZ $nN) ))
grBE=$(echo $zZZ/$nNN )
klBE=$((504*(($RANDOM % 100 +1)) ))

stTX=$( echo -e "Der größere Behälter ist zu $grBE gefüllt und kann insgesamt 134400 Liter aufnehmen. Der kleinere Behälter enthält $klBE Liter und soll dem größeren Behälter zugefüllt werden.\n\nZu welchem Bruchteil ist danach der größere Behälter gefüllt?\n\nZu wieviel % , auf zwei Stellen nach dem Komma gerundet, ist der größere Behälter danach gefüllt?")

grH=$((252*zZZ/nNN))
klH=$((189*klBE/50400))

convert -size 140x320 canvas:#C4FF88 \( -size 60x252 canvas:#C4FF88 -geometry +10+10 -bordercolor black -border 2 \) -composite \( -size 30x189 canvas:#C4FF88 -geometry +96+10 -bordercolor black -border 2 \) -composite \( -size 64x2 canvas:#C4FF88 -geometry +10+264 \) -composite \( -size 34x2 canvas:#C4FF88 -geometry +96+201 \) -composite \( -size 60x$grH canvas:#6F97FF -geometry +12+12 \) -composite \( -size 30x$klH canvas:#6F97FF -geometry +98+12 \) -composite -flip ~/Bla/tmpUHRtmp.png

sleep 0.1s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=600x320+100+100 --undecorated --image /home/$Uu/Bla/tmpUHRtmp.png --borders=4 --on-top --button='!/home/'"$Uu"'/Bla/dea66-03.png!BEENDEN':6 --button='!/home/'"$Uu"'/Bla/dea66-04.png!ERGEBNIS':9 --wrap --justify=center --text-info --back='#F1FFDB' --fore=black --fontname=" Monospace bold 14" <<<"$stTX"

Az=$?

if (( Az == 6 )) ; then
exit
fi

grBEL=$((134400*zZZ/nNN))
grBEG=$((grBEL+klBE))
klBEG=$((grBEG-134400))

if (( klBEG > 0 )) ; then
grH=252
klH=$((189*klBEG/50400))

convert -size 140x300 canvas:#C4FF88 \( -size 60x252 canvas:#C4FF88 -geometry +10+10 -bordercolor black -border 2 \) -composite \( -size 30x189 canvas:#C4FF88 -geometry +96+10 -bordercolor black -border 2 \) -composite \( -size 64x2 canvas:#C4FF88 -geometry +10+264 \) -composite \( -size 34x2 canvas:#C4FF88 -geometry +96+201 \) -composite \( -size 60x$grH canvas:#6F97FF -geometry +12+12 \) -composite \( -size 30x$klH canvas:#6F97FF -geometry +98+12 \) -composite -flip ~/Bla/tmpUHRtmp.png

stTX=$( echo -e "\n\nDer größere Behälter ist vollständig gefüllt.\n\nDer kleinere Behälter enthält noch $klBEG Liter.\n\n")

sleep 0.1s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=600x300+100+100 --undecorated --image /home/$Uu/Bla/tmpUHRtmp.png --borders=4 --on-top --button='!/home/'"$Uu"'/Bla/dea66-03.png!BEENDEN':6 --button='!/home/'"$Uu"'/Bla/dea66-02.png!AUFGABE':9 --wrap --justify=center --text-info --back='#F1FFDB' --fore=black --fontname=" Monospace bold 18" <<<"$stTX"

else
grH=$((252*grBEG/134400))
convert -size 140x300 canvas:#C4FF88 \( -size 60x252 canvas:#C4FF88 -geometry +10+10 -bordercolor black -border 2 \) -composite \( -size 30x189 canvas:#C4FF88 -geometry +96+10 -bordercolor black -border 2 \) -composite \( -size 64x2 canvas:#C4FF88 -geometry +10+264 \) -composite \( -size 34x2 canvas:#C4FF88 -geometry +96+201 \) -composite \( -size 60x$grH canvas:#6F97FF -geometry +12+12 \) -composite -flip ~/Bla/tmpUHRtmp.png

grBEbruch=$(echo $(( grBEG/$(gcd $grBEG 134400) ))/$(( 134400/$(gcd $grBEG 134400) )) )
grBEproz=$(echo "scale=3; 100*$grBEbruch + 0.005" | bc -ql | sed -r 's/.{1}$//' | sed 's/\./,/g')

stTX=$( echo -e "\n\nDer größere Behälter ist zu $grBEbruch gefüllt.\n\nDer größere Behälter ist zu $grBEproz % gefüllt.\n\n")

sleep 0.1s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=600x300+100+100 --undecorated --image /home/$Uu/Bla/tmpUHRtmp.png --borders=4 --on-top --button='!/home/'"$Uu"'/Bla/dea66-03.png!BEENDEN':6 --button='!/home/'"$Uu"'/Bla/dea66-02.png!AUFGABE':9 --wrap --justify=center --text-info --back='#F1FFDB' --fore=black --fontname=" Monospace bold 18" <<<"$stTX"

fi

aA=$?

done
Nun muß man das script ausführbar machen.
chmod +x ~/Bla/spielWASSERSTAND.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.






Es wird in dem Ordner ~/Bla ein temporäres Bild
tmpUHRtmp.png
erzeugt. Dieses wird bei jedem Klicken auf
eine Schaltfläche
überschrieben und bleibt am Ende des Spieles noch übrig. Falls es stört kann man im script am Schluß noch eine Zeile anfügen um dieses Bild zu löschen.


zur Übersicht nächste Seite

Datenschutzerklärung
Impressum