Not logged inCSS-Forum
Forum CSS-Online Help Search Login
CSS-Shop Impressum Datenschutz
Up Topic Hauptforen / Schachprogrammierung / ChatGPT und das Nim-Spiel
- - By Ingo Althöfer Date 2023-03-08 11:33
Hallo, ich habe mal versucht, von ChatGPT Python-Code für
das klassische Nim-Spiel zu bekommen. Damit das Programm
nicht nur aus irgendwelchen Quellen kopiert, habe ich das
Spiel "Bongo" statt "Nim" genannt. Hier ist der Chatverlauf,
durchaus enttäuschend.

*******************************

ingo:
Beim Bongo-Spiel gibt es zwei Spieler, die abwechselnd ziehen. Es gibt zu
Beginn drei Haufen mit Steinchen. Wer am Zug ist, muss von einem Haufen
Steine wegnehmen, mindestens einen und höchstens alle. Wer am Schluss
den allerletzten Stein überhaupt entfernt, ist Sieger. Gib ein Python-Programm
für dieses neue Spiel.

Cha:
Klar, hier ist ein Python-Programm für das Bongo-Spiel:

python
Copy code
import random

# Initialisierung der Haufen
haufen = [random.randint(1, 10) for i in range(3)]

# Spielerklasse
class Spieler:
    def __init__(self, name):
        self.name = name

    def zug(self, haufen):
        print("Es gibt derzeit folgende Haufen:")
        for i, steine in enumerate(haufen):
            print(f"Haufen {i+1}: {steine} Steine")
        while True:
            haufen_nr = int(input(f"{self.name}, von welchem Haufen möchtest du Steine wegnehmen? "))
            if haufen_nr < 1 or haufen_nr > 3:
                print("Ungültige Haufennummer. Bitte wähle eine Zahl zwischen 1 und 3.")
                continue
            steine = int(input(f"Wie viele Steine möchtest du vom Haufen {haufen_nr} nehmen? "))
            if steine < 1:
                print("Du musst mindestens einen Stein nehmen.")
                continue
            if steine > haufen[haufen_nr-1]:
                print("Es gibt nicht genug Steine in diesem Haufen.")
                continue
            haufen[haufen_nr-1] -= steine
            break
        return haufen

# Spielstart
print("Willkommen beim Bongo-Spiel!")
spieler1 = Spieler(input("Spieler 1, wie heißt du? "))
spieler2 = Spieler(input("Spieler 2, wie heißt du? "))

while True:
    haufen = spieler1.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler1.name} hat gewonnen!")
        break
    haufen = spieler2.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler2.name} hat gewonnen!")
        break

In diesem Programm werden zu Beginn drei Haufen mit zufälligen Anzahlen von Steinen
initialisiert. Dann werden zwei Spieler erstellt und nacheinander aufgefordert, ihre Züge
auszuführen. Das Programm überprüft die Eingaben der Spieler und aktualisiert die
Anzahl der Steine in den Haufen entsprechend. Das Spiel endet, wenn ein Spieler den
letzten Stein nimmt und somit gewinnt.

***************************

Ingo:
Danke. Und jetzt bitte Python-Code für ein Computer-Programm, was das Bongospiel gut spielt.

Cha:
Hier ist ein Python-Code für ein einfaches Bongo-Spiel-Programm, das gegen einen menschlichen Spieler spielt:

python
Copy code
import random

# Initialisierung der Haufen
haufen = [random.randint(1, 10) for i in range(3)]

# Computerklasse
class Computer:
    def __init__(self):
        pass

    def zug(self, haufen):
        # Bestimmen, welcher Haufen die meisten Steine hat
        max_steine = max(haufen)
        haufen_nr = haufen.index(max_steine) + 1

        # Bestimmen, wie viele Steine entfernt werden sollen
        if max_steine == 1:
            steine = 1
        else:
            steine = random.randint(1, max_steine // 2)

        # Aktualisieren der Haufen
        haufen[haufen_nr - 1] -= steine
        return haufen

# Spielstart
print("Willkommen beim Bongo-Spiel!")
spieler = input("Wie heißt du? ")
computer = Computer()

while True:
    haufen = computer.zug(haufen)
    print(f"Der Computer nimmt {steine} Steine vom Haufen {haufen_nr}.")
    if sum(haufen) == 0:
        print("Der Computer hat gewonnen!")
        break

    print("Es gibt derzeit folgende Haufen:")
    for i, steine in enumerate(haufen):
        print(f"Haufen {i+1}: {steine} Steine")
    while True:
        haufen_nr = int(input(f"{spieler}, von welchem Haufen möchtest du Steine wegnehmen? "))
        if haufen_nr < 1 or haufen_nr

---> Abbruch durchChatGPT, auch nach 3 Minuten Warten keine Fortsetzung
Das Programm spielt nicht gut, sondern zufällig.

Aufgabe an die Prokler: Mit welcher W-keit gewinnt das Programm gegen
einen perfekten Gegner, wenn es in der Stellung (7, 8, 9) beginnt?


Ingo Althöfer.
Parent - By Chess Player Date 2023-03-08 13:51
'''

                            Online Python Interpreter.
                Code, Compile, Run and Debug python program online.
Write your code in this editor and press "Run" button to execute it.

'''

import random

# Initialisierung der Haufen
haufen = [random.randint(1, 10) for i in range(3)]

# Spielerklasse
class Spieler:
    def __init__(self, name):
        self.name = name

    def zug(self, haufen):
        print("Es gibt derzeit folgende Haufen:")
        for i, steine in enumerate(haufen):
            print(f"Haufen {i+1}: {steine} Steine")
        while True:
            haufen_nr = int(input(f"{self.name}, von welchem Haufen möchtest du Steine wegnehmen? "))
            if haufen_nr < 1 or haufen_nr > 3:
                print("Ungültige Haufennummer. Bitte wähle eine Zahl zwischen 1 und 3.")
                continue
            steine = int(input(f"Wie viele Steine möchtest du vom Haufen {haufen_nr} nehmen? "))
            if steine < 1:
                print("Du musst mindestens einen Stein nehmen.")
                continue
            if steine > haufen[haufen_nr-1]:
                print("Es gibt nicht genug Steine in diesem Haufen.")
                continue
            haufen[haufen_nr-1] -= steine
            break
        return haufen

# Spielstart
print("Willkommen beim Bongo-Spiel!")
spieler1 = Spieler(input("Spieler 1, wie heißt du? "))
spieler2 = Spieler(input("Spieler 2, wie heißt du? "))

while True:
    haufen = spieler1.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler1.name} hat gewonnen!")
        break
    haufen = spieler2.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler2.name} hat gewonnen!")
        break
Damit es läuft mußte ich etwas ändern
Parent - By Chess Player Date 2023-03-08 23:01 Edited 2023-03-08 23:25
Ingo Althöfer schrieb:

...

Ingo:
Danke. Und jetzt bitte Python-Code für ein Computer-Programm, was das Bongospiel gut spielt.

Cha:
Hier ist ein Python-Code für ein einfaches Bongo-Spiel-Programm, das gegen einen menschlichen Spieler spielt:

python
Copy code
import random

# Initialisierung der Haufen
haufen = [random.randint(1, 10) for i in range(3)]

# Computerklasse
class Computer:
    def __init__(self):
        pass

    def zug(self, haufen):
        # Bestimmen, welcher Haufen die meisten Steine hat
        max_steine = max(haufen)
        haufen_nr = haufen.index(max_steine) + 1

        # Bestimmen, wie viele Steine entfernt werden sollen
        if max_steine == 1:
            steine = 1
        else:
            steine = random.randint(1, max_steine // 2)

        # Aktualisieren der Haufen
        haufen[haufen_nr - 1] -= steine
        return haufen

# Spielstart
print("Willkommen beim Bongo-Spiel!")
spieler = input("Wie heißt du? ")
computer = Computer()

while True:
    haufen = computer.zug(haufen)
    print(f"Der Computer nimmt {steine} Steine vom Haufen {haufen_nr}.")
    if sum(haufen) == 0:
        print("Der Computer hat gewonnen!")
        break

    print("Es gibt derzeit folgende Haufen:")
    for i, steine in enumerate(haufen):
        print(f"Haufen {i+1}: {steine} Steine")
    while True:
        haufen_nr = int(input(f"{spieler}, von welchem Haufen möchtest du Steine wegnehmen? "))
        if haufen_nr < 1 or haufen_nr

---> Abbruch durchChatGPT, auch nach 3 Minuten Warten keine Fortsetzung
Das Programm spielt nicht gut, sondern zufällig.
...

Ingo Althöfer.

Das bekomme ich nicht im Online Interpreter zum Laufen. Keine Ahnung woran es liegt?

Dieses hier funktioniert ja.

import random

# Initialisierung der Haufen
haufen = [random.randint(1, 10) for i in range(3)]

# Spielerklasse
class Spieler:
    def __init__(self, name):
        self.name = name

    def zug(self, haufen):
        print("Es gibt derzeit folgende Haufen:")
        for i, steine in enumerate(haufen):
            print(f"Haufen {i+1}: {steine} Steine")
        while True:
            haufen_nr = int(input(f"{self.name}, von welchem Haufen möchtest du Steine wegnehmen? "))
            if haufen_nr < 1 or haufen_nr > 3:
                print("Ungültige Haufennummer. Bitte wähle eine Zahl zwischen 1 und 3.")
                continue
            steine = int(input(f"Wie viele Steine möchtest du vom Haufen {haufen_nr} nehmen? "))
            if steine < 1:
                print("Du musst mindestens einen Stein nehmen.")
                continue
            if steine > haufen[haufen_nr-1]:
                print("Es gibt nicht genug Steine in diesem Haufen.")
                continue
            haufen[haufen_nr-1] -= steine
            break
        return haufen

# Spielstart
print("Willkommen beim Bongo-Spiel!")
spieler1 = Spieler(input("Spieler 1, wie heißt du? "))
spieler2 = Spieler(input("Spieler 2, wie heißt du? "))

while True:
    haufen = spieler1.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler1.name} hat gewonnen!")
        break
    haufen = spieler2.zug(haufen)
    if sum(haufen) == 0:
        print(f"{spieler2.name} hat gewonnen!")
        break
Willkommen beim Bongo-Spiel!
Spieler 1, wie heißt du? ich
Spieler 2, wie heißt du? du
Es gibt derzeit folgende Haufen:
Haufen 1: 1 Steine
Haufen 2: 9 Steine
Haufen 3: 4 Steine
ich, von welchem Haufen möchtest du Steine wegnehmen? 3
Wie viele Steine möchtest du vom Haufen 3 nehmen? 3
Es gibt derzeit folgende Haufen:
Haufen 1: 1 Steine
Haufen 2: 9 Steine
Haufen 3: 1 Steine
du, von welchem Haufen möchtest du Steine wegnehmen? 2
Wie viele Steine möchtest du vom Haufen 2 nehmen? 8
Es gibt derzeit folgende Haufen:
Haufen 1: 1 Steine
Haufen 2: 1 Steine
Haufen 3: 1 Steine
ich, von welchem Haufen möchtest du Steine wegnehmen? 1
Wie viele Steine möchtest du vom Haufen 1 nehmen? 1
Es gibt derzeit folgende Haufen:
Haufen 1: 0 Steine
Haufen 2: 1 Steine
Haufen 3: 1 Steine
du, von welchem Haufen möchtest du Steine wegnehmen? 2
Wie viele Steine möchtest du vom Haufen 2 nehmen? 1
Es gibt derzeit folgende Haufen:
Haufen 1: 0 Steine
Haufen 2: 0 Steine
Haufen 3: 1 Steine
ich, von welchem Haufen möchtest du Steine wegnehmen? 3
Wie viele Steine möchtest du vom Haufen 3 nehmen? 1
ich hat gewonnen!
Up Topic Hauptforen / Schachprogrammierung / ChatGPT und das Nim-Spiel

Powered by mwForum 2.29.3 © 1999-2014 Markus Wichitill