''' Proyecto base para el juego de Othello/Reversi
:author: Rodrigo Colin
'''

from Agente import *
from Tablero import *
import os

cantidadJugadores = 1 #TODO: esto se deberia setear cuando se elige en la pantalla

# opciones para elegir la dificultad del juego y el color de fichas.
dificultad = int(os.environ['DIFICULTAD'])%3
color = int(os.environ['COLOR'])%2

# Arreglar la dificultad porque queda en 0,1,2 y son profundidades parecidas
dificultad = 1 if dificultad == 0 else (4 if dificultad == 1 else 5)

tablero = Tablero()
agente = Agente(dificultad)

def settings():
    ''' Metodo para establecer tamano de ventana al incluir variables '''
    size(tablero.dimension * tablero.tamCasilla, tablero.dimension * tablero.tamCasilla)

def setup():
    ''' Inicializaciones '''
    println("Proyecto base para el juego de mesa Othello")

def draw():
    ''' Ciclo de dibujado '''
    tablero.display()
    jugar()

def jugar():
  if cantidadJugadores == 0:
    ceroJugadores()

  elif cantidadJugadores == 1:
    unJugador()

  elif cantidadJugadores == 2:
    dosJugadores()

#TODO: probar este cuando tengamos heuristica que funcione
def ceroJugadores():
  coord = agente.jugar(tablero)
  jugadaTerminada = tablero.setFicha(coord[0], coord[1])
  if jugadaTerminada:
    tablero.cambiarTurno()

#TODO: recibir parámetro para jugar con o sin máquina
#TODO: probar este cuando tengamos heuristica que funcione
'''Opción para jugar contra la máquinta'''
def unJugador():
  if tablero.turno: #Juega el jugador de ficha color negro
    if not tablero.esTableroFinal():
      if mousePressed:
        println("\nClic en la casilla " + "[" + str(mouseX/tablero.tamCasilla) + ", " + str(mouseY/tablero.tamCasilla) + "]")

        jugadaTerminada = tablero.setFicha(mouseX/tablero.tamCasilla, mouseY/tablero.tamCasilla)
        if jugadaTerminada:
          tablero.cambiarTurno()
    else:
      tablero.cambiarTurno()
  else: #Juega el jugador de ficha color blanco
    if not tablero.esTableroFinal():
      posX, posY = agente.jugar(tablero)
      jugadaTerminada = tablero.setFicha(posX, posY)
      if jugadaTerminada:
        tablero.cambiarTurno()
    else:
      tablero.cambiarTurno()

'''Opción para no jugar con la máquina'''
def dosJugadores():
  if tablero.turno: #Juega el jugador de ficha color negro
    if mousePressed:
      println("\nClic en la casilla " + "[" + str(mouseX/tablero.tamCasilla) + ", " + str(mouseY/tablero.tamCasilla) + "]")
      jugadaTerminada = tablero.setFicha(mouseX/tablero.tamCasilla, mouseY/tablero.tamCasilla)
      if jugadaTerminada:
        tablero.cambiarTurno()
  else: #Juega el jugador de ficha color blanco
    if mousePressed:
      println("\nClic en la casilla " + "[" + str(mouseX/tablero.tamCasilla) + ", " + str(mouseY/tablero.tamCasilla) + "]")
      jugadaTerminada = tablero.setFicha(mouseX/tablero.tamCasilla, mouseY/tablero.tamCasilla)
      if jugadaTerminada:
        tablero.cambiarTurno()
