field = [[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]

def print_field(feld):
    print '|'.join(feld[0])
    print '-----'
    print '|'.join(feld[1])
    print '-----'
    print '|'.join(feld[2])


print_field(field)


def check_pattern(feld, player, pattern):
    for pat in pattern:
        x = pat[1]
        y = pat[0]
        if field[y][x] != player:
            return False
    return True

def field_won(feld, player):
    # In einer Reihe
    won = False
    for i in range(0, 3):
        pattern = [(0, i), (1, i), (2, i)]
        if check_pattern(feld, player, pattern):
            won = True
    # In einer Spalte
    for i in range(0,3):
        pattern = [(i, 0), (i, 1), (i, 2)]
        if check_pattern(feld, player, pattern):
            won = True
    # Jetzt noch die Diagonalen
    if check_pattern(feld, player, [(0,0), (1,1), (2,2)]):
        won = True
    if check_pattern(feld, player, [(0,2), (1,1), (2,0)]):
        won = True
    return won

#Bis hier hin ist der "abgekupferte" Code vom Didi.
#Hier beginnt dann meine Arbeit.

def setzen(player):
    print 'Zeile?'
    zeile = input() -1
    print 'Spalte?'
    spalte = input() -1
    #Ueberpruefe, ob das Feld schon besetzt ist
    if field[zeile][spalte] == ' ':
        field[zeile][spalte] = player
        print_field(field)
        if field_won(field, player):
            print 'Spieler', player, 'gewinnt das Spiel.'
            return 0
    else:
        print 'Dieses Feld ist bereits besetzt. Bitte waehle ein anderes.'
        print '----------------------------------------------------------'
        print_field(field)
        setzen(player)

#Ist das gesamte Spielfeld schon voll?
def proof_field(field):
    for feld in field:
        for i in range(0,3):
            if feld[i] == ' ':
                return 0
            
def Spieler_X():
    if proof_field(field) == 0:
        if setzen('x') != 0:
            Spieler_Y()
        else:
            return
    else:
        print "Unentschieden!"
def Spieler_Y():
    if proof_field(field) == 0:
        if setzen('o') != 0:
            Spieler_X()
        else:
            return
    else:
        print "Unentschieden!"
#Jetzt noch ausfuehren, fertig!
Spieler_X()

        

        
    
   
    
        

