Ejemplo n.º 1
0
def alphabeta(currState):
    value = -100
    currNodeType = "MAX"
    action = 0
    alpha = -100
    beta = 100

    clickArrAction = []
    clickArrAction = possibleClicks(currState)
    print("possible action clicks", clickArrAction)
    temp = 0
    global abcountNodes

    for i in clickArrAction:
        print(i)

        s = nextStates(currState, i, currNodeType)
        abcountNodes = abcountNodes + 1
        print("state---", s)
        print("please wait, game tree on process.....")
        if terminalTest(s) and utilityValue(s) == 1:
            return i

        temp = abmin_value(s,alpha,beta)
        print("uti val--> ",temp)
        print("---------------")
        if temp > value:
            value = temp
            action = i
        alpha = max(alpha,value)
        if alpha >= beta:
            break

    return action
Ejemplo n.º 2
0
def minimax(currState):

    value = -100
    currNodeType = "MAX"
    action = 0

    clickArrAction = []
    clickArrAction = possibleClicks(currState)
    print("possible action clicks", clickArrAction)
    temp = 0

    for i in clickArrAction:
        print(i)

        s = nextStates(currState, i, currNodeType)
        print("minimax state---", s)
        print("please wait, game tree on process.....")
        if terminalTest(s) and utilityValue(s) == 1:
            return i

        temp = min_value(s)
        print("uti val--> ", temp)
        print("---------------")
        if temp > value:
            value = temp
            action = i

    return action
Ejemplo n.º 3
0
def max_value(currState):

    if terminalTest(currState):
        return utilityValue(currState)

    value = -100
    currNodeTpye = "MAX"
    clickArr = []
    clickArr = possibleClicks(currState)

    for i in clickArr:
        temp = min_value(nextStates(currState, i, currNodeTpye))
        if temp > value:
            value = temp

    return value
Ejemplo n.º 4
0
def abmax_value(currState, alpha, beta):
    if terminalTest(currState):
        return utilityValue(currState)

    value = -100
    currNodeTpye = "MAX"
    clickArr = []
    clickArr = possibleClicks(currState)
    global abcountNodes

    for i in clickArr:
        abcountNodes = abcountNodes + 1
        temp = abmin_value(nextStates(currState, i, currNodeTpye),alpha,beta)
        if temp > value:
            value = temp
        alpha = max(alpha,value)
        if alpha >= beta:
            break

    return value
Ejemplo n.º 5
0
    def b16clicked(self):
        if not possibleClicks(globalState).__contains__([3, 3]):
            self.winL.setText(
                "HUMAN TURN -- \nPlease place your coin in right position")
            self.winL.adjustSize()
            return
        else:
            self.b[15].setIcon(QIcon("blue.png"))
            self.b[15].setIconSize(QSize(50, 50))
            self.b[15].setEnabled(False)
            globalState.humanCoord.append([3, 3])

            if terminalTest(globalState) and utilityValue(globalState) == -1:
                self.winL.setText("HUMAN WON!! Please reset")
                self.winL.adjustSize()
                for i in range(16):
                    self.b[i].setEnabled(False)
                return

            if self.gameType == "MINIMAX":
                action = minimax(globalState)
            elif self.gameType == "ALPHABETA":
                action = alphabeta(globalState)

            globalState.machineCoord.append(action)
            temp = coordToNo(action)
            self.b[temp - 1].setIcon(QIcon("green.png"))
            self.b[temp - 1].setIconSize(QSize(50, 50))
            self.b[temp - 1].setEnabled(False)

            if terminalTest(globalState) and utilityValue(globalState) == 1:
                self.winL.setText("MACHINE WON!! Please reset")
                self.winL.adjustSize()
                for i in range(16):
                    self.b[i].setEnabled(False)
                return

            self.winL.setText(
                "Machine already played ! \nHuman it's your Turn...Place your blue coin"
            )
            self.winL.adjustSize()