🐛 Lots of small corrections

This commit is contained in:
jona605a
2020-08-04 19:48:23 +02:00
parent 5199603417
commit 1b58668f23

View File

@ -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: