Lernspiel 2 Brüche
addieren (funktioniert unter Xorg aber nicht
unter Wayland)
Die Ausführungen der
vorherigen Seiten über Programmfenster werden hier weitergeführt. Hier wird ein Lernspiel zur Addition von zwei Brüchen aufgeschrieben. Dazu das folgende Info: |
Beim Aufruf des script wird die Aufgabenstellung angezeigt. |
Es werden 4 zufällige Zahlen zwischen 1 und 50 erzeugt. Man kann
einen Taschenrechner benutzen, die Multiplikation zweistelliger Zahlen
braucht man nicht im Kopf durchzuführen. Es gibt eine Schaltfläche um die Lösung und einen Rechenweg 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/BruchZWEI.sh |
Eingabe in den Editor |
#!/bin/bash Uu=$(whoami) gcd() { ! (( $1 % $2 )) && echo $2 || gcd $2 $(( $1 % $2 )); } aA=9 while (( aA == 9 )) do zZ=$(seq 50 | sort -R) zZa=$(echo "$zZ" | head -n 10 | tail -n 1) zZb=$(echo "$zZ" | head -n 20 | tail -n 1) zZc=$(echo "$zZ" | head -n 30 | tail -n 1) zZe=$(echo "$zZ" | head -n 40 | tail -n 1) if (( zZa < zZb )); then rTW=$zZa rNW=$zZb else rTW=$zZb rNW=$zZa fi if (( zZc < zZe )); then sTW=$zZc sNW=$zZe else sTW=$zZe sNW=$zZc fi rT=$(( rTW/$(gcd $rTW $rNW) )) rN=$(( rNW/$(gcd $rTW $rNW) )) sT=$(( sTW/$(gcd $sTW $sNW) )) sN=$(( sNW/$(gcd $sTW $sNW) )) Aufg=$(echo $rTW/$rNW + $sTW/$sNW) yad --title "ony" --picture --geometry=300x400+360+160 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$Uu/Bla/dea62-20.gif & sleep 0.3s; GTK_THEME=Adwaita-dark yad --title "faq" --geometry=220x140+400+195 --undecorated --no-buttons --borders=0 --on-top --justify=center --text-info --back='#C6D8E6' --fore=black --fontname="Monospace bold 18" <<<$(echo -e "\nBerechne\n $Aufg") & sleep 0.1s; aT=$(GTK_THEME=Adwaita-dark yad --title "but" --geometry=220x60+400+380 --on-top --no-buttons --undecorated --columns="1" --form --field='!/home/'"$Uu"'/Bla/dea62-02.png!BEENDEN:BTN' ' bash -c "echo 5 ; wmctrl -F -c but; wmctrl -F -c faq; wmctrl -F -c ony" ' --field='!/home/'"$Uu"'/Bla/dea62-03.png!Loesung:BTN' ' bash -c "echo 9 ; wmctrl -F -c but; wmctrl -F -c faq; wmctrl -F -c ony" ') Ax=$(echo $aT) Az=$(echo $aT) if (( Az == 5 )) ; then exit fi hN=$(( rN*sN/$(gcd $rN $sN) )) zU=$( echo $rT\x$(( sN/$(gcd $rN $sN) ))+$sT\x$(( rN/$(gcd $rN $sN) )) ) zV=$(( $rT*$(( sN/$(gcd $rN $sN) ))+$sT*$(( rN/$(gcd $rN $sN) )) )) rNN=$(factor $rN | cut -f1 -d" " --complement | sed s'/ /x/g') sNN=$(factor $sN | cut -f1 -d" " --complement | sed s'/ /x/g') hNN=$(factor $hN | cut -f1 -d" " --complement | sed s'/ /x/g') zVV=$(factor $zV | cut -f1 -d" " --complement | sed s'/ /x/g') aIa=$(echo -e "$Aufg = $(( zV/$(gcd $zV $hN) ))/$(( hN/$(gcd $zV $hN) ))\nRechenweg\nKürzen der einzelnen Brüche\n = $rT/$rN + $sT/$sN\nNenner 1.Bruch $rN =$rNN\nNenner 2.Bruch $sN =$sNN\nHauptnenner $hN =$hNN\nErgebnis Zähler\n $zU = $zV =$zVV") yad --title "any" --picture --geometry=780x400+160+160 --no-focus --no-buttons --undecorated --borders=0 --filename=/home/$Uu/Bla/dea62-50.gif & sleep 0.2s; GTK_THEME=Adwaita-dark yad --title "haq" --geometry=700x270+200+200 --undecorated --no-buttons --borders=0 --on-top --justify=center --text-info --back='#C6D8E6' --fore=black --fontname=" Monospace bold 16" <<<"$aIa" & sleep 0.1s; aT=$(GTK_THEME=Adwaita-dark yad --title "xut" --geometry=400x60+360+480 --on-top --no-buttons --undecorated --columns="2" --form --field='!/home/'"$Uu"'/Bla/dea62-02.png!BEENDEN:BTN' ' bash -c "echo 5 ; wmctrl -F -c haq; sleep 0.1s; wmctrl -F -c any; sleep 0.1s; wmctrl -F -c xut" ' --field='!/home/'"$Uu"'/Bla/dea62-04.png!Aufgabe:BTN' ' bash -c "echo 9 ; wmctrl -F -c haq; sleep 0.1s; wmctrl -F -c any; sleep 0.1s; wmctrl -F -c xut" ') Ax=$(echo $aT) aA=$(echo $aT) done |
Nun muß man das script ausführbar machen. |
chmod +x ~/Bla/BruchZWEI.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. |