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
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