Pygame – Manejo de entrada

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.

El módulo sys en Python proporciona varias funciones y variables que se utilizan para manipular diferentes partes del entorno de tiempo de ejecución de Python. Permite operar sobre el intérprete ya que proporciona acceso a las variables y funciones que interactúan fuertemente con el intérprete.

Manejo de entradas de teclados

Pasos básicos para manejar la entrada del teclado:

  • Importe las bibliotecas requeridas.
  • Cree un objeto de superficie de visualización utilizando el método display.set_mode() de pygame.
  • Cargue la imagen/objeto.
  • Cree un evento de clic, es decir, KEYDOWN
  • Defina todas las claves de eventos y realice la tarea.
  • Cree un evento de pausa, es decir, KEYUP
  • Copiar el objeto de superficie de texto en el objeto de superficie de visualización usando el método blit() del objeto de superficie de visualización de pygame.
  • Muestre el objeto de la superficie de visualización en la ventana de pygame utilizando el método display.update() de pygame.

Ejemplo:

Python3

# importing all the required libraries
import pygame
from pygame.locals import *
from sys import exit
 
# initiating pygame library to use it's
# functions
pygame.init()
 
# declaring windows/surface width and height
size = width, height = 740, 480
screen = pygame.display.set_mode(size)
 
# loads a new image from a file and convert()
# will create a copy of image on surface
img = pygame.image.load("char.png").convert()
 
# declaring value to variables
x, y = 0, 0
move_x, move_y = 0, 0
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # pygame.QUIT deactivates pygame
            exit()
            # exit() is sys function used to
            # kill the program
             
     # KEYDOWN event will be triggered everytime
    # we press a button
    if event.type == KEYDOWN: 
       
        if event.key == K_LEFT: 
            move_x = -0.3  # object moves -0.3 towards x axis
            print("pressed LEFT")
        elif event.key == K_RIGHT: 
            move_x = +0.3  # object moves 0.3 towards x axis
            print("pressed RIGHT")
        elif event.key == K_UP:
            move_y = -0.3  # object moves -0.3 towards y axis
            print("pressed UP")
        elif event.key == K_DOWN:
            move_y = +0.3  # object moves 0.3 towards y axis
            print("pressed DOWN")
             
        # K_LCTRL event will be triggered everytime we
        # press left CTRL button
        elif event.key == K_LCTRL:
           
            # declaring new image file to update image
            # everytime left CTRL is pressed
            img = pygame.image.load("char1.png")
            pygame.display.update()  # update image
        elif event.key == K_BACKSPACE:
           
            # this the default file we declared in start
            # and it will restore it everytime we press
            # backspace
            img = pygame.image.load("char.png")
            pygame.display.update()  # update image
             
     # it will get triggered when left key is released
    if event.type == KEYUP:
        if event.key == K_LEFT:
            move_x = 0  # movement stops
        elif event.key == K_RIGHT: 
            move_x = 0  # movement stops
        elif event.key == K_UP:
            move_y = 0  # movement stops
        elif event.key == K_DOWN: 
            move_y = 0  # movement stops
            """KEYUP event will be triggered when the release the keys
            and x,y coordinates will not change anymore"""
 
    x += move_x
    y += move_y
    # updating coordinate values of x,y
    screen.fill((255, 255, 255))
     
    # the function will fill the background with white color
    screen.blit(img, (x, y))
     
    # blit() function will copy image file to x,y coordinates.
    pygame.display.update()
    # draw the objects on screen

Producción:

Manejo de entradas de mouse:

Pasos básicos para manejar la entrada del mouse:

  • Importe las bibliotecas requeridas.
  • Cree un objeto de superficie de visualización utilizando el método display.set_mode() de pygame.
  • Cargue la imagen/objeto.
  • Cree un evento de clic, es decir, MOUSEBUTTONDOWN.
  • Defina todas las claves de eventos y realice la tarea.
  • Cree un evento de pausa, es decir, MOUSEBUTTONUP.
  • Copiar el objeto de superficie de texto en el objeto de superficie de visualización usando el método blit() del objeto de superficie de visualización de pygame.
  • Muestre el objeto de la superficie de visualización en la ventana de pygame utilizando el método display.update() de pygame.

Ejemplo:

Python3

# importing all the required libraries
import pygame
from pygame.locals import *
from sys import exit
 
# initiating pygame library to use it's functions
pygame.init()
 
# declaring windows/surface width and height
size = width, height = 740, 480
screen = pygame.display.set_mode(size)
 
 
# loads a new image from a file and convert()
# will create a copy of image on surface
img = pygame.image.load("char.png").convert()
 
# declaring value to variables
clicking = False
right_clicking = False
middle_click = False
 
while True:
    mx, my = pygame.mouse.get_pos()  # gets mouse x,y coordinates
    location = [mx, my]
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
           
            # pygame.QUIT deactivates pygame
            exit()
            # exit() is sys function used to kill the program
 
    # MOUSEBUTTONDOWN event is triggered when a button is pressed
    if event.type == MOUSEBUTTONDOWN:
       
        # returns true when mouse left button is clicked
        if event.button == 1: 
            clicking = True
             
            # declaring new image file to update image
            # everytime left button clicking is true
            img = pygame.image.load("char1.png")
            pygame.display.update()  # update image
         
        # returns true when mouse right button is clicked
        if event.button == 3: 
            right_clicking = True
             
            # declaring new image file to update image
            # everytime right button is clicked
            img = pygame.image.load("char.png")
            pygame.display.update()  # update image
             
        # returns true when mouse middle button is clicked
        if event.button == 2: 
            middle_click = middle_click
             
            # rescale image when middle button clicking is true
            img = pygame.transform.scale(img, (100, 100))
            pygame.display.update()  # update image
 
    # MOUSEBUTTONUP is triggered when mouse button
    # is released(not clicked)
    if event.type == MOUSEBUTTONUP:
        if event.button == 1:
            clicking = False
 
    screen.fill((255, 255, 255))
     
    # the function will fill the background
    # with white color
    screen.blit(img, (location[0], location[1]))
     
    # blit() function will copy image file
    # to x,y coordinates.
    pygame.display.update()
    # draw the objects on screen

Producción:

Publicación traducida automáticamente

Artículo escrito por vinamrayadav 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 *