def main(): def crono(): global segundos global minutos segundos = int(segundos) if segundos == 60: segundos = 0 minutos += 1 return crono() else: segundos += 1 time.sleep(1) return crono() """ Programa Principal """ pygame.init() puntuacion = pygame.mixer.music.load("Sonido/intro2.wav") pygame.mixer.music.play(2) sonido = pygame.mixer.Sound("Sonido/choque.wav") # Definimos el alto y largo de la pantalla dimensiones = [LARGO_PANTALLA, ALTO_PANTALLA] pantalla = pygame.display.set_mode(dimensiones) pygame.display.set_caption("Cronometro") def Reloj(): fuente1 = pygame.font.SysFont("Algerian", 30) Reloj = str("Tiempo " + str(minutos) + ":" + str(segundos)) mensaje = fuente1.render(Reloj, 1, (BLANCO)) pantalla.blit(mensaje, (600, 10)) hilo = threading.Thread(target=crono, args=()) hilo.start() # Creamos al protagonista protagonista = Protagonista("Imagenes/bola2.png") #imagenFondo = pygame.image.load("Imagenes/fondo1.jpg") #imagenFondo = pygame.transform.scale(imagenFondo, (800,600)) # Creamos todos los niveles listade_niveles = [] listade_niveles.append(Nivel_01(protagonista)) # Establecemos el nivel actual nivel_actual_no = 0 nivel_actual = listade_niveles[nivel_actual_no] lista_sprites_activos = pygame.sprite.Group() protagonista.nivel = nivel_actual protagonista.rect.x = 340 protagonista.rect.y = ALTO_PANTALLA - protagonista.rect.height lista_sprites_activos.add(protagonista) listade_monedas = pygame.sprite.Group() listade_todos_los_sprites = pygame.sprite.Group() z = 200 z1 = 590 z2 = 300 for i in range(4): # ESto representa un bloque monedas = Moneda("Imagenes/moneda.png") monedas2 = Moneda("Imagenes/moneda.png") monedas3 = Moneda("Imagenes/moneda.png") # Definimos una ubicación aleatoria para el bloque monedas.rect.x = z monedas2.rect.x = z1 monedas3.rect.x = z2 monedas.rect.y = 350 monedas2.rect.y = 260 monedas3.rect.y = 110 z += 50 z1 += 50 z2 += 50 # Añadimos el bloque a la lista de objetos listade_monedas.add(monedas) listade_todos_los_sprites.add(monedas) listade_monedas.add(monedas2) listade_todos_los_sprites.add(monedas2) listade_monedas.add(monedas3) listade_todos_los_sprites.add(monedas3) #Iteramos hasta que el usuario pulse sobre el botón de salida hecho = False # Lo usamos para gestionar cuan rápido se actualiza la pantalla. reloj = pygame.time.Clock() puntuacion = 0 puntosMonedas = 0 mifuenteSistema = pygame.font.SysFont("Algerian", 30) # obtener una fuente del sistema miTextoSistema = mifuenteSistema.render("Puntos: ", 0, BLANCO) miTextoSistema2 = mifuenteSistema.render("", 0, BLANCO) miTextoSistema3 = mifuenteSistema.render("x 0", 0, BLANCO) # -------- Bucle Principal del Programa ----------- while not hecho: global segundos for evento in pygame.event.get(): # El usuario realizó alguna acción if evento.type == pygame.QUIT: # Si el usuario hizo click en salir hecho = True # Marcamos como hecho y salimos de este bucle if evento.type == pygame.KEYDOWN: if evento.key == pygame.K_LEFT: protagonista.ir_izquierda() if evento.key == pygame.K_RIGHT: protagonista.ir_derecha() if evento.key == pygame.K_UP: protagonista.saltar() if evento.type == pygame.KEYUP: if evento.key == pygame.K_LEFT and protagonista.cambio_x < 0: protagonista.stop() if evento.key == pygame.K_RIGHT and protagonista.cambio_x > 0: protagonista.stop() # Actualizamos al protagonista. lista_sprites_activos.update() listade_impactos_bloque = pygame.sprite.spritecollide( protagonista, listade_monedas, True) for monedas in listade_impactos_bloque: puntuacion += 10 puntosMonedas += 1 sonido.play() puntaje = str(puntuacion) puntajeM = str(puntosMonedas) miTextoSistema2 = mifuenteSistema.render(puntaje, 5, BLANCO) miTextoSistema3 = mifuenteSistema.render(("X" + puntajeM), 5, BLANCO) L = str(puntuacion) archi.creartxt("puntuaciones.txt") archi.grabartxt("puntuaciones.txt", ("puntos:" + L)) print("La puntuacion es:", str(L)) # Actualizamos los objetos en este nivel # Si el protagonista se aproxima al lado derecho, desplazamos su mundo a la izquierda (-x) if protagonista.rect.right > LARGO_PANTALLA: protagonista.rect.right = LARGO_PANTALLA # Si el protagonista se aproxima al lado izquierdo, desplazamos su mundo a la derecha (+x) if protagonista.rect.left < 0: protagonista.rect.left = 0 # TODO EL CÓDIGO DE DIBUJO DEBERÍA IR DEBAJO DE ESTE COMENTARIO nivel_actual.update() nivel_actual.draw(pantalla) lista_sprites_activos.draw(pantalla) listade_todos_los_sprites.draw(pantalla) pantalla.blit(imagenMoneda, (10, 10)) Reloj() pantalla.blit(miTextoSistema, (260, 10)) pantalla.blit(miTextoSistema2, (380, 10)) pantalla.blit(miTextoSistema3, (45, 10)) # TODO EL CÓDIGO DE DIBUJO DEBERÍA IR ENCIMA DE ESTE COMENTARIO # Limitamos a 60 fps reloj.tick(60) # Avanzamos y actualizamos la pantalla con todo lo que hemos dibujado. pygame.display.flip() # Pórtate bien con el IDLE. Si te olvidas de esta línea, el programa se 'colgará' al salir. pygame.quit()