0% encontró este documento útil (0 votos)
44 vistas5 páginas

Pong Pygame

El documento describe una simulación de juego de ping pong en Python usando Pygame. Se define una clase Bola para la pelota y una clase Pala para las paletas del jugador y la CPU. El método actualizar controla el movimiento y colisiones de la bola, mientras que los métodos mover y ia controlan el movimiento de las paletas.

Cargado por

Mary Inojosa
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas5 páginas

Pong Pygame

El documento describe una simulación de juego de ping pong en Python usando Pygame. Se define una clase Bola para la pelota y una clase Pala para las paletas del jugador y la CPU. El método actualizar controla el movimiento y colisiones de la bola, mientras que los métodos mover y ia controlan el movimiento de las paletas.

Cargado por

Mary Inojosa
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

# -*- coding: utf-8 -*-

#Modulos import pygame,sys from pygame.locals import * #constants WIDTH = 640 HEIGHT = 480 #clases #---------------------------------------------------class Bola(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self)#invoca al metodo init de la clase heredada self.image = load_image("imagenes/ball.png",True)#cargar con nuestra funcin load_image() la imagen de la pelota self.rect = self.image.get_rect()#obtiene un rectangulo con las dimensiones y posicin de la imagen self.rect.centerx = WIDTH /2 #usamos las propiedades de rect y con centerx y centery definimos el centro de la pelota en el centro de la pantalla. self.rect.centery = HEIGHT /2 #usamos las propiedades de rect y con centerx y centery definimos el centro de la pelota en el centro de la pantalla. self.speed = [0.5,-0.5] # define la velocidad que queremos para la pelota, separamos la velocidad en dos, la velocidad en el eje x y la velocidad en el eje y #--------------------------------------------------def actualizar(self, time, pala_jug, pala_cpu, puntos): self.rect.centerx += self.speed[0] * time self.rect.centery += self.speed[1] * time

if self.rect.left <= 0: puntos[1] += 1 if self.rect.right >= WIDTH: puntos[0] += 1

if self.rect.left <= 0 or self.rect.right >= WIDTH: self.speed[0] = -self.speed[0] self.rect.centerx += self.speed[0] * time if self.rect.top <= 0 or self.rect.bottom >= HEIGHT: self.speed[1] = -self.speed[1] self.rect.centery += self.speed[1] * time

if pygame.sprite.collide_rect(self, pala_jug): self.speed[0] = -self.speed[0] self.rect.centerx += self.speed[0] * time

if pygame.sprite.collide_rect(self, pala_cpu): self.speed[0] = -self.speed[0] self.rect.centerx += self.speed[0] * time

return puntos #------------------------------------------------------class Pala(pygame.sprite.Sprite): def __init__(self, x): pygame.sprite.Sprite.__init__(self)

self.image = load_image("imagenes/pala.png") self.rect = self.image.get_rect() self.rect.centerx = x self.rect.centery = HEIGHT / 2 self.speed = 0.5 def mover(self, time, keys): if self.rect.top >= 0: if keys[K_UP]: self.rect.centery -= self.speed * time if self.rect.bottom <= HEIGHT: if keys[K_DOWN]: self.rect.centery += self.speed * time def ia(self, time, ball): if ball.speed[0] >= 0 and ball.rect.centerx >= WIDTH/2: if self.rect.centery < ball.rect.centery: self.rect.centery += self.speed * time if self.rect.centery > ball.rect.centery: self.rect.centery -= self.speed * time #funciones #--------------------------------------------------def load_image(filename,transparent=False): #NOMBRE-RUTA DEL ARCHIVO, SI TIENE PARTES TRANSPARENTES try: image = pygame.image.load(filename)#ASIGNA LA IMAGEN A LA VARIBLE IMAGEN except pygame.error, message: raise SystemExit, message

image = image.convert()#CONVIERTE LA IMAGEN AL TIPO INTERNO DE PYGAME QUE LA HACE MAS EFICIENTE if transparent: #CONTROLA SI EL PARAMETRO TRANSPARENTE ES VERDADERO color = image.get_at((0,0))#OBTIENE EL COLOR DEL PIXEL 0,0 DE LA IMAGEN image.set_colorkey(color,RLEACCEL)#DEFINE ESE PIXEL COMO TRANSPARENTE return image

def texto(texto, posx, posy, color=(255, 255, 255)): fuente = pygame.font.Font("imagenes/DroidSans.ttf", 25) salida = pygame.font.Font.render(fuente, texto, 1, color) salida_rect = salida.get_rect() salida_rect.centerx = posx salida_rect.centery = posy return salida, salida_rect #----------------------------------------------------def main(): screen = pygame.display.set_mode((WIDTH,HEIGHT)) pygame.display.set_caption("Pruebas Pygame") background_image = load_image("imagenes/fondo_pong.png") bola = Bola() pala_jug = Pala(30) pala_cpu = Pala(WIDTH - 30) clock = pygame.time.Clock() puntos = [0, 0] while True: time = clock.tick(60)

keys = pygame.key.get_pressed() for eventos in pygame.event.get(): if eventos.type == QUIT: sys.exit(0) puntos = bola.actualizar(time, pala_jug, pala_cpu, puntos) pala_jug.mover(time, keys) pala_cpu.ia(time, bola)

p_jug, p_jug_rect = texto(str(puntos[0]), WIDTH/4, 40) p_cpu, p_cpu_rect = texto(str(puntos[1]), WIDTH-WIDTH/4, 40)

screen.blit(background_image,(0,0)) p_jug, p_jug_rect = texto(str(puntos[0]), WIDTH/4, 40) p_cpu, p_cpu_rect = texto(str(puntos[1]), WIDTH-WIDTH/4, 40) screen.blit(bola.image, bola.rect) screen.blit(pala_jug.image, pala_jug.rect) screen.blit(pala_cpu.image, pala_cpu.rect) pygame.display.flip() return 0 #-------------------------------------------------------if __name__=='__main__': pygame.init() main()

También podría gustarte