Para poder tener un marcador de puntos de nuestro juego, es necesario que modifiquemos nuestra clase Pala que teníamos anteriormente, el método que modificaremos será el método actualizar, al cual le modificaremos su firma de la función para que acepte un parámetro más, el parámetro puntos, el cual nos permitirá poder modificar en pantalla el marcador, así como introducir unas cuantas lineas de código para modificar el valor de la variable puntos, lo cual es muy bueno, ya que no será necesario modificar de manera abrupta el código que ya teníamos, solo modificaremos la firma de la función y añadiremos las siguientes líneas de código:
#cambiamos los parametros del metodo para anadirle los puntos def actualizar ( self,time,pala ,pala_cpu,puntos): #cuando pase de largo aumentamos un punto como corresponda if self.rect.left <= 0: puntos[1]+=1 if self.rect.right >= ANCHO: puntos[0]+=1 return puntosLas líneas anteriores solo las añadimos en la parte intermedia de nuestro método, así como la simple modificación de la firma del método y al final del mismo le añadimos la sentencia "return".
Ahora crearemos otro método que nos permita manipular el texto que mostraremos en pantalla, así que el código es el siguiente:
#Metodo para manipular el texto que queremos mostrar en pantalla #el cual creara un sprite y la regresara junto con su imagen recien #creada def texto(texto, posicion_x, posicion_y, color=(255,255,255)): #Cargamos la fuente para mostrar en pantalla fuente = pygame.font.Font('images/17-years-ago.ttf',25) #el texto lo pasamos por la fuente elegida salida = pygame.font.Font.render(fuente,texto,1,color) #creamos un sprite para mostrarlo en pantalla salida_rect = salida.get_rect() #al sprite con el texto lo ponemos en una posicion #dentro de la pantalla salida_rect.centerx = posicion_x salida_rect.centery = posicion_y return salida,salida_rectEste código nos sirve para poder insertar texto en nuestro juego de manera sencilla.
Ahora, procederemos a modificar nuestro Game Loop, el cual nos servirá para poder actualizar en cada momento de la partida nuestra puntuación y así mostrarla en pantalla. Lo que haremos, será crear una lista que nos permitirá almacenar los puntos del jugador, así como el de la máquina, además de crear los sprites necesarios para mostrarlos en pantalla durante cada ciclo del juego, la modificación es muy sencilla, la cual es la siguiente (si quieren ver de manera completa el código, junto con los archivos de la fuente y el sonido, click aquí):
#anadimos las siguientes lineas al metodo def game_loop (): #creamos una lista para almacenar los puntos #de ambos jugadores puntos = [0,0] while True: puntos = bola.actualizar(time,pala,pala_cpu,puntos) #creamos los sprites de los puntos del jugador puntos_jug, puntos_jug_rect = texto("Jugador Puntos: "+str(puntos[0]), 140, 40) #creamos los sprites de los puntos del cpu puntos_cpu, puntos_cpu_rect = texto("Maquina Puntos: "+str(puntos[1]), ANCHO-ANCHO/4,40) #actualizamos los puntos en pantalla pantalla.blit(puntos_jug,puntos_jug_rect) pantalla.blit(puntos_cpu,puntos_cpu_rect)
y así de sencillo hemos añadido nuestro marcador a pantalla. Ahora solo falta añadir el audio a nuestro juego, este audio será el que suene cuando la bola choque contra alguna de las paletas del juego, la modificación será en la clase Bola, está modificación es muy sencilla, la cual será ilustrada a continuación:
#modificar en las secciones indicadas class Bola(pygame.sprite.Sprite) : def __init__ ( self ): #cargamos el audio de choque contra una pared o raqueta self.sound = pygame.mixer.Sound('audios/rebote.wav') def actualizar ( self,time,pala ,pala_cpu,puntos): if pygame.sprite.collide_rect(self,pala) : self.speed[0] = -self.speed[0] self.rect.centerx += self.speed[0]*time #al chocar con las palas generar sonido self.sound.play() if pygame.sprite.collide_rect(self,pala_cpu) : self.speed[0] = -self.speed[0] self.rect.centerx += self.speed[0]*time #al chocar con las palas generar sonido self.sound.play()
Y así hemos añadido de manera sencilla el audio en nuestro juego, el cual no es fue muy difícil ¿verdad?
Entonces con esto hemos terminado nuestro pequeño remake del Pong, el cual se ve así:
Fue divertido hacer nuestro primer videojuego con python, y muy sencillo, con esto hemos terminado y como en el post anterior, el código desarrollado esta aquí.
¡Hasta la próxima!