#!/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