Die Ausführungen der
vorherigen Seiten über Programmfenster werden hier weitergeführt. 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 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 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-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. |