Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- class Line:
- def __init__(self, color, start_point, end_point):
- self.start_point = start_point
- self.end_point = end_point
- self.color = color
- def draw(self, surface):
- pygame.draw.line(surface, self.color, self.start_point, self.end_point)
- def get_line_angle_front(self, angle, color, length=0):
- vector = pygame.Vector2(self.end_point) - pygame.Vector2(self.start_point)
- vector.normalize_ip()
- vector.rotate_ip(angle)
- return self._get_line_angle(vector, self.start_point, angle, color, length)
- def get_line_angle_back(self, angle, color, length=0):
- vector = pygame.Vector2(self.start_point) - pygame.Vector2(self.end_point)
- vector.normalize_ip()
- vector.rotate_ip(angle)
- return self._get_line_angle(vector, self.end_point, angle, color, length)
- def _get_line_angle(self, vector, point, angle, color, length):
- if length < 1:
- length = pygame.Vector2(self.start_point).distance_to(pygame.Vector2(self.end_point))
- end_point = pygame.Vector2(point) + vector * length
- return Line(color, point, vec_to_int(end_point))
- def vec_to_int(vector):
- return tuple(map(int, vector))
- def main(caption, size, flags=0):
- pygame.display.set_caption(caption)
- surface = pygame.display.set_mode(size, flags)
- clock = pygame.time.Clock()
- rect = surface.get_rect()
- running = True
- delta = 0
- fps = 30
- line = Line("dodgerblue", rect.center, (rect.w - 100, rect.h - 100))
- lines = [line,
- line.get_line_angle_front(90, "lawngreen", 0),
- line.get_line_angle_back(90, "firebrick", 30)
- ]
- while running:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- surface.fill("gray10")
- for l in lines:
- l.draw(surface)
- pygame.display.flip()
- delta = clock.tick(fps) * 0.001
- if __name__ == "__main__":
- pygame.init()
- main("Alter Image", (400, 300))
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement