예제 #1
0
    def playTraining(self, spectate=False):

        (player1, player2) = self.players
        player1.setPlayerNumber(GameTokens.PLAYER1)
        player2.setPlayerNumber(GameTokens.PLAYER2)
        b = Board()
        finished = False
        res = False

        while not finished:
            if spectate:
                gui.printClear()
                gui.printBoardHex(b.getMatrix(), False, b.fromVirtual)

            # Jugador 1 elige su movimiento y juega
            ((fromX2, fromY2), (toX2, toY2)) = player1.chooseMove(b)
            b.moveToken(player1.playerNumber, fromX2, fromY2, toX2, toY2)

            # Se checkea si el jugador 1 ganó
            if b.checkWin(player1.playerNumber):
                finished = True
                res = GameResults.WIN

            # Si el jugador 1 no ganó, el jugador 2 elige su movimiento y juega
            if not finished:
                # time.sleep(0.5)
                ((fromX2, fromY2), (toX2, toY2)) = player2.chooseMove(b)
                b.moveToken(player2.playerNumber, fromX2, fromY2, toX2, toY2)

                if b.checkWin(player2.playerNumber):
                    finished = True
                    res = GameResults.LOSE

            # Agrega el tablero al tablero de turnos
            self.boards.append(copy.deepcopy(b))

            if len(self.boards) >= self.maxRounds:
                finished = True
                res = GameResults.DRAW
            # time.sleep(0.5)

        print("Partida finalizada con resultado " + str(res))
        return res
예제 #2
0
    def playUI(self):
        b = Board()
        player = self.players
        keyboard = ''

        while keyboard != '0':

            gui.printClear()

            if self.boardPrint == 1:
                gui.printBoardHex(b.getMatrix(), False, b.fromVirtual)
            elif self.boardPrint == 2:
                gui.printBoardHex(b.getMatrix(), True, b.fromVirtual)
            elif self.boardPrint == 3:
                gui.printBoardMatrix(b.getMatrix(), b.getLength())

            (keyboard, keyboardToken) = gui.printGameMenuOption()

            if keyboard == '1':
                self.boardPrint = 1

            elif keyboard == '2':
                self.boardPrint = 2

            elif keyboard == '3':
                self.boardPrint = 3

            elif keyboard == '4':
                gui.printFeatures(b.getFeatures(GameTokens.PLAYER2))
                input()

            elif keyboard == '5':
                gui.printFeatures(b.getPlayerFeatures(GameTokens.PLAYER2))
                input()

            elif keyboard == 'PASS':
                ((fromX2, fromY2), (toX2, toY2)) = player.chooseMove(b)
                b.moveToken(GameTokens.PLAYER1, fromX2, fromY2, toX2, toY2)

                if b.checkWin(GameTokens.PLAYER1):
                    print("-> Has perdido la partida!")
                    input()
                    return

            elif keyboardToken is not None:
                coords = keyboard.split(',')
                token = (int(coords[0]), int(coords[1]))
                if token in b.getPlayerSlots(GameTokens.PLAYER2):
                    goal = (b.getRadius(), -(b.getLength() - 1))
                    print("Suma cuadrada de distancia al extremo: " +
                          str(b.hexDistance(token, goal)))
                    print("Suma cuadrada de distancia al centro: " +
                          str(b.verticalCenterDistance(token)))
                    print(
                        "Suma de maxima cantidad de saltos: " +
                        str(b.maxHopsToGoal(token, GameTokens.PLAYER2, goal)))
                    print()
                    input()

            elif keyboard != '0':
                try:
                    coords = keyboard.split()

                    fromSlot = coords[0].split(',')
                    toSlot = coords[1].split(',')

                    (fromX, fromY) = (int(fromSlot[0]), int(fromSlot[1]))
                    (toX, toY) = (int(toSlot[0]), int(toSlot[1]))

                    res = b.moveToken(GameTokens.PLAYER2, fromX, fromY, toX,
                                      toY)
                    if res == GameTokenMoves.INVALID_MOVE:
                        print("-> La ficha en " + str((fromX, fromY)) +
                              " no puede llegar a " + str((toX, toY)) +
                              ". Intentelo de nuevo")
                        input()
                    elif res == GameTokenMoves.TOKEN_FROM:
                        print("-> No hay una ficha suya en " +
                              str((fromX, fromY)) + ". Intentelo de nuevo")
                        input()
                    elif res == GameTokenMoves.TOKEN_TO:
                        print("-> Ya hay una ficha en " + str((toX, toY)) +
                              ". Intentelo de nuevo")
                        input()
                    elif res == GameTokenMoves.INVALID_COORDS:
                        print("-> No existe en el tablero la posición " +
                              str((fromX, fromY)) + " o la posición " +
                              str((toX, toY)) + ". Intentelo de nuevo")
                        input()
                    elif res == GameTokenMoves.VALID_MOVE:

                        # Checkea si el jugador humano ganó luego de su jugada
                        if b.checkWin(GameTokens.PLAYER2):
                            self.boards.append(copy.deepcopy(b))
                            return GameResults.WIN

                        # El turno pasa al otro jugador, que elige su jugada
                        ((fromX2, fromY2), (toX2, toY2)) = player.chooseMove(b)
                        b.moveToken(GameTokens.PLAYER1, fromX2, fromY2, toX2,
                                    toY2)

                        # Agrega el tablero al tablero de turnos
                        self.boards.append(copy.deepcopy(b))

                        # Checkea si el jugador automatico ganó luego de su jugada
                        if b.checkWin(GameTokens.PLAYER1):
                            return GameResults.LOSE

                except Exception as e:
                    print(e)
                    print(
                        "-> La entrada ingresada no sigue el formato adecuado. Intentelo de nuevo"
                    )
                    input()
예제 #3
0
                'options': options,
            }
            classifiers.append(classifier)

            gui.printTrainedClassifier(classifier)
            input("-> Oprima enter para volver al menú")

        elif op == MenuOps.CLASSIFY:

            if classifiers == []:
                print()
                print("-> No hay clasificadores, entrene uno para clasificar")
                input("-> Oprima enter para volver al menú")

            else:
                gui.printClear()
                gui.printClassifiers(classifiers)

                c = int(input("-> Elija un clasificador por el índice: "))
                c -= 1
                print("")

                if c >= 0 and c < len(classifiers):
                    print("-> Ingrese un ejemplo a clasificar:")
                    print(
                        "ATRIBUTOS: " +
                        str(classifiers[c]['model'].getModelAttributesNames()))
                    example = input()
                    example = parser.getFormattedExample(
                        example,
                        classifiers[c]['model'].getModelAttributesNames())