PyGame establece el cursor del mouse desde el mapa de bits

En este artículo, vamos a ver cómo configurar el cursor del mouse desde un mapa de bits usando el módulo PyGame en Python. 

¿Qué es PyGame?

  • Es un conjunto multiplataforma de módulos Python diseñados para escribir videojuegos.
  • Incluye gráficos por computadora y bibliotecas de sonido diseñadas para usarse con el lenguaje de programación Python.
  • Puede manejar tiempo, video, música, fuentes, diferentes formatos de imagen, cursores, mouse, teclado, joysticks, etc.

¿Qué es el mapa de bits?

  • Un mapa de bits es una array de datos binarios que representan los valores de los píxeles de una imagen.
  • Un GIF es un ejemplo de un archivo de imagen de gráficos que tiene un mapa de bits.

Función del ratón en PyGame

Se utiliza en juegos donde el programa necesita mantenerse actualizado con respecto a la posición del cursor.

pygame.mouse.get_pressed()

Devuelve la secuencia de booleanos que representan el estado de todos los botones del ratón. Un valor verdadero significa que el mouse se está presionando actualmente en el momento de la llamada.

Sintaxis: pygame.mouse.get_pressed(num_buttons=3) -> (boton1, boton2, boton3)

Parámetro:

  • num_buttons : Número de botones en el mouse (valor predeterminado = 3).

Esta función se utiliza para crear una superficie de visualización. Los argumentos pasados ​​son requests de un tipo de visualización. La visualización real creada será la mejor coincidencia posible admitida por el sistema.

Sintaxis :

Parámetro:

  • Resolución: un par de números que representan el ancho y el alto de la ventana.
  • Flags: Opciones adicionales que cambian el tipo de ventana.
  • Profundidad: cantidad de bits utilizados para el color.

pygame.mouse.get_pos()

Esto se usa para obtener las coordenadas X e Y del cursor del mouse. Estas coordenadas son relativas a la esquina superior izquierda de la pantalla. La posición del cursor es relativa.

Sintaxis : pygame.mouse.get_pos()

Retorno: Se almacenan las coordenadas del ratón.

pygame.quit()

Esto se utiliza para cerrar el juego.

Sintaxis : pygame.quit()

reloj.tick()

Al llamar a clock.tick(60) una vez por cuadro, el programa nunca se ejecutará a más de 60 cuadros por segundo.

Sintaxis : clock.tick(velocidad de fotogramas=0)

Parámetro:

  • Framerate: calculará cuántos milisegundos han pasado desde la llamada anterior.

Ejemplo 1: crear el archivo main.py para crear un círculo en la ruta del mouse.

En este ejemplo, vamos a dibujar un círculo en la pantalla dondequiera que se mueva el cursor dentro de la ventana, y para implementar esto tenemos que seguir los siguientes pasos:

  • Estaremos haciendo un lienzo de tamaño 960*600.
  • Escribiendo código para hacer nuestro círculo.
  • Mantenga un registro del cursor del mouse dentro del lienzo.
  • Dibujar círculos en los lugares donde se mueve el cursor.

Python3

import pygame
# initializing the pygame
pygame.init()
# displaying Canvas (960*600)
screen = pygame.display.set_mode((960, 600))
pygame.display.set_caption('GeeksForGeeks')
clock = pygame.time.Clock()
  
loop = True
while loop:
  
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            loop = False
    pos = pygame.mouse.get_pos()
    # giving color and shape to the circle
    pygame.draw.circle(screen, (0, 255, 0),
                       pos, 15, 1)
    pygame.display.update()
    clock.tick(60)
  
  
pygame.quit()
# quit()

Producción:

 

Ejemplo 2: Creación del archivo main.py para ubicar la dirección del cursor.

En este ejemplo, vamos a dibujar una flecha en el centro de la ventana y esta flecha apunta hacia el cursor dondequiera que el cursor se mueva dentro de la ventana del lienzo para implementar esto, debemos seguir los siguientes pasos:

  • Estaremos haciendo un lienzo de tamaño 640*480.
  • Ahora escriba un código para dibujar una flecha que apunte hacia el puntero del mouse.
  • Ahora haz un programa para rotar la flecha hacia el cursor.

Python3

import pygame as pg
from pygame.math import Vector2
  
  
class Player(pg.sprite.Sprite):
   # main function starts here
    def __init__(self, pos):
        super().__init__()
        self.image = pg.Surface((50, 30),
                                pg.SRCALPHA)
        pg.draw.polygon(self.image,
                        pg.Color('steelblue2'),
                        [(0, 0), (50, 15), (0, 30)])
        self.orig_image = self.image
        # Store a reference to the original.
        self.rect = self.image.get_rect(center=pos)
        self.pos = Vector2(pos)
  
    def update(self):
        self.rotate()
# Rotate the arrow function
  
    def rotate(self):
        # The vector to the target (the mouse position).
        direction = pg.mouse.get_pos() - self.pos
        # .as_polar gives you the polar
        # coordinates of the vector,
        # i.e. the radius (distance to the target)
        # and the angle.
        radius, angle = direction.as_polar()
        # Rotate the image by the negative angle
        # (y-axis in pygame is flipped).
        self.image = pg.transform.rotate(self.orig_image,
                                         -angle)
        # Create a new rect with the
        # center of the old rect.
        self.rect = self.image.get_rect(center=self.rect.center)
  
  
pg.init()
# Creating a canvas of size 640*480
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
all_sprites = pg.sprite.Group(Player((300, 220)))
done = False
  
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True
  
    all_sprites.update()
    screen.fill((30, 30, 30))
    all_sprites.draw(screen)
  
    pg.display.flip()
    clock.tick(30)

Producción:

 

Ejemplo 3: cambiar la forma del cursor del ratón

En este ejemplo, vamos a cambiar la forma del cursor cada vez que hacemos clic con el mouse, si el cursor está dentro de la ventana de la pantalla, para implementar esto, debemos seguir los siguientes pasos:

  • Primero, haremos un lienzo de 600*400.
  • Blanco un código para rastrear el cursor del ratón.
  • Ahora escribiremos un código para cambiar la forma del Cursor si se hace clic con el mouse.

Python3

import pygame
pygame.init()
  
# Creating a canvas of 600*400
screen = pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
  
# old type, "bitmap" cursor
cursor1 = pygame.cursors.diamond
  
# new type, "system" cursor
cursor2 = pygame.SYSTEM_CURSOR_HAND
  
# new type, "color" cursor
surf = pygame.Surface((30, 25), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 255, 0), [0, 0, 10, 10])
pygame.draw.rect(surf, (0, 255, 0), [20, 0, 10, 10])
pygame.draw.rect(surf, (255, 0, 0), [5, 5, 20, 20])
cursor3 = pygame.cursors.Cursor((15, 5), surf)
  
cursors = [cursor1, cursor2, cursor3]
cursor_index = 0
  
# the arguments to set_cursor can be a Cursor object
# or it will construct a Cursor object
# internally from the arguments
pygame.mouse.set_cursor(cursors[cursor_index])
  
while True:
    screen.fill("purple")
  
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            cursor_index += 1
            cursor_index %= len(cursors)
            pygame.mouse.set_cursor(cursors[cursor_index])
  
        if event.type == pygame.QUIT:
            pygame.quit()
            raise SystemExit
  
    pygame.display.flip()
    clock.tick(144)

Producción:

 

Publicación traducida automáticamente

Artículo escrito por ayushcoding100 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *