diff --git a/funcs/games/hex.py b/funcs/games/hex.py index 17d017c..27e9793 100644 --- a/funcs/games/hex.py +++ b/funcs/games/hex.py @@ -43,7 +43,7 @@ def parseHex(command, channel, user): # Placing a piece elif commands[0] == "place": try: - return placePiece(channel,int(commands[1]),commands[2]) + return placeHex(channel,int(commands[1]),commands[2]) except: return "I didn't get that. To place a piece use \"!hex place [player number] [position]\". A valid position is e.g. \"e2\".", False, False, False, False else: @@ -136,7 +136,7 @@ def placeHex(channel : str,player : int,position : str): message = data["hex games"][channel]["players"][won-1]+" won!" if data["hex games"][channel]["players"][won-1] != "Gwendolyn": - winAmount = data["hex games"][channel][difficulty]^2+5 + winAmount = data["hex games"][channel]["difficulty"]^2+5 message += " Adding "+str(winAmount)+" GwendoBucks to their account." else: gameWon = False @@ -196,7 +196,7 @@ def isHexWon(board): piecePlayer = board[row][place] if piecePlayer != 0: # Checks horizontal - if place <= columnCount-4: + if place <= boardWidth-4: pieces = [board[row][place+1],board[row][place+2],board[row][place+3]] else: pieces = [0] @@ -207,7 +207,7 @@ def isHexWon(board): winCoordinates = [row,place] # Checks vertical - if row <= rowCount-4: + if row <= boardWidth-4: pieces = [board[row+1][place],board[row+2][place],board[row+3][place]] else: pieces = [0] @@ -218,7 +218,7 @@ def isHexWon(board): winCoordinates = [row,place] # Checks right diagonal - if row <= rowCount-4 and place <= columnCount-4: + if row <= boardWidth-4 and place <= boardWidth-4: pieces = [board[row+1][place+1],board[row+2][place+2],board[row+3][place+3]] else: pieces = [0] @@ -229,7 +229,7 @@ def isHexWon(board): winCoordinates = [row,place] # Checks left diagonal - if row <= rowCount-4 and place >= 3: + if row <= boardWidth-4 and place >= 3: pieces = [board[row+1][place-1],board[row+2][place-2],board[row+3][place-3]] else: pieces = [0] @@ -240,7 +240,7 @@ def isHexWon(board): winCoordinates = [row,place] - return won, winDirection, winCoordinates + return won, winningPieces # Plays as the AI def hexAI(channel): @@ -253,11 +253,11 @@ def hexAI(channel): difficulty = data["hex games"][channel]["difficulty"] scores = [-math.inf,-math.inf,-math.inf,-math.inf,-math.inf,-math.inf,-math.inf] - for column in range(0,columnCount): + for column in range(0,boardWidth): testBoard = copy.deepcopy(board) - testBoard = placeOnBoard(testBoard,player,column) + testBoard = placeOnHexBoard(testBoard,player,column) if testBoard != None: - scores[column] = minimax(testBoard,difficulty,player%2+1,player,-math.inf,math.inf,False) + scores[column] = minimaxHex(testBoard,difficulty,player%2+1,player,-math.inf,math.inf,False) logThis("Best score for column "+str(column)+" is "+str(scores[column])) possibleScores = scores.copy() @@ -269,7 +269,7 @@ def hexAI(channel): indices = [i for i, x in enumerate(scores) if x == highest_score] placement = random.choice(indices) - return placePiece(channel,player,placement) + return placeHex(channel,player,placement) # Calculates points for a board def AICalcHexPoints(board,player): @@ -279,31 +279,31 @@ def AICalcHexPoints(board,player): # Adds points for middle placement for row in range(len(board)): if board[row][3] == player: - score += AIScores["middle"] + score += AIScoresHex["middle"] # Checks horizontal - for row in range(rowCount): + for row in range(boardWidth): rowArray = [int(i) for i in list(board[row])] - for place in range(columnCount-3): + for place in range(boardWidth-3): window = rowArray[place:place+4] score += evaluateWindow(window,player,otherPlayer) # Checks Vertical - for column in range(columnCount): + for column in range(boardWidth): columnArray = [int(i[column]) for i in list(board)] - for place in range(rowCount-3): + for place in range(boardWidth-3): window = columnArray[place:place+4] score += evaluateWindow(window,player,otherPlayer) # Checks right diagonal - for row in range(rowCount-3): - for place in range(columnCount-3): + for row in range(boardWidth-3): + for place in range(boardWidth-3): window = [board[row][place],board[row+1][place+1],board[row+2][place+2],board[row+3][place+3]] score += evaluateWindow(window,player,otherPlayer) # Checks left diagonal - for row in range(rowCount-3): - for place in range(3,columnCount): + for row in range(boardWidth-3): + for place in range(3,boardWidth): window = [board[row][place],board[row+1][place-1],board[row+2][place-2],board[row+3][place-3]] score += evaluateWindow(window,player,otherPlayer) @@ -313,20 +313,20 @@ def AICalcHexPoints(board,player): ## Add points if AI wins #if won == player: - # score += AIScores["win"] + # score += AIScoresHex["win"] return score #def evaluateWindow(window,player,otherPlayer): # if window.count(player) == 4: -# return AIScores["win"] +# return AIScoresHex["win"] # elif window.count(player) == 3 and window.count(0) == 1: -# return AIScores["three in a row"] +# return AIScoresHex["three in a row"] # elif window.count(player) == 2 and window.count(0) == 2: -# return AIScores["two in a row"] +# return AIScoresHex["two in a row"] # elif window.count(otherPlayer) == 4: -# return AIScores["enemy win"] +# return AIScoresHex["enemy win"] # else: # return 0 @@ -338,7 +338,7 @@ def minimaxHex(board, depth, player , originalPlayer, alpha, beta, maximizingPla return points if maximizingPlayer: value = -math.inf - for column in range(0,columnCount): + for column in range(0,boardWidth): testBoard = copy.deepcopy(board) testBoard = placeOnHexBoard(testBoard,player,column) if testBoard != None: @@ -351,7 +351,7 @@ def minimaxHex(board, depth, player , originalPlayer, alpha, beta, maximizingPla return value else: value = math.inf - for column in range(0,columnCount): + for column in range(0,boardWidth): testBoard = copy.deepcopy(board) testBoard = placeOnHexBoard(testBoard,player,column) if testBoard != None: