Python Forum
Thread Rating:
  • 1 Vote(s) - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyGame] Common Tasks
#10
Rotate to Mouse Position
import pygame as pg
import math

class Rotator:
    def __init__(self, screen_rect):
        self.orig_image = pg.Surface([10,100]).convert_alpha() #
        self.image = self.orig_image
        self.image.fill((255,255,255))
        self.rect = self.image.get_rect(center=screen_rect.center)
        self.angle = 0
        self.distance = 0
        self.angle_offset = 0

    def render(self, screen):
        screen.blit(self.image, self.rect)
        
    def get_angle(self):
        mouse = pg.mouse.get_pos()
        offset = (self.rect.centerx-mouse[0],self.rect.centery-mouse[1])
        self.angle = math.degrees(math.atan2(*offset)) - self.angle_offset
        old_center = self.rect.center
        self.image = pg.transform.rotate(self.orig_image, self.angle)
        self.rect = self.image.get_rect(center=old_center)
        self.distance = math.sqrt((offset[0] * offset[0]) + (offset[1] * offset[1]))
        
    def update(self):
        self.get_angle()
        self.display = 'angle:{:.2f} disatance:{:.2f}'.format(self.angle, self.distance)

if __name__ == '__main__':
    running = True
    pg.init()
    screen = pg.display.set_mode((600,400))
    screen_rect = screen.get_rect()
    rotator = Rotator(screen_rect)
    clock = pg.time.Clock()

    while running:
        screen.fill((0,0,0))
        for event in pg.event.get():
            if event.type == pg.QUIT:
                running = False
        rotator.update()
        rotator.render(screen)
        pg.display.set_caption(rotator.display)
        pg.display.update()
        clock.tick(60)
Recommended Tutorials:
Reply


Messages In This Thread
Common Tasks - by metulburr - Nov-05-2017, 11:55 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:22 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:23 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:23 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:24 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:26 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:26 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:26 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:27 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:27 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:27 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:28 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:28 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:28 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:28 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:28 PM
RE: Common Tasks - by metulburr - Feb-01-2020, 07:40 PM
RE: Common Tasks - by metulburr - Feb-02-2020, 06:20 PM
RE: Common Tasks - by metulburr - Feb-06-2020, 11:57 AM
RE: Common Tasks - by metulburr - Jul-06-2020, 10:46 AM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020