diff --git a/final_bot/heap.py b/final_bot/heap.py index def824d..d0d8852 100644 --- a/final_bot/heap.py +++ b/final_bot/heap.py @@ -1,3 +1,4 @@ + class Heap(object): """" Attributes: @@ -40,9 +41,10 @@ def _heapify(self, element_id): def del_min(self): if self.is_empty(): return None - x = self.heap.pop(0) + x = self.heap[0] if not self.is_empty(): - self.heap = [self.heap[-1]] + self.heap[0:-1] + self.heap[0] = self.heap[-1] + self.heap.pop() self._heapify (0) return x diff --git a/final_bot/path_finding.py b/final_bot/path_finding.py index 965b74b..9f6b1e4 100644 --- a/final_bot/path_finding.py +++ b/final_bot/path_finding.py @@ -1,7 +1,6 @@ import heap class Node(): - """A node class for A* Pathfinding""" def __init__(self, parent=None, position=None): self.parent = parent @@ -18,7 +17,6 @@ def compare(parent, child): return parent.f <= child.f def astar(maze, start, end): - """Returns a list of tuples as a path from the given start to the given end in the given maze""" # Create start and end node start_node = Node(None, start) @@ -31,7 +29,6 @@ def astar(maze, start, end): closed_list = [[0 for i in range(len(maze))] for i in range(len(maze))] open_list = [[0 for i in range(len(maze))] for i in range(len(maze))] - # Add the start node open_heap.add(start_node) x,y = start_node.position @@ -41,10 +38,9 @@ def astar(maze, start, end): while not open_heap.is_empty(): # Get the current node - current_node = open_heap.min() # Pop current off open list, add to closed list - open_heap.del_min() + current_node = open_heap.del_min() x,y = current_node.position closed_list[x][y] = 1 open_list[x][y] = 0 @@ -99,39 +95,5 @@ def astar(maze, start, end): # Add the child to the open list open_heap.add(child) x,y = child.position - open_list[x][y] = 1 - -def main(): - m = [ - [True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True], - [True, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, True], - [True, False, False, False, False, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, False, False, False, False, True], - [True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True], - [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], - [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], - [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], - [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True], [True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True], [True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, False, False, True, False, False, False, False, False, True, True, True, False, True, True, True, True, True, True, False, True, True, True, False, False, False, False, False, True, False, False, True], [True, True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, True], [True, True, True, True, True, True, True, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]] - - start = (12,24) - end = (13, 26) - maze = [[0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 1, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 1, 0, 0, 0]] - - #start = (0, 4) - #end = (8, 4) - - path = astar(m, start, end) - print(path) - - -if __name__ == '__main__': - main() \ No newline at end of file + open_list[x][y] = 1 diff --git a/final_bot/robot.py b/final_bot/robot.py index e2028eb..5da8dd7 100644 --- a/final_bot/robot.py +++ b/final_bot/robot.py @@ -1,11 +1,11 @@ from battlecode import BCAbstractRobot, SPECS import battlecode as bc import random -#import path_finding +import path_finding __pragma__('iconv') __pragma__('tconv') -__pragma__('opov') +#__pragma__('opov') # don't try to use global variables!! @@ -75,13 +75,11 @@ def is_adjacent(self, r): # Returns true if 'r' object is adjacent to 'self' ob return False def turn(self): - pass -''' attackable = [] passable_map = self.get_passable_map() karbonite_map = self.get_karbonite_map() visible_map = self.get_visible_robot_map() - #fuel_map = self.get_fuel_map() + fuel_map = self.get_fuel_map() visible_robots = self.get_visible_robots() if self.spawnloc is None: @@ -99,6 +97,7 @@ def turn(self): return self.give(r.x - self.me.x, r.y - self.me.y, self.me.karbonite, self.me.fuel) if self.me['unit'] == SPECS['CASTLE']: + self.log("Castle") for dx, dy in self.surrounding_tiles: x = self.me.x+dx @@ -135,10 +134,10 @@ def turn(self): return move elif self.me['unit'] == SPECS["CRUSADER"]: - self.log("Crusader" + str(self.me.turn)) + self.log("Crusader") if attackable: r = attackable[0] - self.log('attacking! ' + str(r) + ' at loc ' + + self.log('attacking! ' + ' at loc ' + (r.x - self.me.x, r.y - self.me.y)) return self.attack(r.x - self.me.x, r.y - self.me.y) @@ -150,5 +149,5 @@ def turn(self): move = self.move_to(*self.destination, passable_map, visible_map) if(move is not None): return move -''' + robot = MyRobot() diff --git a/replay.bc19 b/replay.bc19 index aed8e7a..f5414df 100644 Binary files a/replay.bc19 and b/replay.bc19 differ