예제 #1
0
    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)
예제 #2
0
	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)
예제 #3
0
    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)
예제 #4
0
	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)