Lernspiel Gleichung (funktioniert unter Xorg aber nicht
unter Wayland)
Die Ausführungen der
vorherigen Seiten über Programmfenster werden hier weitergeführt. Das folgende Lernspiel bezieht sich auf lineare Gleichungen mit einer Unbekannten x. Eine bestimmte Form wird als Aufgabentyp zugrundegelegt. Dazu werden 6 zufällige ganzen Zahlen zwischen -12 und +12 erzeugt. Beim Aufruf des script wird die Aufgabenstellung angezeigt. |
Da zum Lösen der Aufgabe ein klein wenig Zeit gebraucht wird gibt es kein Zeitfenster zum Ausrechnen. Es gibt eine Schaltfläche um die Lösung anzuzeigen |
Nun kann man entscheiden ob man eine zufällige neue Aufgabe des
gleichen Typs haben will
oder das Spiel beenden will. In der Regel gibt es natürlich eine Lösung. Das script wird wieder in dem Ordner ~/Bla abgelegt: |
nano ~/Bla/lineareGLEICHUNG.sh |
Eingabe in den Editor |
#!/bin/bash aA=9 while (( $aA == 9 )) do aXa=$(echo $(($RANDOM % 25 - 12)) ) aXb=$(echo $(($RANDOM % 25 - 12)) ) aAa=$(echo $(($RANDOM % 25 - 12)) ) aAb=$(echo $(($RANDOM % 25 - 12)) ) aAc=$(echo $(($RANDOM % 25 - 12)) ) aAd=$(echo $(($RANDOM % 25 - 12)) ) aGa=$( echo "${aAa}(${aXa}x+$aAb)=${aAc}(${aXb}x+$aAd)" | sed 's/+-/-/g' ) yad --title "ony" --picture --geometry=778x378+161+161 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$USER/Bla/dea60-66.gif & sleep 0.1s; GTK_THEME=Adwaita-dark yad --title "faq" --geometry=700x140+200+199 --undecorated --no-buttons --borders=0 --on-top --justify=center --text-info --back='#CA628B' --fore=black --fontname="Monospace bold 30" <<<$(echo -e "\n $aGa") & yad --title "prt" --geometry=778x26+161+539 --on-top --undecorated --button="Spiel beenden":5 --button="Lösung anzeigen":9 --buttons-layout=spread Az=$? wmctrl -F -c prt sleep 0.1s; wmctrl -F -c faq sleep 0.1s; wmctrl -F -c ony if (( Az == 5 )) ; then exit fi xS=$(( aAa*aXa-aAc*aXb )) zS=$(( aAc*aAd-aAa*aAb )) if (( xS == 0 )); then if (( zS == 0 )); then aIa=$( echo -e "\n$aGa\n\nx läßt sich nicht berechnen \njede Zahl ist Lösung") else aIa=$( echo -e "\n$aGa\n\nx läßt sich nicht berechnen \nes gibt keine Lösungen ") fi else gcd() { ! (( $1 % $2 )) && echo $2 || gcd $2 $(( $1 % $2 )); } ggT=$(gcd $(echo $zS | sed 's/-//') $(echo $xS | sed 's/-//')) Z/N () { if (( $1%$2==0 )); then echo $1/$2 = $(( $1/$2 )); else echo $1/$2 = $(( $1/$2 )) + $(( $1%$2 ))/$2 ; fi; } if (( xS < 0 )); then aIa=$( echo -e "\n$aGa\n\nx=$(Z/N $(( -zS/ggT )) $(( -xS/ggT )) | sed s'#+ -#-#g')") else aIa=$( echo -e "\n$aGa\n\nx=$(Z/N $(( zS/ggT )) $(( xS/ggT )) | sed s'#+ -#-#g')") fi fi yad --title "any" --picture --geometry=778x378+161+161 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$USER/Bla/dea60-69.gif & sleep 0.2s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=700x300+200+199 --undecorated --no-buttons --borders=0 --on-top --justify=center --text-info --back='#CA628B' --fore=black --fontname=" Monospace bold 30" <<<"$aIa" & yad --title "krt" --geometry=778x26+161+539 --on-top --undecorated --button="Spiel beenden":5 --button="Neue Aufgabe":9 --buttons-layout=spread aA=$? wmctrl -F -c krt sleep 0.1s; wmctrl -F -c any sleep 0.1s; wmctrl -F -c haq done |
Nun muß man das script ausführbar machen. |
chmod +x ~/Bla/lineareGLEICHUNG.sh |
Die yad-Fenster verwenden die zwei 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. |