Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # Módulos
- import sys, pygame
- from pygame.locals import *
- # Constantes
- WIDTH = 640
- HEIGHT = 480
- # Funciones
- # ------------------------------------------------------------------------
- def load_image(filename, transparent=False):
- try: image = pygame.image.load(filename)
- except pygame.error, message:
- raise SystemExit, message
- image = image.convert()
- if transparent:
- color = image.get_at((0,0))
- image.set_colorkey(color, RLEACCEL)
- return image
- def texto(texto, posx, posy, color=(255,255,255)):
- fuente = pygame.font.Font("images/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
- # ------------------------------------------------------------------------
- # Clases
- # ------------------------------------------------------------------------
- class Bola(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = load_image("images/ball.png", True)
- self.rect = self.image.get_rect()
- self.rect.centerx = WIDTH / 2
- self.rect.centery = HEIGHT / 2
- self.speed = [0.2, -0.2]
- def actualizar(self, time, colisiones, puntos, jugador):
- self.rect.centerx += self.speed[0] * time
- self.rect.centery += self.speed[1] * time
- #chocar con la paleta
- for elemento in colisiones:
- if pygame.sprite.collide_rect(self, elemento):
- self.speed[0] = -self.speed[0]
- self.rect.centerx += self.speed[0] * time
- jugador = colisiones.index(elemento)
- #Sumar Punto
- if self.rect.left <= 0 and jugador == 1:
- puntos[1] += 1
- if self.rect.right >= WIDTH and jugador == 0:
- puntos[0] += 1
- #chocar con la pared
- 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
- return puntos, jugador
- class Pala(pygame.sprite.Sprite):
- def __init__(self, x):
- pygame.sprite.Sprite.__init__(self)
- self.image = load_image("images/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
- # ------------------------------------------------------------------------
- def main():
- screen = pygame.display.set_mode((WIDTH, HEIGHT))
- pygame.display.set_caption("Pruebas Pygame")
- #carga de imágenes
- background_image = load_image('images/fondo.jpg')
- bola = Bola()
- pala_jug = Pala(30)
- pala_cpu = Pala(WIDTH - 30)
- #tiempo
- clock = pygame.time.Clock()
- time = clock.tick(60)
- puntos = [0,0]
- jugador = 2
- while True:
- for eventos in pygame.event.get():
- if eventos.type == QUIT:
- sys.exit(0)
- keys = pygame.key.get_pressed()
- puntos, jugador = bola.actualizar(time, [pala_jug, pala_cpu], puntos, jugador)
- pala_jug.mover(time, keys)
- pala_cpu.ia(time, bola)
- 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(p_jug, p_jug_rect)
- screen.blit(p_cpu, p_cpu_rect)
- 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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement