Skip to content
Snippets Groups Projects
Commit 90e0e091 authored by Nikolai Milenko's avatar Nikolai Milenko :grinning:
Browse files

Upload New File

parent 058af3c3
Branches
No related tags found
No related merge requests found
#!/bin/bash
declare -A deck=(
["Zwei"]=2 ["Drei"]=3 ["Vier"]=4 ["Fünf"]=5 ["Sechs"]=6
["Sieben"]=7 ["Acht"]=8 ["Neun"]=9 ["Zehn"]=10
["Bube"]=10 ["Dame"]=10 ["König"]=10 ["Ass"]=11
)
choice="j"
bilanz=1000
karte_ziehen() {
local keys=(${!deck[@]})
local random_index=$((RANDOM % ${#keys[@]}))
local card_name=${keys[$random_index]}
local card_value=${deck[$card_name]}
echo "$card_name"
}
update_score() {
local -n cards=$1
local -n score=$2
local -i var=${deck["$3"]}
cards+=("$3")
((score += var))
if [[ $score -gt 21 ]]; then
for i in "${!cards[@]}"; do
if [[ ${cards[i]} == Ass ]]; then
cards[i]="Ass:1"
((score -= 10))
break
fi
done
fi
}
echo -e "\033[34mWillkommen zu Black Jack!\033[0m\n"
while [[ true ]]; do
read -p $'\033[1mMöchten Sie eine Runde spielen? j/n\033[0m ' choice
if [[ $choice != "j" ]]; then
break
fi
if [[ $bilanz -lt 0 ]]; then
echo -e "Leider haben Sie nicht genügend Guthaben für diese Runde."
break
fi
player_score=0
dealer_score=0
declare -a player_cards dealer_cards
einsatz=0
echo -e "\033[34mIhr Kontozustand: $bilanz\033[0m"
read -p $'\n\033[1mWie viel möchten Sie setzen?\033[0m ' einsatz
if [[ $einsatz -gt $bilanz ]]; then
echo -e "\n\033[31mLeider haben Sie nicht genügend Guthaben für diese Runde.\033[0m"
fi
while [[ player_score -lt 21 ]]; do
read -p $'\033[1mMöchten Sie eine Karte ziehen? j/n\033[0m ' choice
if [[ $choice != "j" ]]; then
break
fi
new_card=$(karte_ziehen)
update_score player_cards player_score "$new_card"
echo -e "\n\033[42mGezogene Karte: $new_card\033[0m"
echo -e "\033[3mIhr Punktestand: \033[31m$player_score\033[0m\n"
if [[ $player_score -gt 21 ]]; then
echo -e "\n\033[41mSie haben überzogen! Dealer gewinnt. :(\033[0m"
((bilanz -= einsatz))
exit 0
fi
done
# Dealer zieht Karten
while [[ $dealer_score -lt 17 ]]; do
sleep 2
new_card=$(karte_ziehen)
update_score dealer_cards dealer_score "$new_card"
echo -e "\n\033[35mDealer zieht: $new_card\033[0m"
echo -e "\033[3mPunktestand Dealer: \033[31m$dealer_score\033[0m\n"
done
# Ergebnisse auswerten
echo -e "\033[32mSpieler\033[0m: ${player_cards[*]} \033[3m(Punkte: $player_score)\033[0m"
echo -e "\033[35mDealer\033[0m: ${dealer_cards[*]} \033[3m(Punkte: $dealer_score)\033[0m"
if [[ $player_score -gt 21 ]]; then
echo -e "\033[41mDealer gewinnt! :(\033[0m"
((bilanz -= einsatz))
elif [[ $dealer_score -gt 21 || $player_score -eq 21 && $dealer_score -lt 21 || $player_score -gt $dealer_score ]]; then
echo -e "\033[42mSpieler gewinnt! :)\033[0m"
((bilanz += einsatz))
elif [[ $dealer_score -eq $player_score ]]; then
echo -e "\033[46mUnentschieden! :| \033[0m"
else
echo -e "\033[41mDealer gewinnt! :(\033[0m"
((bilanz -= einsatz))
fi
done
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment