Rotar imagen Pygame

Vamos a rotar una imagen manejando el ratón, y para ello comenzamos definiendo la ventana y cargando las dos imágenes (fondo y arco).

import pygame
import sys
pygame.init()

ancho = 1080 
alto = 700

#----------------Ventana y título---------------------
ventana = pygame.display.set_mode((ancho,alto)) 
pygame.display.set_caption('Arco')
clock=pygame.time.Clock()

posArco = 660,600

pygame.mouse.set_visible(0) #Oculto el puntero en 0
fondo =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/Fondo/bosque.png").convert()

arco =pygame.image.load("E:/NUEVO 2020/PYTHON/pygame/Anima2/arco180.png").convert_alpha()

#/////////////////Bucle del juego/////////////////
gameOver=False
while not gameOver:
    
    clock.tick(27)
    pygame.time.delay(20)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameOver=True

Asignamos a la variable X e Y los valores del puntero del ratón. Esa posición del ratón la dividimos entre 6 y calculamos el ángulo a 180 grados.

    #------------ LOGICA -------------------
    x,y = pygame.mouse.get_pos()
    x=x/6
    angulo=180-x

A continuación rotamos el arco el valor de «angulo»

img=pygame.transform.rotate(arco, angulo)

Convertimos la imagen a rectángulo y centramos el rectángulo en la posición del arco.

    img_rect=img.get_rect() #Imagen a rectángulo
    
    img_rect.center=posArco #Centro del rectángulo a posición arco

Dibujamos el fondo, el arco y cerramos.

        #-------------FONDO---------------------
    ventana.blit(fondo, [0,0])
    
        #------------ DIBUJO ------------------
    ventana.blit(img, img_rect)
    
    pygame.display.flip()
pygame.quit()

Juande Marín

Profesor de Marketing digital, divulgador de inteligencia artificial y neuroeducación. Especializado en posicionamiento en buscadores y diseño web. Autor de varios libros relacionados con el comercio electrónico y el marketing digital (McGraw Hill, Paraninfo,…) Juande2marin

Material didáctico

Descubre un material moderno y adaptado a ciclos formativos.