def game():
      pygame.init()
      pygame.mixer.init()
      screen = pygame.display.set_mode( (SCREEN_WIDTH,SCREEN_HEIGHT) )
      jugando = True
      pygame.display.set_caption( "Pelota" )
      background_image = util.cargar_imagen('imagenes/fondo.jpg');
      fuente = pygame.font.Font(None, 30)
      pygame.mouse.set_visible( False )
      temporizador = pygame.time.Clock()
      pelota = Pelota()      
      while jugando:
          pelota.update()
          for event in pygame.event.get():
              if event.type == pygame.QUIT:
                  sys.exit()
          screen.blit(background_image, (0,0))
          screen.blit(pelota.imagen, pelota.rect)

          pygame.display.update()
          pygame.time.delay(20)
Beispiel #2
0
class Breakout():
    def __init__(self):
        self.WHITE = 225, 225, 225
        self.BLACK = 0, 0, 0
        self.clock = pygame.time.Clock()
        self.size_window = (700, 600)
        self.game_over = False
        self.salir = False
        self.soltar_pelota = False
        self.puntaje = 0
        self.nivel = 1
        self.vidas = 3
        self.SCREEN_WIDTH = self.size_window[0]
        self.SCREEN_HEIGHT = self.size_window[1]

    def load_game(self):
        pygame.init()
        self.screen = pygame.display.set_mode(self.size_window)
        pygame.display.set_caption("breakout")
        self.escenario = Escenario(self.screen)
        self.collision = Collision(5)
        self.pelota = Pelota(self.screen, 16, 16, "sprites/pelota_white.png")
        self.pelota.set_velocity(2, 5)
        self.raquet = Raqueta(self.screen, 74, 12, "sprites/raquet_white.png")
        self.raquet.set_position(300, 550)
        self.bricks = self.load_bricks(12, self.nivel)
        self.tam_list = len(self.bricks)
        self.loop()

    def loop(self):
        dt = 0
        while (not self.salir):
            while (not self.game_over):
                self.ctrl_events()
                self.update(dt)
                self.render()
                self.clock.tick(60)
            self.ctrl_events()

    def reset_game(self):
        self.screen.fill(self.BLACK)
        self.clock.tick(1)
        self.game_over = False
        self.soltar_pelota = False
        self.puntaje = 0
        self.nivel = 1
        self.vidas = 3
        self.pelota.set_velocity(2, 5)
        self.raquet.set_position(300, 550)
        self.bricks = self.load_bricks(12, self.nivel)

    def aumentar_nivel(self):
        self.screen.fill(self.BLACK)
        self.clock.tick(1)
        self.soltar_pelota = False
        self.nivel += 1
        self.vidas = 3
        self.bricks = self.load_bricks(12, self.nivel)
        self.tam_list = len(self.bricks)
        self.pelota.set_velocity(2 + self.nivel, 5 + self.nivel)
        self.raquet.set_velocity(self.nivel)

    def update(self, delta):
        self.pelota.update()
        if (self.soltar_pelota):
            self.collision.detect_colision(self.pelota, self.raquet)
            self.pelota.move()
        else:
            self.center_pelota()
            self.pelota.pelota_perdida = False
        self.raquet.update()
        for b in self.bricks:
            if (self.collision.detect_colision(self.pelota, b)):
                b.sub_resist()
                self.puntaje += 10
                if (b.cant_resist == 0):
                    self.bricks.remove(b)
                    self.tam_list -= 1
            b.update()
        if (self.tam_list == 0):
            self.aumentar_nivel()
        if (self.pelota.pelota_perdida):
            self.vidas -= 1
            if (self.vidas == 0):
                self.game_over = True
                self.bricks.clear()
            else:
                self.soltar_pelota = False

    def render(self):
        self.screen.fill(self.BLACK)
        if (not self.game_over):
            self.pelota.draw()
            self.raquet.draw()
            for b in self.bricks:
                b.draw()
        else:
            self.escenario.draw_game_over()
        self.escenario.draw_margen()
        self.escenario.draw_text(self.puntaje, self.vidas, self.nivel)
        pygame.display.flip()

    def center_pelota(self):
        posX = self.raquet.rect.x + (self.raquet.width /
                                     2) - (self.pelota.width / 2)
        posY = self.raquet.rect.y - self.pelota.height
        self.pelota.set_position(posX, posY)

    def ctrl_events(self):
        for event in pygame.event.get():
            if (event.type == pygame.QUIT):
                sys.exit(1)
        keys = pygame.key.get_pressed()
        if (keys[pygame.K_RIGHT]):
            self.raquet.move_to_rigth()
        elif (keys[pygame.K_LEFT]):
            self.raquet.move_to_left()
        if (keys[pygame.K_SPACE]):
            self.soltar_pelota = True
        if (keys[pygame.K_r]):
            self.reset_game()

    def load_bricks(self, rows, cols):
        list_bricks = []
        c = 0
        while (c < cols):
            r = 0
            while (r < rows):
                path = images.select_image()
                brick = Brick(self.screen, 50, 30, path)
                brick.set_position((r + 1) * 52, (c + 1) * 32)
                list_bricks.append(brick)
                r += 1
            c += 1
        return list_bricks