Created
March 25, 2016 19:49
-
-
Save Liblor/0bd6d158579a2cd1d1f9 to your computer and use it in GitHub Desktop.
Ein konsolen Tic Tac Toe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# | |
# -- German -- | |
# Autor: Liblor | |
# Datum: 27.12.2011 | |
# Lizenz: Creative Commons Attribution License | |
# | |
# Ein konsolen Tic Tac Toe | |
# | |
class TicTacToe(object): | |
def __init__(self, spieler1="Spieler1", spieler2="Spieler2"): | |
self._reset() | |
self.spieler1 = spieler1 | |
self.spieler2 = spieler2 | |
def _getspielfeld(self): | |
print ("Spielfeld: ") | |
for i in range(0, 9, 3): | |
print(self.spielfeld[i: (i+3)]) | |
def start(self): | |
print("%s ist 'X'\n%s ist 'O'" % (spieler1, spieler2)) | |
while self.run: | |
self._zug(self.spieler1) | |
if not self.run: break | |
self._zug(self.spieler2) | |
self._reset() | |
def _zug(self, spieler): | |
self.freieplaetze -= 1 | |
print("\n%s ist am Zug!" % spieler) | |
self._getspielfeld() | |
while True: | |
z = int(input("An welcher Position moechten sie Spielen? ")) | |
if str(z) in self.spielfeld: | |
self.spielfeld[z] = "X" if spieler == self.spieler1 else "O" | |
self.check(spieler) | |
break | |
elif z > 8 or z < 0: | |
print("Auserhalb des Feldes! ") | |
else: | |
print("Dieser Platz ist bereits vergeben. ") | |
def check(self, spieler): | |
XorO = ("X" if spieler == self.spieler1 else "O") | |
print() | |
if self.spielfeld[:3].count(XorO) == 3 or\ | |
self.spielfeld[3:6].count(XorO) == 3 or\ | |
self.spielfeld[6:9].count(XorO) == 3 or\ | |
self.spielfeld[::3].count(XorO) == 3 or\ | |
self.spielfeld[3::3].count(XorO) == 3 or\ | |
self.spielfeld[6::3].count(XorO) == 3 or\ | |
self.spielfeld[0::4].count(XorO) == 3 or\ | |
self.spielfeld[2:7:2].count(XorO) == 3: | |
self._getspielfeld() | |
if XorO == "X": | |
print("%s hat Gewonnen!" % self.spieler1) | |
self.run = False | |
else: | |
print("%s hat Gewonnen!" % self.spieler2) | |
self.run = False | |
input("<Enter>") | |
elif not self.freieplaetze: | |
self.run = False | |
print("Unentschieden! ") | |
input("<Enter>") | |
def _reset(self): | |
self.spielfeld = [str(i) for i in range(9)] | |
self.freieplaetze = 9 | |
self.run = True | |
if __name__ == "__main__": | |
spieler1 = input("Spieler1: ") | |
spieler2 = input("Spieler2: ") | |
run = TicTacToe(spieler1, spieler2) | |
run.start() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment