InicioLinuxPrimer Juego Pygame

Juego Pong




Hola a todos les traigo mi primer Juego en Pygame espero les guste.

con este primer juego voy a desarrollar un manual para explicar todo lo que hice espero les guste

Mikey


Codigo


#--------------------------------------------------------------------------------------------------------------------------
import pygame
from pygame.locals import *
import sys, os
if not pygame.font: print 'Warning, fonts disabled'
if not pygame.mixer: print 'Warning, sound disabled'
ancho,alto=640,480

#--------------------------------------------------------------------------------------------------------------------------

def cargar_img(nombre):

    try:
        img = pygame.image.load(nombre)
    except :
        print 'no se puede cargar la imagen '+str(nombre)
    return img

def cargar_sonido(nombre):
    try:
        pygame.mixer.init()
        sonido = pygame.mixer.Sound(nombre)
    except :
        print 'no se puede cargar el sonido '+str(nombre)
    return sonido

#--------------------------------------------------------------------------------------------------------------------------

class pelota( pygame.sprite.Sprite, pygame.font.Font):


    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=cargar_img('../pelota.png')
        self.rect = self.image.get_rect()
        self.rect.center = (300,200)
        self.velosidad=[7,8]
        self.text=Text()
        self.punt=0
        self.punt1=0

    def update(self):
        self.rect.move_ip((self.velosidad[0], self.velosidad[1]))
        self.control()

    def control(self):

        sonido=cargar_sonido('../punto.ogg')

        if self.rect.left <=0 or self.rect.right>=640:
            self.velosidad[0]=-self.velosidad[0]

        if self.rect.top <=0 or self.rect.bottom>=480 :
            self.velosidad[1]=-self.velosidad[1]

        if self.rect.left<=0:
           self.punt +=1
           sonido.play()
           self.rect.center=(300,200)

        if self.rect.right>=640:
            self.punt1 +=1
            sonido.play()
            self.rect.center=(300,200)

#--------------------------------------------------------------------------------------------------------------------------

class Text:
    def __init__(self, FontName = None, FontSize = 30):
        pygame.font.init()
        self.font = pygame.font.Font(FontName, FontSize)
        self.size = FontSize

    def render(self, surface, text, color, pos):
        text = unicode(text, "UTF-8")
        x, y = pos
        for i in text.split("r"):
            surface.blit(self.font.render(i, 1, color), (x, y))
            y += self.size

#--------------------------------------------------------------------------------------------------------------------------

class raqueta_uno(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=cargar_img('../raqueta_uno.png')
        self.rect = self.image.get_rect()
        self.rect.center = (12,240)


    def update(self):

        keys = pygame.key.get_pressed()
        if keys[K_d]:
            self.rect.y += 6

            if self.rect.center==(12,480):
               self.rect.y -= 6

        if keys[K_e]  :
            self.rect.y -= 6

            if self.rect.center==(12,0):
               self.rect.y += 6

#--------------------------------------------------------------------------------------------------------------------------

class raqueta_dos(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=cargar_img('../raqueta_dos.png')
        self.rect = self.image.get_rect()
        self.rect.center = (620,240)


    def update(self):

        keys = pygame.key.get_pressed()
        if keys[K_DOWN]:
            self.rect.y += 6

            if self.rect.center==(620,480):
               self.rect.y -= 6

        if keys[K_UP]  :
            self.rect.y -= 6

            if self.rect.center==(620,0):
               self.rect.y += 6

#--------------------------------------------------------------------------------------------------------------------------

class raqueta_ia(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image=cargar_img('../raqueta_dos.png')
        self.rect = self.image.get_rect()
        self.rect.center = (620,240)

#--------------------------------------------------------------------------------------------------------------------------

    def update(self):
        self.rect.y=pelota.rect.y
        self.control()

    def control(self):
        if self.rect.top <=0:
             self.rect.top=0
        if self.rect.bottom >= 480 :
            self.rect.bottom=480
            
#--------------------------------------------------------------------------------------------------------------------------


def colicion(sprite,grupo):
    for COLICION in pygame.sprite.spritecollide(sprite,grupo,0):
        pelota.velosidad[0]=-pelota.velosidad[0]
        sonido.play()

#--------------------------------------------------------------------------------------------------------------------------
        
sonido=cargar_sonido('../golpe.ogg')
screen=pygame.display.set_mode((ancho,alto))
raquetas=pygame.sprite.RenderClear()

#--------------------------------------------------------------------------------------------------------------------------

raqueta1=raqueta_uno()
#raqueta2=raqueta_dos()
raqueta3=raqueta_ia()
raquetas.add(raqueta1)
#raquetas.add(raqueta2)
raquetas.add(raqueta3)

white = (255, 255, 255)

pelota=pelota()
text=Text()

clock = pygame.time.Clock()

#--------------------------------------------------------------------------------------------------------------------------

while 1:
    clock.tick(60)
    keys = pygame.key.get_pressed()
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()

        if keys[K_ESCAPE]:
            pygame.quit()

#--------------------------------------------------------------------------------------------------------------------------

    colicion(pelota,raquetas)
    pelota.update()

    raqueta1.update()
    #raqueta2.update()
    raqueta3.update()
    screen.fill((0,0,0))
    screen.blit(cargar_img('../mesa.jpg'),(2,0))
    raquetas.draw( screen )
    text.render(screen, "Pong", white, (320, 0))
    numero1=str(pelota.punt1)
    text.render(screen, "Jugador A: "+numero1, white, (20, 0))
    numero=str(pelota.punt)
    text.render(screen, "Jugador B: "+numero, white, (500, 0))
    screen.blit(pelota.image,pelota.rect)
    screen.blit(raqueta1.image,raqueta1.rect)
    #screen.blit(raqueta2.image,raqueta2.rect)
    screen.blit(raqueta3.image,raqueta3.rect)

#--------------------------------------------------------------------------------------------------------------------------

    if pelota.punt==5 or pelota.punt1==5 :
            sonido=cargar_sonido('../final.ogg')

            if pelota.punt > pelota.punt1:
               sonido.play()
               text.render(screen, "Jugador B es el Ganador", white, (200, 200))
               pygame.display.flip()
               pygame.time.delay(7000)
               pelota.punt1=0
               pelota.punt=0


            if pelota.punt1>pelota.punt:
               sonido.play()
               text.render(screen, "Jugador A es el Ganador", white, (200, 200))
               pygame.display.flip()
               pygame.time.delay(6000)
               pelota.punt=0
               pelota.punt1=0

#--------------------------------------------------------------------------------------------------------------------------

    sonido=cargar_sonido('../golpe.ogg')

    pygame.display.flip()

#--------------------------------------------------------------------------------------------------------------------------



Comunidad




Bueno a qui esta el archivo con todos los elementos del juego las imágenes y el sonido, apenas termine el manual lo publicare para que se entienda de una manera mejor el código, dentro de la comunidad esta el enlace para descargar el código
Datos archivados del Taringa! original
120puntos
741visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

m
mikey8668🇦🇷
Usuario
Puntos0
Posts171
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.