#!/bin/bash clear echo Hra na posledniho stickeeze echo --------------------------- echo "Tato textova a logicka hra vznikla pro Juditu, která přinesla tento algoritmus ze skoly." echo "PhDr. Mgr. Jeroným Klimeš, Ph.D. 2020-01-20" echo "http://www.klimes.us" echo "Ulozte jako textovy soubor \"stickees.sh\"" echo "nastavte spustitelnost prikazem:" echo "chmod +x stickees.sh" echo "a spustte ve terminalu, jak pragma vyse napovida, nejlepe v bash, cili Lubuntu, Mint, Debian, KDE ap. čili Linux!" echo function RandomBetween { # a random number ($RESULT) the is in between $FLOOR and $CEILING (inclusive)"; FLOOR=$1 CEILING=$2 RANGE=$(( $CEILING - $FLOOR + 1 )); RESULT=$RANDOM let "RESULT %= $RANGE"; RESULT=$(($RESULT+$FLOOR)); echo -n $RESULT } kaminky=$( RandomBetween 10 20 ) echo V osudi je $kaminky kaminku. echo V kazdem tahu si kazdy ze dvou hracu musi vzit jeden az tri kaminky. echo Prohrava ten, kdo si vezme posledni kaminek. echo echo Vyberte si, jak chcete inteligentniho protivnika. options=("Blbeček" "Průměr" "Karel Atari Sinclair ZX Spectrum IQ151") PS3="Tak co? " select opt in "${options[@]}" do [[ "$opt" == "" ]] && opt=$REPLY #když nenajde v optionech hodi tam natvrdo REPLY case $opt in "1" | "+" | "Blbeček") echo " Jo, to možná dáte. Ja bych Vam ani nic jiného neradil." obtiznost=1 break ;; "2" | "ě" | "Průměr") echo " COZE??? Ale připravte se, že se pořádně zapotíte!" obtiznost=2 break ;; "3" | "š" | "Karel Atari Sinclair ZX Spectrum IQ151") echo " Jako ftip dobry. Ale je to marné! Byt vami bych to ani nezkoušel, no ale jak myslíte." obtiznost=3 break ;; *) echo " $REPLY, $REPLY... Co jako?";; esac done echo read -p "Hodime si korunou, kdo zacina..." if [ $RANDOM -gt 16383 ]; then echo " Zacina pocitac..." zacina=0 else echo " Zacinate Vy!" zacina=1 fi echo function tah_pocitac { echo echo " Pocitac premysli..." case $obtiznost in 1) pocitacbere=$(RandomBetween 1 3);; 2) if [ $RANDOM -gt 16383 ]; then # Nominal range: 0 - 32767 (signed 16-bit integer). pocitacbere=$(( ( $kaminky - 1 ) % 4 )) else pocitacbere=$(RandomBetween 1 3) fi ;; 3) pocitacbere=$(( ( $kaminky - 1 ) % 4 ));; esac if [ $pocitacbere -eq 0 ]; then pocitacbere=$(RandomBetween 1 3); fi case $kaminky in 1) pocitacbere=1;; 2) pocitacbere=1 if [ $obtiznost -eq 1 ]; # proste blbecek then pocitacbere=2 fi ;; 3) pocitacbere=2;; esac kaminky=$(( $kaminky - $pocitacbere )) sleep 2 echo " Pocitac si vzal: $pocitacbere" if [ $kaminky -eq 0 ]; then echo Pocitac prohral na cele care v kole c. $kolo. echo A z toho plyne pouceni: Marcus probus est, quia non pulsat puellam parvam. echo Blahopreji Vam a koncim. exit fi } function tah_hrac { hracbere=9 tockolotoc=0 while [ $hracbere -gt 3 -o $hracbere -lt 1 -o $hracbere -gt $kaminky ]; do if [ $tockolotoc -gt 0 ]; then echo " Ale ne... Tak znova!" echo fi echo " V osudi je kaminku: $kaminky" if [ $kaminky -lt 3 ]; then nanejvys=$kaminky else nanejvys=3 fi echo " Nanejvys si muzete vzit: $nanejvys" echo " Kolik kaminku si tedy berete Vy? " read hracbere hracbere=$(( $hracbere + 0 )) tockolotoc+=1 done kaminky=$(( $kaminky - $hracbere )) echo " Vzali jste si: $hracbere a v osudi zustalo $kaminky" if [ $kaminky -eq 0 ]; then echo Prohrali jste na cele care v kole c. $kolo. echo A z toho plyne pouceni: Marcus improbus est, quia pulsat parvam puellam. echo Blahopreji pocitaci a koncime. exit fi } kolo=1 while [ $kaminky -gt 0 ] do echo Zacina kolo c. $kolo if [ $zacina == 0 ]; then tah_pocitac tah_hrac else tah_hrac tah_pocitac fi echo Po kole c. $kolo je v osudí kaminku: $kaminky. \(Vy:PC $hracbere:$pocitacbere\). echo kolo=$(( $kolo + 1 )) done