Creación de clase: clase corredor en Pygame

| Última modificación: 17 de octubre de 2024 | Tiempo de Lectura: 5 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Has creado una clase corredor en Pygame? ¿Sabes cómo crear una clase en Pygame? Si desconoces las respuestas a estas preguntas, pero te gustaría aprender, continúa leyendo este post, ya que en él te explicaremos paso a paso la creación de la clase corredor en Pygame.

Preparando el programa

Antes de empezar con nuestra práctica de la clase corredor en Pygame, debemos empezar por preparar el programa y nuestro entorno virtual. Por lo tanto, puedes abrir tu IDE de Visual Studio Code y agregar un nuevo directorio que, en este caso, llamaremos pygameAnim, de esta manera: mkdir pygameAnim en la terminal de VSC.

Después, abre el mismo archivo por medio de “OpenFile”. Una vez abierto, estás listo. Prepara el entorno virtual con la siguiente instrucción (en MAC): python -m venv venv. Para activarlo, utilizarás:. venv/bin/qctivate.

El siguiente paso es activar Pygame con la instrucción: pip install pygame. Después, podrás crear un directorio o repositorio con git init, así como un gitignore, donde estará el entorno virtual: venv/. De ahí, solo queda crear el fichero, al que llamaremos main.py.

El programa junto a la terminal deberá verse así:

Clase corredor en Pygame: VSC

import pygame as pg

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

from pygame.locals import

import sys, ps

BLANCO = (250, 250)

FPS = 60

class Game ():

          clock = pg.time.Clock()

def _init_(self, width, height):

                  self.display = pg.display

                  self.screen = self.display.set_mode((width, height))

                  self.display.set_caption(‘Corredor’)

                  self.w = width

                  self.h = height

En el apartado anterior has visto la preparación previa al desarrollo del programa, así como la creación e importación de las constantes de tu programa. El siguiente paso es crear el control de los eventos, el renderizado del programa, el mainloop y el gameover, así como el lanzamiento del programa:

#definición de la función

def handleevent(self):                 

    for event in pg.event.get()       

       if  event == QUIT or event.type es KEYDOWN and event.key == K_q. 

           return True

return  False

#indica a la interfaz que debe quedarse esperando hasta que pase lo siguiente

def mainloop(self):

    game_over = False

    while game_over == False

          dt = self.clock.tick(FPS)

          game_over = self.handleevent()

          self.render(dt)

    self.gameover()

#definición del game over

def game_over(self):

    pg.quit()

    sys.exit()

#renderización del proyecto, dt es distancia de tiempo; creación de la plantilla de color blanco

def render(self, dt):

    self.screen.fil(BLANCO)

    self.display.flip()

#lanzamiento del programa

if _name_==’_main_’:

   pg.init()

   game = Game(800, 600)

   game.mainloop()

Cuando ya hayas finalizado estos pasos, podrás crear la clase corredor en Pygame.

Paso a paso de clase corredor en Pygame

Una vez tengas todo preparado, puedes crear la clase corredor en Pygame con la siguiente imagen en png.

Clase corredor en Pygame
Clase corredor

Después de tenerla como un asset y tener en cuenta que cada imagen o corredor mide 240×296, utilizarás la clase Sprites y Spritesgroup, definiendo la función de la siguiente forma:

#definición de la clase

class Corredor(pg.Sprite.Sprite):

#posición del corredor

      def _init_(self, x, y):

#tamaño del corredor

      self.w = 240

      self.h = 296

#instanciar el Sprite     

      pg.sprite.Sprite._init_(Self)

#tributos esenciales de un Sprite

      self.image

#rect es un objeto para guardar coordenadas de los rectángulos, es decir, el Sprite

      self.rect

      self.rect.x = x

      self.rect.y = y

Una vez tengas los atributos de la clase corredor en Pygame listos, debes cargar y almacenar las imágenes del corredor. Esto se hace por medio de una lista, donde cada imagen tendrá un índice del 0-32, como verás a continuación. En este paso también se cortarán los frames de la imagen desde filas a columnas.

#almacenar los frames

    self.frames[]

#lista

    self.index = 0

    self.howmany = 0

#tiempo de la animación

    self.animation.time = FPS // 2

#cargar los frames

    self.loadFrames()

    self.current_time = 0

def loadFrames(self):

#imagen de corredor, que será transformada en transparencia  – deberás añadirla en el programa

     sprite_sheet: pg.image.load(ruta_de_la_imagen).convert_alpha()

#recorrer los frames por 5 filas y 6 columnas

     for fila in range (5):

     y = fila * self.h

     for column in range(6)

     x = columna * self.w

#recortar los frames

     image = pg.Surface((self.w, self.h), pg.SRCALPHA).convert_aplha()

#sobre la imagen recortada se posicionara un rectángulo

     image.blit(sprite_sheet, (0,0), (x,y, self.w, self.h))

     self.frames.append(image)

self.how_many = len(self.frames)

self.image = self.frames[self.index]

En este momento, aún no podrás ver la imagen. Por tanto, necesitarás utilizar los Sprites en el programa y en el render:

#crear el Sprite del corredor  

   corredor = Corredor(400, 300)

   self.AllSprites = pg. Sprite.Group()

   self.AllSprites.add (corredor)

#dibujar el Sprite debajo del render (lo que se ha explicado anteriormente)

#actualizar los Sprites del grupo

   self.AllSprites.update(dt)

#Pintar los Stripes en la pantalla

   self.AllSprites.draw(self.screen)

Para animar el programa, es decir, cambiar las imágenes una tras otra, debes seguir este paso:

def update(self.dt):

    self.current_time +-= dt

    if self.current_time > self.animation_time:

#siempre debe estar en 0 para poder activarlo

       self.current_time = 0

       self.index +-= 1

#como no puede ser mayor de 30

    if self.index = self.how_many:

       self.index = 0

#actualizar la imagen

    self.image = self.frames[self.index]

Así ya verás la imagen moviéndose como si estuviera corriendo. Acabas de crear la clase corredor en Pygame.

¿Cuál es el siguiente paso?

Ya que has aprendido a utilizar las clases, por medio del ejemplo práctico de clase corredor en Pygame, puedes intentar hacer tus propios ejercicios y añadirlos en tus programas de la índole de videojuegos o de cualquier otra. ¿Te gustaría aprender también cómo hacer que se mueva por la pantalla? Podrás encontrar esta información en el Bootcamp Aprende a Programar desde Cero, donde aprenderás más acerca de otros conceptos básicos de la programación. Si quieres empezar tu camino en el código, no dudes en solicitar información e inscribirte.

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.