Python ile basit TicTacToe oyunu

Biwkan

Decipat
Katılım
20 Eylül 2020
Mesajlar
734
Çözümler
10
Merhaba arkadaşlar. Python öğreniyorum ve halihazırda yazdığım iki basit projeyi burada paylaştım. Bu da üçüncüsü ancak burada çözemediğim bir sorun var. TicTacToe oyunu bizim bildiğimiz XOX oyunudur. Henüz giriş seviyesinde olduğum için herhangi bir arayüzü yok, sadece Python'un etkileşimli kabuğunda kullanıcıdan girdi alarak oyununun oynanmasını sağlayabiliyorum. Kodlar şu şekilde;

Python:
instruction = """

(1) - First player is the 'X', second player is the 'O'.
(2) - All you have to do is choose the space in order.
(3) - To choose the space, enter the number of that space.
(4) - Number of the spaces;

[1]   [2]   [3]

[4]   [5]   [6]

[7]   [8]   [9]

"""

print(instruction)

board = [["___", "___", "___"], ["___", "___", "___"], ["___", "___", "___"]]

for i in board:
    print(*i, end="\n" * 2)


winConditions = [[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]],
                [[1], [4], [7]], [[2], [5], [8]], [[3], [6], [9]],
                [[1], [5], [9]], [[3], [5], [7]]]

checkX = []
checkO = []

while True:

    # X PLACEMENT

    while True:

        xInput = input("Where do you want to put the 'X'?: ")

        if xInput == "1" and board[0][0] == "___":
            board[0][0] = " X "
            checkX += [[1]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "2" and board[0][1] == "___":
            board[0][1] = " X "
            checkX += [[2]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "3" and board[0][2] == "___":
            board[0][2] = " X "
            checkX += [[3]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "4" and board[1][0] == "___":
            board[1][0] = " X "
            checkX += [[4]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "5" and board[1][1] == "___":
            board[1][1] = " X "
            checkX += [[5]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "6" and board[1][2] == "___":
            board[1][2] = " X "
            checkX += [[6]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "7" and board[2][0] == "___":
            board[2][0] = " X "
            checkX += [[7]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "8" and board[2][1] == "___":
            board[2][1] = " X "
            checkX += [[8]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif xInput == "9" and board[2][2] == "___":
            board[2][2] = " X "
            checkX += [[9]]
            for i in board:
                print(*i, end="\n"*2)
            break
        else:
            print("Invalid space, please try again!")

    checkX.sort()
    if checkX in winConditions:
        print("The winner is X !!!")
        break

    # O PLACEMENT

    while True:

        oInput = input("Where do you want to put the 'O'?: ")

        if oInput == "1" and board[0][0] == "___":
            board[0][0] = " O "
            checkO += [[1]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "2" and board[0][1] == "___":
            board[0][1] = " O "
            checkO += [[2]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "3" and board[0][2] == "___":
            board[0][2] = " O "
            checkO += [[3]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "4" and board[1][0] == "___":
            board[1][0] = " O "
            checkO += [[4]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "5" and board[1][1] == "___":
            board[1][1] = " O "
            checkO += [[5]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "6" and board[1][2] == "___":
            board[1][2] = " O "
            checkO += [[6]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "7" and board[2][0] == "___":
            board[2][0] = " O "
            checkO += [[7]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "8" and board[2][1] == "___":
            board[2][1] = " O "
            checkO += [[8]]
            for i in board:
                print(*i, end="\n"*2)
            break

        elif oInput == "9" and board[2][2] == "___":
            board[2][2] = " O "
            checkO += [[9]]
            for i in board:
                print(*i, end="\n"*2)
            break

        else:
            print("Invalid space, please try again!")

    checkO.sort()
    if checkO in winConditions:
        print("The winner is O !!!")
        break

Burada çözemediğim konu, oyunculardan herhangi biri (X ya da O) oyunu kazanmak için 3 hamleden daha fazla hamle yaptığı zaman oyun kazananı belirleyemiyor. Bu sorunun nereden kaynaklandığını ve nasıl çözüleceğini anlayabilen arkadaşlar beni bilgilendirirse sevinirim. Onun haricinde eleştiri ve yorumlarınızı bekliyorum. İyi forumlar.
 
Ben de zamanında bu oyunu yapmıştım ama o zamanlar fonksiyon oluşturmayı falan bilmiyordum çok basit komutlar ile yapmıştım, bu yüzden bu kadar basit bir oyun bile 680 satır almıştı. Yaptığım oyuna bir bakın isterseniz belki bir fikir verir.
Python:
#       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
print("*"*50,"\n\n X O X Oyununa Hoşgeldiniz...\n [By Dabaddu Software @ 2020 Tüm Hakları saklıdır]\n (Bilgi için \"!bilgi\" yazın.)\n\n"+50*"*")
karar = "e"
while karar == "e" :
    while True :
        tablo = ["___","___","___","___","___","___","___","___","___"]
        yatay = 1
        dikey = 1
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 1. oyuncu (X) ~~")  
        yatay = input("Soldan sağa [1,2,3] : ")
        while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
            yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
        if yatay == "!bilgi" :
            print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
            yatay = input("Soldan sağa [1,2,3] : ")
        dikey = input("Yukarıdan aşağıya [1,2,3] : ")
        while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
            dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
        if dikey == "!bilgi" :
            print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_O_" and tablo[1] == "_O_" and tablo[2] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_O_" and tablo[4] == "_O_" and tablo[5] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_O_" and tablo[7] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[3] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_O_" and tablo[4] == "_O_" and tablo[7] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[5] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[4] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[4] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_O_" and tablo[1] == "_O_" and tablo[2] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_O_" and tablo[4] == "_O_" and tablo[5] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_O_" and tablo[7] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[3] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_O_" and tablo[4] == "_O_" and tablo[7] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[5] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[4] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[4] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        print("Malesef kimse kazanamadı :(")
        break
    karar = input("\n******************************\nBizi, yani Dabaddu Software' i tercih ettiğiniz için teşekkür ederiz...\nTekrar oynamak ister misiniz? (e/h) : ")
    while karar != "e" and karar != "h" :
        karar = input("Sadece \"e\" yada \"h\" yazılabilir !\nTekrar oynamak ister misiniz? (e/h) : ")
quit()
#       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
# Dabaddu38
Sürekli her adımda durumları kontrol etmişim bu yüzden uzun olmuş. Sürekli tekrar eden yerler var ve biraz da acemilik te var.

Bir de çok az satır kod ile yapılan bir çalışma var bunu ben yapmadım bir arkadaşım yapmış ama biraz ileri düzey olabilir buna da bir bakabilirsin.
Python:
tahta = [["___", "___", "___"],
         ["___", "___", "___"],
         ["___", "___", "___"]]
for i in tahta:
    print("\t".expandtabs(30), *i, end="\n"*2)
kazanma_ölçütleri = [[[0,0],[1,0],[2,0]],
                     [[0,1],[1,1],[2,1]],
                     [[0,2],[1,2],[2,2]],
                     [[0,0],[0,1],[0,2]],
                     [[1,0],[1,1],[1,2]],
                     [[2,0],[2,1],[2,2]],
                     [[0,0],[1,1],[2,2]],
                     [[0,2],[1,1],[2,0]]]
x_durumu = []
o_durumu = []
sıra = 1
while True:
    if sıra%2==0:
        işaret = "X".center(3)
    else:
        işaret= "O".center(3)
    print("İŞARET: ",işaret)
    x = input ("yukarıdan aşağıya [1, 2, 3]: " .ljust(30))
    if x == "q":
        break
    y = input("soldan sağa [1, 2, 3]: ".ljust(30))
    if y == "q":
        break
    x = int(x)-1
    y = int(y)-1
    print("\n"*15)
    if tahta[x][y] == "___":
        tahta[x][y] = işaret
        if işaret == "X".center(3):
            x_durumu += [[x, y]]
        elif işaret == "O".center(3):
            o_durumu +=[[x, y]]
        sıra += 1
    else:
        print("\nORASI DOLU!TEKRAR DENEYİN\n")
    for i in tahta:
        print("\t".expandtabs(30), *i, end="\n"*2)
    for i in kazanma_ölçütleri:
        o = [z for z in i if z in o_durumu]
        x = [z for z in i if z in x_durumu]
        if len (o) ==len (i):
            print("O KAZANDI!")
        if len (x) == len (i):
            print("X KAZANDI!")
 
Ben de zamanında bu oyunu yapmıştım ama o zamanlar fonksiyon oluşturmayı falan bilmiyordum çok basit komutlar ile yapmıştım, bu yüzden bu kadar basit bir oyun bile 680 satır almıştı. Yaptığım oyuna bir bakın isterseniz belki bir fikir verir.
Python:
#       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
print("*"*50,"\n\n X O X Oyununa Hoşgeldiniz...\n [By Dabaddu Software @ 2020 Tüm Hakları saklıdır]\n (Bilgi için \"!bilgi\" yazın.)\n\n"+50*"*")
karar = "e"
while karar == "e" :
    while True :
        tablo = ["___","___","___","___","___","___","___","___","___"]
        yatay = 1
        dikey = 1
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 1. oyuncu (X) ~~")  
        yatay = input("Soldan sağa [1,2,3] : ")
        while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
            yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
        if yatay == "!bilgi" :
            print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
            yatay = input("Soldan sağa [1,2,3] : ")
        dikey = input("Yukarıdan aşağıya [1,2,3] : ")
        while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
            dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
        if dikey == "!bilgi" :
            print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_O_" and tablo[1] == "_O_" and tablo[2] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_O_" and tablo[4] == "_O_" and tablo[5] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_O_" and tablo[7] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[3] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_O_" and tablo[4] == "_O_" and tablo[7] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[5] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[4] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[4] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
                # Dabaddu38
        print("~~ 2. oyuncu (O) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_O_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_O_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_O_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_O_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_O_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_O_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_O_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_O_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_O_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_O_" and tablo[1] == "_O_" and tablo[2] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_O_" and tablo[4] == "_O_" and tablo[5] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_O_" and tablo[7] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[3] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_O_" and tablo[4] == "_O_" and tablo[7] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[5] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_O_" and tablo[4] == "_O_" and tablo[8] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_O_" and tablo[4] == "_O_" and tablo[6] == "_O_" :
            print("TEBRİKLER ~~ 2. oyuncu (O) ~~ KAZANDI !!!")
            break
                #       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
        print("~~ 1. oyuncu (X) ~~")
        while True :  
            yatay = input("Soldan sağa [1,2,3] : ")
            while yatay != "1" and yatay != "2" and yatay != "3" and yatay != "!bilgi" :
                yatay = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nSoldan sağa [1,2,3] : ")
            if yatay == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                yatay = input("Soldan sağa [1,2,3] : ")
            dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            while dikey != "1" and dikey != "2" and dikey != "3" and dikey != "!bilgi" :
                dikey = input("Sadece \"1, 2, 3, !bilgi\" kullanılabilir.\nYukarıdan aşağıya [1,2,3] : ")
            if dikey == "!bilgi" :
                print("\n"+"*"*50,"\n\nBu oyunda ana kural, 3 tane x veya 3 tane o harfini birleştirmektir. Herkesin bir kere kullanma hakkı vardır. Yani sırayla birer birer yapılır. 3 tane birleştirilen x veya o harflerinin üstü çizilir. Alttan üste, Üstten alta, Çapraz kullanılabilir. Bu oyunda kimse kimsenin hamlesine karışamaz. Süre yoktur. En fazla harf birleştiren oyunun galibidir.\n\n"+50*"*","\n")
                dikey = input("Yukarıdan aşağıya [1,2,3] : ")
            if yatay == "1" and dikey == "1" and tablo[0] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "1" and tablo[1] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "1" and tablo[2] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "2" and tablo[3] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "2" and tablo[4] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "2" and tablo[5] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "1" and dikey == "3" and tablo[6] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "2" and dikey == "3" and tablo[7] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            elif yatay == "3" and dikey == "3" and tablo[8] != "___" :
                print("Orası zaten dolu, lütfen başka bir yer seç.")
                continue
            else :
                break
        if dikey == "1" and yatay == "1" :
            tablo[0] = "_X_"
        elif dikey == "1" and yatay == "2" :
            tablo[1] = "_X_"
        elif dikey == "1" and yatay == "3" :
            tablo[2] = "_X_"
        elif dikey == "2" and yatay == "1" :
            tablo[3] = "_X_"
        elif dikey == "2" and yatay == "2" :
            tablo[4] = "_X_"
        elif dikey == "2" and yatay == "3" :
            tablo[5] = "_X_"
        elif dikey == "3" and yatay == "1" :
            tablo[6] = "_X_"
        elif dikey == "3" and yatay == "2" :
            tablo[7] = "_X_"
        elif dikey == "3" and yatay == "3" :
            tablo[8] = "_X_"
        print("\t\t",tablo[0],tablo[1],tablo[2],"\n\t\t",tablo[3],tablo[4],tablo[5],"\n\t\t",tablo[6],tablo[7],tablo[8],"\n")
        if tablo[0] == "_X_" and tablo[1] == "_X_" and tablo[2] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[3] == "_X_" and tablo[4] == "_X_" and tablo[5] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[6] == "_X_" and tablo[7] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[3] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[1] == "_X_" and tablo[4] == "_X_" and tablo[7] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[5] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[0] == "_X_" and tablo[4] == "_X_" and tablo[8] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        elif tablo[2] == "_X_" and tablo[4] == "_X_" and tablo[6] == "_X_" :
            print("TEBRİKLER ~~ 1. oyuncu (X) ~~ KAZANDI !!!")
            break
        print("Malesef kimse kazanamadı :(")
        break
    karar = input("\n******************************\nBizi, yani Dabaddu Software' i tercih ettiğiniz için teşekkür ederiz...\nTekrar oynamak ister misiniz? (e/h) : ")
    while karar != "e" and karar != "h" :
        karar = input("Sadece \"e\" yada \"h\" yazılabilir !\nTekrar oynamak ister misiniz? (e/h) : ")
quit()
#       ~~ Dabaddu Software @ 2020 Tüm Hakları Saklıdır ~~
# Dabaddu38
Sürekli her adımda durumları kontrol etmişim bu yüzde uzun olmuş. Sürekli tekrar eden yerler var ve biraz da acemilik te var.

Bir de çok az satır kod ile yapılan bir çalışma var bunu ben yapmadım bir arkadaşım yapmış ama biraz ileri düzey olabilir buna da bir bakabilirsin.
Python:
tahta = [["___", "___", "___"],
         ["___", "___", "___"],
         ["___", "___", "___"]]
for i in tahta:
    print("\t".expandtabs(30), *i, end="\n"*2)
kazanma_ölçütleri = [[[0,0],[1,0],[2,0]],
                     [[0,1],[1,1],[2,1]],
                     [[0,2],[1,2],[2,2]],
                     [[0,0],[0,1],[0,2]],
                     [[1,0],[1,1],[1,2]],
                     [[2,0],[2,1],[2,2]],
                     [[0,0],[1,1],[2,2]],
                     [[0,2],[1,1],[2,0]]]
x_durumu = []
o_durumu = []
sıra = 1
while True:
    if sıra%2==0:
        işaret = "X".center(3)
    else:
        işaret= "O".center(3)
    print("İŞARET: ",işaret)
    x = input ("yukarıdan aşağıya [1, 2, 3]: " .ljust(30))
    if x == "q":
        break
    y = input("soldan sağa [1, 2, 3]: ".ljust(30))
    if y == "q":
        break
    x = int(x)-1
    y = int(y)-1
    print("\n"*15)
    if tahta[x][y] == "___":
        tahta[x][y] = işaret
        if işaret == "X".center(3):
            x_durumu += [[x, y]]
        elif işaret == "O".center(3):
            o_durumu +=[[x, y]]
        sıra += 1
    else:
        print("\nORASI DOLU!TEKRAR DENEYİN\n")
    for i in tahta:
        print("\t".expandtabs(30), *i, end="\n"*2)
    for i in kazanma_ölçütleri:
        o = [z for z in i if z in o_durumu]
        x = [z for z in i if z in x_durumu]
        if len (o) ==len (i):
            print("O KAZANDI!")
        if len (x) == len (i):
            print("X KAZANDI!")
İkinci paylaştığınız kod istihza'nın python dökümanında mevcut.
 
Konuyla alakasız olacak fakat ben de C# öğreniyorum fakat proje yazacak kadar bilmiyorum. Şuan koleksiyonlardayım. Siz nereden ders alıyorsunuz acaba, böyle proje yazabilmem için ne kadar ilerlemem gerekli ?
 

Yeni konular

Geri
Yukarı