Advertisement
Guest User

Tic Tac Toe

a guest
Dec 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.27 KB | None | 0 0
  1. nkk = ['Nichts', 'Spieler 1', 'Spieler 2']
  2. nichts = 0
  3. kreuz = 1
  4. kreis = 2
  5.  
  6. field = [[nichts, nichts, nichts], [nichts, nichts, nichts], [nichts, nichts, nichts]]
  7.  
  8. def istIntInSpielfeld(s):
  9.     try:
  10.         i = int(s)
  11.         if(i < 1 or i > 3):
  12.             return False
  13.         return True
  14.     except ValueError:
  15.         return False
  16.  
  17. def setzen(wert, x, y):
  18.     field[y-1][x-1] = wert
  19.  
  20. def getFieldString(f):
  21.     s = ''
  22.     for le in f:
  23.         for e in le:
  24.             if(e == kreuz):
  25.                 s += 'X'
  26.             elif(e == kreis):
  27.                 s += 'O'
  28.             else:
  29.                 s += '.'
  30.         s += '\n'
  31.     return s
  32.  
  33. def tryWinner(f):
  34.     winner = nichts
  35.     if(f[0][0] == f[1][0] == f[2][0] or f[0][0] == f[0][1] == f[0][2]):
  36.         winner = f[0][0]
  37.     elif(f[0][1] == f[1][1] == f[2][1] or f[1][0] == f[1][1] == f[1][2]):
  38.         winner = f[1][1]
  39.     elif(f[0][2] == f[1][2] == f[2][2] or f[2][0] == f[2][1] == f[2][2]):
  40.         winner = f[2][2]
  41.     elif(f[0][0] == f[1][1] == f[2][2] or f[0][2] == f[1][1] == f[2][0]):
  42.         winner = f[1][1]
  43.     else:
  44.         winner = nichts
  45.     return winner
  46.  
  47. def player1():
  48.     ar = []
  49.     while(len(ar) != 2):
  50.         s = input('Spieler 1 (X) >> Geben Sie X & Y Koordinate Ihres Punktes in dieser "X,Y" Form an: ')
  51.         ar = s.split(',')
  52.         if(len(ar) != 2):
  53.             print('Spieler 1 (X) >> Fehler: Falsche Eingabe!')
  54.  
  55.     shouldBreak = False
  56.     if(istIntInSpielfeld(ar[0]) == False):
  57.         print('Spieler 1 (X) >> Der Wert "' + ar[0] + '" ist keine Ganzzahl zwischen 1 & 3!')
  58.         shouldBreak = True
  59.     if(istIntInSpielfeld(ar[1]) == False):
  60.         print('Spieler 1 (X) >> Der Wert "' + ar[1] + '" ist keine Ganzzahl zwischen 1 & 3!')
  61.         shouldBreak = True
  62.     if(shouldBreak):
  63.         player1()
  64.         return
  65.    
  66.     x = int(ar[0])
  67.     y = int(ar[1])
  68.  
  69.     if(field[y-1][x-1] != nichts):
  70.         print('Spieler 1 (X) >> Das Feld "(' + str(x) + '|' + str(y) + ')" ist belegt!')
  71.         player1()
  72.         return
  73.  
  74.     setzen(kreuz, x, y)
  75.  
  76. def player2():
  77.     ar = []
  78.     while(len(ar) != 2):
  79.         s = input('Spieler 2 (O) >> Geben Sie X & Y Koordinate Ihres Punktes in dieser "X,Y" Form an: ')
  80.         ar = s.split(',')
  81.         if(len(ar) != 2):
  82.             print('Spieler 2 (O) >> Fehler: Falsche Eingabe!')
  83.  
  84.     shouldBreak = False
  85.     if(istIntInSpielfeld(ar[0]) == False):
  86.         print('Spieler 2 (O) >> Der Wert "' + ar[0] + '" ist keine Ganzzahl zwischen 1 & 3!')
  87.         shouldBreak = True
  88.     if(istIntInSpielfeld(ar[1]) == False):
  89.         print('Spieler 2 (O) >> Der Wert "' + ar[1] + '" ist keine Ganzzahl zwischen 1 & 3!')
  90.         shouldBreak = True
  91.     if(shouldBreak):
  92.         player2()
  93.         return
  94.    
  95.     x = int(ar[0])
  96.     y = int(ar[1])
  97.  
  98.     if(field[y-1][x-1] != nichts):
  99.         print('Spieler 2 (O) >> Das Feld "(' + str(x) + '|' + str(y) + ')" ist belegt!')
  100.         player2()
  101.         return
  102.  
  103.     setzen(kreis, x, y)
  104.    
  105.  
  106. while(tryWinner(field) == False):
  107.     print(getFieldString(field))
  108.     player1()
  109.     if(tryWinner(field) == True):
  110.         break
  111.     print(getFieldString(field))
  112.     player2()
  113.  
  114. print(getFieldString(field))
  115. print('Herzlichen Glückwunsch, ' + nkk[tryWinner(field)] + ' Du hast gewonnen!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement