import pygame import math class Point(): # constructed using a normal tupple def __init__(self, point_t = (0,0)): self.x = float(point_t[0]) self.y = float(point_t[1]) # define all useful operators def __add__(self, other): return Point((self.x + other.x, self.y + other.y)) def __sub__(self, other): return Point((self.x - other.x, self.y - other.y)) def __mul__(self, scalar): return Point((self.x*scalar, self.y*scalar)) def __truediv__(self, scalar): return Point((self.x/scalar, self.y/scalar)) def __len__(self): return int(math.sqrt(self.x**2 + self.y**2)) # get back values in original tuple format def get(self): return (self.x, self.y) def draw_dashed_line(surf, color, start_pos, end_pos, width=1, dash_length=10): origin = Point(start_pos) target = Point(end_pos) displacement = target - origin length = len(displacement) slope = displacement/length for index in range(0, int(length/dash_length), 2): start = origin + (slope * index * dash_length) end = origin + (slope * (index + 1) * dash_length) pygame.draw.line(surf, color, start.get(), end.get(), width) if __name__ == "__main__": start =(50,50) end =(100,50) surface = pygame.Surface( (200,200) ) draw_dashed_line( surface, pygame.Color("Black"), start, end, width=1 )