# Pyxel Studio

import pyxel

pyxel.init(88, 64, "TestProject03-TicTacToe")
pyxel.mouse(True)
grille = [[0, 0, 0],
          [0, 0, 0],
          [0, 0, 0]]
          
grilleSave = [[0, 0, 0],
              [0, 0, 0],
              [0, 0, 0]]
          
player = 1
score = (0, 0)   
NeedToAddScore = False
isRun = True
isnewRun = False
isRunNull = False

thing = 0


def choiseCase(grille, player, case):
    if player == 1 and isRun == True :
        grille[case[0]][case[1]] = 1
    elif player == 2 and isRun == True:
        grille[case[0]][case[1]] = 2
    return player
        
        
def detectionWin(grille, playerNumber):
    joueur = playerNumber

    isRun = True
    if grille[0][0] == joueur:
        if grille[0][1] == joueur:
            if grille[0][2] == joueur:
                isRun = False

        if grille[1][1] == joueur:
            if grille[2][2] == joueur:
                isRun = False


        if grille[1][0] == joueur:
            if grille[2][0] == joueur:
                isRun = False

    if grille[1][0] == joueur:
        if grille[1][1] == joueur:
            if grille[1][2] == joueur:
                isRun = False

    if grille[2][0] == joueur:
        if grille[1][1] == joueur: # Erreur du script du professeur /!\
            if grille[0][2] == joueur:
                isRun = False

        if grille[2][1] == joueur:
            if grille[2][2] == joueur:
                isRun = False

    if grille[0][1] == joueur:
        if grille[1][1] == joueur:
            if grille[2][1] == joueur:
                isRun = False

    if grille[0][2] == joueur:
        if grille[1][2] == joueur:
            if grille[2][2] == joueur:
                isRun = False
                
    
    return isRun

def detectionNull(grille):
    for lig in range(3):
        for col in range(3):
            if grille[lig][col] == 0:
                return True
    return False




def update():
    
    global player, isRun, score, grille, thing, isnewRun
    if isRun == False:
        grille = [[0, 0, 0],
                  [0, 0, 0],
                  [0, 0, 0]]
    isRun = True
    if pyxel.btnp(pyxel.MOUSE_BUTTON_LEFT) and isRun == True:
        x = pyxel.mouse_x
        y = pyxel.mouse_y
        if 0 <= x <= 15:
            col = 0
        elif 18 <= x <= 33:
            col = 1
        elif 36 <= x <= 51:
            col = 2
            
        if 0 <= y <= 15:
            lig = 0
        elif 18 <= y <= 33:
            lig = 1
        elif 36 <= y <= 51:
            lig = 2
        else:
            lig = 3
            
        if col != 3 and lig != 3:
            if grille[lig][col] == 0:
                player = choiseCase(grille, player, (lig, col))
        
        if isRun == True:
            isRun = detectionWin(grille, player)
            
        if player == 1:
            player = 2
        else:
            player = 1

    
    if isRun == False:
        if player == 2:
            score = (score[0]+1, score[1])
            
        elif player == 1:
            score = (score[0], score[1]+1)
    else:
        isnewRun = True
        isRun = detectionNull(grille)
        
        

            
                

    


def draw():
    
    pyxel.cls(0)
    
    pyxel.rect(16, 0, 2, 52, 13)
    pyxel.rect(34, 0, 2, 52, 13)
    pyxel.rect(0, 16, 52, 2, 13)
    pyxel.rect(0, 34, 52, 2, 13)
    
    pyxel.rect(0, 52, 52, 2, 13)
    pyxel.rect(52, 0, 2, 54, 13)
    
    pyxel.text(0, 55, "Joueur: " + str(player), 13)
    
    pyxel.text(40, 55, "| Score " + str(score[0]) + "-" + str(score[1]), 13)
    
    if isRun == True:
        for lig in range(3):
            for col in range(3):
                if grille[lig][col] == 1:
                    pyxel.rect(18*col, 18*lig, 16, 16, 10)
                if grille[lig][col] == 2:
                    pyxel.rect(18*col, 18*lig, 16, 16, 14)
    else:
        for lig in range(3):
            for col in range(3):
                grilleSave[lig][col] = grille[lig][col]
                


                
    if isnewRun == True:
        for lig in range(3):
            for col in range(3):
                if grilleSave[lig][col] == 1:
                    pyxel.rect(8*col+58, 8*lig+20, 8, 8, 10)
                if grilleSave[lig][col] == 2:
                    pyxel.rect(8*col+58, 8*lig+20, 8, 8, 14)
                    
                    
    pyxel.rect(58, 20, 1, 24, 13)
    pyxel.rect(66, 20, 1, 24, 13)
    pyxel.rect(74, 20, 1, 24, 13)
    pyxel.rect(82, 20, 1, 24, 13)
    
    
    pyxel.rect(58, 20, 24, 1, 13)
    pyxel.rect(58, 28, 24, 1, 13)
    pyxel.rect(58, 36, 24, 1, 13)
    pyxel.rect(58, 44, 25, 1, 13)
    
        
                    

pyxel.run(update, draw)