Skip to content
Snippets Groups Projects
Commit 9e4bc3c0 authored by Sam Moore's avatar Sam Moore
Browse files

Fixed bug in simulate.py + hacky fix for bug in vixen

simulate.py wasn't setting the "gameID" variable correctly,
meaning all games were logged to "red.vs.blue.1.1"

Bug in vixen found by [SLX]; it attempts to move outside the board.
Usually when losing.

Path finding algorithm (path.py) shouldn't move outside the board.
But somehow it is.

Hacky fix at the moment by checking for moves outside the board in
vixen's score calculation, and allocating -100 to these moves.
parent e73b3387
Branches
No related merge requests found
......@@ -61,7 +61,7 @@ class Vixen(BasicAI):
moveList.append({"unit":unit, "direction":bestScore[0], "score":bestScore[1]})
if len(moveList) == 0:
if len(moveList) <= 0:
print "NO_MOVE"
return True
......@@ -86,7 +86,8 @@ class Vixen(BasicAI):
def CalculateScore(self, attacker, defender, path):
p = move(attacker.x, attacker.y, path[0], 1)
if p[0] < 0 or p[0] >= len(self.board) or p[1] < 0 or p[1] >= len(self.board[p[0]]):
return -100.0
total = 0.0
count = 0.0
......
......@@ -221,13 +221,16 @@ for roundNumber in range(totalRounds, totalRounds + nRounds):
for blue in agents: #against each other agent, playing as blue
if red == blue:
continue #Exclude battles against self
gameNumber += 1
gameID = str(roundNumber) + "." + str(gameNumber)
for i in range(1, nGames/2 + 1):
gameNumber += 1
gameID = str(roundNumber) + "." + str(gameNumber)
#Play a game and read the result. Note the game is logged to a file based on the agent's names
if verbose:
sys.stdout.write("Agents: \""+red["name"]+"\" and \""+blue["name"]+"\" playing game (ID: " + gameID + ") ... ")
logFile = logDirectory + "round"+str(roundNumber) + "/"+red["name"]+".vs."+blue["name"]+"."+str(gameID)
errorLog = [logDirectory + "error/" + red["name"] + "."+str(gameID), logDirectory + "error/" + blue["name"] + "."+str(gameID)]
outline = os.popen(managerPath + " -o " + logFile + " -T " + str(timeoutValue) + " " + red["path"] + " " + blue["path"], "r").read()
results = outline.split(' ')
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment