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