2024. október 17., csütörtök

Malom játék pythonban

Malom két játékos számára, hogy felváltva lépjenek a konzolon. A malom (illetve három azonos szimbólumból álló vonal, amelyet a játékosok alkotnak) ellenőrzése nincs teljes mértékben implementálva. A malom szabályaira is figyelni kell a valódi játék során, konzolon játszható, és alapvető szabályokat követ a malom játékhoz.

class MalomJatek:
    def __init__(self):
        self.jatekosok = ['X', 'O']  # X az első játékos, O a második
        self.tabla = [' ' for _ in range(24)]  # 24 mezős malom tábla
        self.fordulok = 0
        self.ming = []

    def megjelenit_tablak(self):
        print(f"""
        {self.tabla[0]} - {self.tabla[1]} - {self.tabla[2]}        {self.tabla[12]} - {self.tabla[13]} - {self.tabla[14]}
        |   |   |        |   |   |
        {self.tabla[3]} - {self.tabla[4]} - {self.tabla[5]}        {self.tabla[15]} - {self.tabla[16]} - {self.tabla[17]}
        |   |   |        |   |   |
        {self.tabla[6]} - {self.tabla[7]} - {self.tabla[8]}        {self.tabla[18]} - {self.tabla[19]} - {self.tabla[20]}
        |   |   |        |   |   |
        {self.tabla[9]} - {self.tabla[10]} - {self.tabla[11]}        {self.tabla[21]} - {self.tabla[22]} - {self.tabla[23]}
        """)

    def lepes(self, jatekos):
        while True:
            try:
                hely = int(input(f'{jatekos} lépése (0-23): '))
                if self.tabla[hely] == ' ':
                    self.tabla[hely] = jatekos
                    self.fordulok += 1
                    break
                else:
                    print("Ez a mező már foglalt!")
            except (ValueError, IndexError):
                print("Kérlek érvényes számot adj meg (0-23).")

    def jatekmenet(self):
        while True:
            self.megjelenit_tablak()
            jatekos = self.jatekosok[self.fordulok % 2]
            self.lepes(jatekos)
            if self.fordulok >= 18:
                if self.lehet_malom(jatekos):
                    print(f'{jatekos} malmot alkotott!')
            if self.fordulok >= 24:
                print("A játék véget ért. Nincs több lépés!")
                break

    def lehet_malom(self, jatekos):
        # Ellenőrzi, hogy a játékos alkotott-e malmot
        return any(all(self.tabla[i] == jatekos for i in combination) for combination in self.ming)

    def fut(self):
        self.jatekmenet()

if __name__ == "__main__":
    jatek = MalomJatek()
    jatek.ming = [
        [0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11],
        [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23],
        [0, 3, 6], [1, 4, 7], [2, 5, 8], [9, 12, 15],
        [10, 13, 16], [11, 14, 17], [18, 21], [19, 22], [20, 23]
    ]
    jatek.fut()

Nincsenek megjegyzések:

Megjegyzés küldése