10000 mit ChatGPT auswerten lassen

Die Regeln des Würfelspiels 10000 sind im Internet auffindbar. Für gewöhnlich wird zur Auswertung ein Block genommen, darauf eine Tabelle mit den Namen der Spieler geschrieben und dann die Ergebnisse der einzelnen Würfe irgendwie notiert. Ich bin ein Nerd, also will ich das im Terminal haben und weil ich einerseits faul, andererseits aber auch recht neugierig bin, habe ich ChatGPT das notwendige Skript schreiben lassen. Nach zwei Korrekturen ist das hier rausgekommen – und es funzt!

#!/bin/bash

# Funktionsdefinition: Berechne Punkte für das Würfeln eines einzelnen Spielers
# In diesem Fall wird der gesamte Wert als Eingabe genommen
calculate_points() {
    local total_points=$1  # Der gesamte Punktwert eines Durchgangs
    echo $total_points  # Der Gesamtwert wird als Punkte zurückgegeben
}

# Eingabe der Anzahl und Namen der Spieler
echo "Gib die Anzahl der Spieler ein:"
read player_count

declare -A players
declare -A scores

# Namen der Spieler einlesen
for (( i=1; i<=player_count; i++ ))
do
    echo "Gib den Namen des Spielers $i ein:"
    read player_name
    players[$i]=$player_name
    scores[$player_name]=0  # Anfangspunktzahl ist 0
done

# Das Spiel läuft, bis ein Spieler 10.000 Punkte erreicht hat
MAX_POINTS=10000
game_over=false

while [ "$game_over" = false ]; do
    for player_name in "${players[@]}"; do
        if [ "${scores[$player_name]}" -ge "$MAX_POINTS" ]; then
            continue  # Dieser Spieler hat bereits gewonnen, überspringe ihn
        fi

        # Spieler würfelt: Gib den Gesamtwert des Durchgangs ein
        echo "Spieler $player_name, gib den Gesamtwert des geworfenen Wertes ein:"
        read total_roll_value  # Liest den Gesamtwert des Wurfs

        # Punkte für diese Runde berechnen
        points=$(calculate_points "$total_roll_value")

        # Punkte zum bisherigen Punktestand hinzufügen
        scores[$player_name]=$((scores[$player_name] + points))

        # Zwischenergebnis ausgeben
        echo "Spieler $player_name hat jetzt ${scores[$player_name]} Punkte."

        # Überprüfen, ob der Spieler 10000 Punkte erreicht hat
        if [ "${scores[$player_name]}" -ge "$MAX_POINTS" ]; then
            echo "Spieler $player_name hat das Spiel gewonnen mit ${scores[$player_name]} Punkten!"
            game_over=true
            break
        fi
    done
done

# Endergebnis ausgeben
echo "Endergebnisse:"
for player_name in "${!scores[@]}"; do
    echo "$player_name: ${scores[$player_name]} Punkte"
done