def move_torpedo(self, torpedo_id, dx, dy): coords = self.canvas.coords(torpedo_id) if self.check_underwater(torpedo_id): self.canvas.move(torpedo_id, dx, dy) # detect if torpedo hit ship overlapping_objects = set( self.canvas.find_overlapping(*self.canvas.coords(torpedo_id))) ships = set(self.canvas.find_withtag("ship")) overlapping_ships = overlapping_objects & ships if overlapping_ships: self.out_queue.put("hit %d" % overlapping_ships.pop()) torpedo_center = graphics_helpers.circle_center_from_bbox( 5, coords) self.canvas.delete(torpedo_id) kaboom = self.canvas.create_image(torpedo_center[0], torpedo_center[1], image=self.explosion) self.root.after(500, self.canvas.delete, kaboom) self.root.after(50, self.move_torpedo, *[torpedo_id, dx, dy]) else: # if torpedo left the sea, delete it self.canvas.delete(torpedo_id)
def torpedo_deltas(self, torpedo_coords, dest_coords): torpedo_center = graphics_helpers.circle_center_from_bbox(5, torpedo_coords) # get difference of destination coordinates from center coordinates tx, ty = [float(dest_coords[0]-torpedo_center[0]), float(dest_coords[1]-torpedo_center[1])] # dx, dy and desired speed form a right triangle return graphics_helpers.deltas_for_speed(7, tx, ty)
def torpedo_deltas(self, torpedo_coords, dest_coords): torpedo_center = graphics_helpers.circle_center_from_bbox( 5, torpedo_coords) # get difference of destination coordinates from center coordinates tx, ty = [ float(dest_coords[0] - torpedo_center[0]), float(dest_coords[1] - torpedo_center[1]) ] # dx, dy and desired speed form a right triangle return graphics_helpers.deltas_for_speed(7, tx, ty)
def move_torpedo(self, torpedo_id, dx, dy): coords = self.canvas.coords(torpedo_id) if self.check_underwater(torpedo_id): self.canvas.move(torpedo_id, dx, dy) # detect if torpedo hit ship overlapping_objects = set(self.canvas.find_overlapping(*self.canvas.coords(torpedo_id))) ships = set(self.canvas.find_withtag("ship")) overlapping_ships = overlapping_objects & ships if overlapping_ships: self.out_queue.put("hit %d" % overlapping_ships.pop()) torpedo_center = graphics_helpers.circle_center_from_bbox(5, coords) self.canvas.delete(torpedo_id) kaboom = self.canvas.create_image(torpedo_center[0], torpedo_center[1], image=self.explosion) self.root.after(500, self.canvas.delete, kaboom) self.root.after(50, self.move_torpedo, *[torpedo_id, dx, dy]) else: # if torpedo left the sea, delete it self.canvas.delete(torpedo_id)