X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=progcomp%2Fagents%2Fbasic_python%2Fbasic_python.py;h=b38483834124be627565d8771e59216a4a41ebf0;hp=93e4100fc3e85a0c76dc3e149caa0c7eb08b07b3;hb=e8a611c553bd336550c50ed7491d5800a2ae7142;hpb=6e5327743543d606ff88e4a8228989460f8a5a30 diff --git a/progcomp/agents/basic_python/basic_python.py b/progcomp/agents/basic_python/basic_python.py index 93e4100..b384838 100755 --- a/progcomp/agents/basic_python/basic_python.py +++ b/progcomp/agents/basic_python/basic_python.py @@ -62,6 +62,7 @@ class Piece: self.y = y self.lastMoved = -1 self.beenRevealed = False + self.positions = [(x, y)] def mobile(self): return self.rank != 'F' and self.rank != 'B' and self.rank != '?' and self.rank != '+' @@ -73,6 +74,12 @@ class Piece: return 0 +def valuedRank(rank): + if ranks.count(rank) > 0: + return len(ranks) - 2 - ranks.index(rank) + else: + return 0 + class BasicAI: @@ -89,8 +96,13 @@ class BasicAI: self.board = [] self.units = [] self.enemyUnits = [] - self.alliedNumber = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} - self.enemyNumber = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} + + self.totalAllies = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} + self.totalEnemies = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} + self.hiddenEnemies = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} + self.hiddenAllies = {'B':6,'1':1,'2':1,'3':2,'4':3,'5':4,'6':4,'7':4,'8':5,'9':8,'s':1,'F':1} + self.lastMoved = None + def Setup(self): @@ -230,11 +242,16 @@ class BasicAI: if attacker == None: return False + + lastMoved = attacker + defender = self.board[p[0]][p[1]] #Update attacker's position (Don't overwrite the board yet though) + attacker.x = p[0] attacker.y = p[1] + attacker.positions.insert(0, (attacker.x, attacker.y)) #Determine ranks of pieces if supplied @@ -242,8 +259,19 @@ class BasicAI: if defender == None: return False attacker.rank = result[outIndex+1].strip() + if attacker.beenRevealed == False: + if attacker.colour == self.colour: + self.hiddenAllies[attacker.rank] -= 1 + elif attacker.colour == oppositeColour(self.colour): + self.hiddenEnemies[attacker.rank] -= 1 attacker.beenRevealed = True defender.rank = result[outIndex+2].strip() + if defender.beenRevealed == False: + if defender.colour == self.colour: + self.hiddenAllies[defender.rank] -= 1 + elif defender.colour == oppositeColour(self.colour): + self.hiddenEnemies[defender.rank] -= 1 + defender.beenRevealed = True @@ -255,35 +283,35 @@ class BasicAI: self.board[p[0]][p[1]] = attacker if defender.colour == self.colour: - self.alliedNumber[defender.rank] -= 1 + self.totalAllies[defender.rank] -= 1 self.units.remove(defender) elif defender.colour == oppositeColour(self.colour): - self.enemyNumber[defender.rank] -= 1 + self.totalEnemies[defender.rank] -= 1 self.enemyUnits.remove(defender) elif outcome == "DIES": if attacker.colour == self.colour: - self.alliedNumber[attacker.rank] -= 1 + self.totalAllies[attacker.rank] -= 1 self.units.remove(attacker) elif attacker.colour == oppositeColour(self.colour): - self.enemyNumber[attacker.rank] -= 1 + self.totalEnemies[attacker.rank] -= 1 self.enemyUnits.remove(attacker) elif outcome == "BOTHDIE": self.board[p[0]][p[1]] = None if defender.colour == self.colour: - self.alliedNumber[defender.rank] -= 1 + self.totalAllies[defender.rank] -= 1 self.units.remove(defender) elif defender.colour == oppositeColour(self.colour): - self.enemyNumber[defender.rank] -= 1 + self.totalEnemies[defender.rank] -= 1 self.enemyUnits.remove(defender) if attacker.colour == self.colour: - self.alliedNumber[attacker.rank] -= 1 + self.totalAllies[attacker.rank] -= 1 self.units.remove(attacker) elif attacker.colour == oppositeColour(self.colour): - self.enemyNumber[attacker.rank] -= 1 + self.totalEnemies[attacker.rank] -= 1 self.enemyUnits.remove(attacker) elif outcome == "FLAG":