Skip to content

Commit

Permalink
Some comments added. Some 'prints' removed.
Browse files Browse the repository at this point in the history
  • Loading branch information
lfmatosm authored Sep 27, 2018
1 parent 6d9bfe5 commit bc65387
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 52 deletions.
94 changes: 42 additions & 52 deletions classes_base/Jogador.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#Escrito por: Luiz Felipe, Vítor Costa, Renato Bastos.

import random
import os
from classes_base.Cor import *
from classes_base.Peca import *
from classes_busca.Expectiminimax import *
Expand Down Expand Up @@ -34,6 +35,8 @@ def __init__(self, ind=None, tipo=HUMANO):
elif (self.tipo == self.MCTS): self.tipoStr = "MCTS"
else: self.tipoStr = "RANDOM"

self.vezesQueComecou = 0

def __str__(self):
resp = "J" + str(self.__ind) + " ("+ self.tipoStr + ") -"
resp += "\tMão: "
Expand Down Expand Up @@ -144,6 +147,7 @@ def possibilidadesJogaveis(self, mesa):
return possibilidades

def probabilidadeJogada(self, peca, pos, mesa):
if (self.tipo == self.RANDOM): return 0
contagemMax = 7
contagem = 1
probMax = 1
Expand Down Expand Up @@ -272,63 +276,49 @@ def jogarExpectMM(self, mesa, oponente):
def jogarMCTS(self, mesa, oponente):
if self.__vezAtual == False: return
else:
print("\n" + self.pecasJogaveis(mesa, self.__mao))
print(self)
print("\n" + str(mesa))
while (len(self.__maoJogaveis) == 0):
if (len(mesa.pegaPecasAComprar()) != 0):
self.adicionaPeca(mesa.comprarPeca())
self.__maoJogaveis = []
print("\n" + self.pecasJogaveis(mesa, self.__mao))
print(self)

else:
self.setaJogou(False)
self.setaVez(False)
oponente.setaVez(True)
print("J" + str(self.__ind) + " passou a vez.")
return
estadoAtual = EstadoMCTS(self, oponente, mesa)
noTeste = MonteCarloNo(estadoAtual)
noTeste.expandir()
if len(noTeste.filhos)>1:
for i in range(100):
melhorfilho=noTeste.melhorFilho()
noTeste.gerarJogo(melhorfilho,False)
#print("\nMelhor filho:" +str(noTeste.melhorFilho()))
#print("Gerou o jogo numero:"+ str(i)+"\n")
#print(noTeste)
#noTeste.melhorFilho()
#adicionou=True
#escolhida = int(input("Qual peça deseja jogar? "))
#if (len(mesa.pegaTabuleiro()) != 0): pos = int(input("Em que posição?(0 p/ esquerda, 1 p/ direita) "))
#else: pos = 0
#peca = self.__mao.pop(escolhida - 1)

melhorfilho=noTeste.melhorFilho()
print(str(melhorfilho.UCT))
#print("Vitorias:"+str(melhorfilho.vitorias)+"Jogadas"+str(melhorfilho.visitas))
self.removePeca(mesa,melhorfilho.estado.ultimaPecaJogada)
adicionou = mesa.adicionarNaMesa(melhorfilho.estado.ultimaPecaJogada, melhorfilho.estado.onde)
self.setaJogou(True)
self.__maoJogaveis = []
melhorfilho.estado.ultimaPecaJogada.ordem(len(mesa.pegaTabuleiro()))
print("MCTS jogou a peça:"+ str(melhorfilho.estado.ultimaPecaJogada)+"na posição :"+ str(melhorfilho.estado.onde)+"\n" )
self.setaVez(False)
oponente.setaVez(True)
return
adicionou = False
while not adicionou:
print("\n" + self.pecasJogaveis(mesa, self.__mao))
print(self)
print("\n" + str(mesa))
while (len(self.__maoJogaveis) == 0):
if (len(mesa.pegaPecasAComprar()) != 0):
self.adicionaPeca(mesa.comprarPeca())
self.__maoJogaveis = []
print("\n" + self.pecasJogaveis(mesa, self.__mao))
print(self)
else:
self.setaJogou(False)
self.setaVez(False)
oponente.setaVez(True)
print("J" + str(self.__ind) + " passou a vez.")
return
estadoAtual = EstadoMCTS(self, oponente, mesa)
noTeste = MonteCarloNo(estadoAtual)
noTeste.expandir()
print(noTeste)
noTeste.melhorFilho()
escolhida = int(input("Qual peça deseja jogar? "))
if (len(mesa.pegaTabuleiro()) != 0): pos = int(input("Em que posição?(0 p/ esquerda, 1 p/ direita) "))
else: pos = 0
peca = self.__mao.pop(escolhida - 1)
adicionou = mesa.adicionarNaMesa(peca, pos)
if (not adicionou): self.__mao.append(peca)
else: self.setaJogou(True)
self.__maoJogaveis = []
peca.ordem(len(mesa.pegaTabuleiro()))
self.setaVez(False)
oponente.setaVez(True)
return

# Define o método 'jogar' para um jogador 'random', usado para testes.
def jogarRandom(self, mesa, oponente):
if self.__vezAtual == False: return
if (self.__vezAtual == False): return
self.atualizaPecasJogaveis(mesa)
# Caso não existam peças jogáveis em sua mão, executa a compra de peças enquanto for possível.
if (len(self.pegaPecasJogaveis()) == 0): self.compraDaMesa(mesa)
#print("\n" + str(mesa))
#print("\n" + self.pecasJogaveis(mesa, self.__mao))
#print(self)
if (len(self.pegaPecasJogaveis()) == 0):
#mesa.fechada = True
if (len(self.__mao) != 0): self.compraDaMesa(mesa)
if (len(self.pegaPecasJogaveis()) == 0):
self.setaJogou(False)
#print("J" + str(self.__ind) + " passou a vez.")
else:
Expand All @@ -337,7 +327,7 @@ def jogarRandom(self, mesa, oponente):
peca = possibilidades[escolhida][0]
pos = possibilidades[escolhida][1]
self.removePeca(mesa, peca)
adicionou = mesa.adicionarNaMesa(peca, pos)
mesa.adicionarNaMesa(peca, pos)
self.setaJogou(True)
peca.ordem(len(mesa.pegaTabuleiro()))
self.setaVez(False)
Expand Down
8 changes: 8 additions & 0 deletions classes_base/Mesa.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ def comecarJogo(self, jogador1, jogador2):
jogador1.setaVez(True) if (maior1.somatorio() > maior2.somatorio()) else jogador2.setaVez(True)
else:
jogador1.setaVez(True) if ((somar1 == False) and (somar2 == True)) else jogador2.setaVez(True)

#if (jogador1.ehSuaVez()):
# jogador1.vezesQueComecou += 1
#elif (jogador2.ehSuaVez()):
# jogador2.vezesQueComecou += 1
jogador1.setaJogou(True)
jogador2.setaJogou(True)

print("Maior peça de jog. 1: " + str(maior1) + "\tSomar? " + str(somar1))
print("Maior peça de jog. 2: " + str(maior2) + "\tSomar? " + str(somar2))
return
Expand Down

0 comments on commit bc65387

Please sign in to comment.