def Play(pantalla, time2, jugador): tiempo_comienzo = time() + time2 # Creamos al jugador con la imagen p1_walk.png jugador_principal = Player(jugador) letraParaPuntos = pygame.font.Font(None, 24) letraParaVidas = pygame.font.Font(None, 24) letraTiempo = pygame.font.Font(None, 24) Jefe_final = BOSS("imagenes/cheff.png") # Creamos todos los niveles del juego lista_niveles = [] #lista_niveles.append(Level_01(jugador_principal)) lista_niveles.append(Level_02(jugador_principal)) # Seteamos cual es el primer nivel. numero_del_nivel_actual = 0 nivel_actual = lista_niveles[numero_del_nivel_actual] lista_sprites_activos = pygame.sprite.Group() jugador_principal.nivel = nivel_actual jugador_principal.rect.x = 200 jugador_principal.rect.y = constantes.LARGO_PANTALLA - jugador_principal.rect.height - 120 lista_sprites_activos.add(jugador_principal) letraParaMarcador1 = pygame.font.Font(None, 56) letraParaMarcador2 = pygame.font.Font(None, 36) no_aparece_boss = True # Variable booleano que nos avisa cuando el usuario aprieta el botOn salir. salir = False clock = pygame.time.Clock() # -------- Loop Principal ----------- while not salir: for evento in pygame.event.get(): if evento.type == pygame.QUIT: salir = True if evento.type == pygame.KEYDOWN: if evento.key == pygame.K_SPACE: jugador_principal.avanzarr() if evento.key == pygame.K_LEFT: jugador_principal.retroceder() if evento.key == pygame.K_RIGHT: jugador_principal.avanzar() if evento.key == pygame.K_UP: jugador_principal.saltar() if evento.key == pygame.K_ESCAPE: salir = True if evento.type == pygame.KEYUP: if evento.key == pygame.K_LEFT and jugador_principal.mover_x < 0: jugador_principal.parar() if evento.key == pygame.K_RIGHT and jugador_principal.mover_x > 0: jugador_principal.parar() Jefe_final.avanzar() # Actualiza todo el jugador lista_sprites_activos.update() # Actualiza los elementos del nivel nivel_actual.update() # Si el jugador se acarca hacia el lado derecho mueve el mundo hacia la izquierda (-x) if jugador_principal.rect.x >= 500: diff = jugador_principal.rect.x - 500 jugador_principal.rect.x = 500 nivel_actual.avance_nivel(-diff) # Si el jugador se acarca hacia el lado izquierda mueve el mundo hacia la derecha (-x) if jugador_principal.rect.x <= 120: diff = 120 - jugador_principal.rect.x jugador_principal.rect.x = 120 nivel_actual.avance_nivel(diff) # Si el jugador se mueve hacia el fin del nivel cambia el jugador al siguiente nivel. current_position = jugador_principal.rect.x + nivel_actual.posicion_jugador_nivel if current_position < nivel_actual.limite_nivel: jugador_principal.rect.x = 120 if numero_del_nivel_actual < len(lista_niveles) - 1: current_position = 0 pygame.event.wait() Jefe_final.kill() numero_del_nivel_actual += 1 nivel_actual = lista_niveles[numero_del_nivel_actual] jugador_principal.nivel = nivel_actual tiempo_comienzo = time() + time2 no_aparece_boss = True jugador_principal.vidas = jugador_principal.vidas + 5 else: pantalla.fill(constantes.NEGRO) texto_gameover3 = letraParaMarcador1.render( u"¡Has Ganado!", 1, constantes.ROJO) texto_gameover4 = letraParaMarcador2.render( "Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gameover3, [300, 250]) pantalla.blit(texto_gameover4, [200, 310]) pygame.display.flip() pygame.event.wait() main() #Lo que modifique fue esto, el menu y la funcion play # TODO EL CODIGO PARA DIBUJAR DEBE IR DEBAJO DE ESTE COMENTARIO. nivel_actual.draw(pantalla) lista_sprites_activos.draw(pantalla) textoPuntos = letraParaPuntos.render( "Puntos: " + str(jugador_principal.puntos), 1, constantes.NEGRO) pantalla.blit(textoPuntos, (10, 10)) textoVidas = letraParaVidas.render( "Vidas: " + str(jugador_principal.vidas), 1, constantes.NEGRO) pantalla.blit(textoVidas, (900, 10)) tiempo_transcurrido = int(tiempo_comienzo - time()) textoTiempo = letraTiempo.render("Tiempo: " + str(tiempo_transcurrido), 1, constantes.NEGRO) pantalla.blit(textoTiempo, (300, 10)) LetraMensaje = pygame.font.Font(None, 38) El_Mensaje = LetraMensaje.render("El chef se acerca, apurate", 1, constantes.ROJO) if tiempo_transcurrido < 30 and no_aparece_boss: pantalla.blit(El_Mensaje, (330, 80)) if tiempo_transcurrido < 20 and no_aparece_boss: Jefe_final.nivel = nivel_actual Jefe_final.rect.x = jugador_principal.rect.x - 950 Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height Jefe_final.jugador = jugador_principal lista_sprites_activos.add(Jefe_final) no_aparece_boss = False if current_position < nivel_actual.posicion_bigboss and no_aparece_boss: Jefe_final.nivel = nivel_actual Jefe_final.rect.x = jugador_principal.rect.x - 950 Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height Jefe_final.jugador = jugador_principal lista_sprites_activos.add(Jefe_final) no_aparece_boss = False print current_position # TODO EL CODIGO PARA DIBUJAR DEBE IR POR ARRIBA DE ESTE COMENTARIO. clock.tick(60) pygame.display.flip() if jugador_principal.vidas == 0 or tiempo_transcurrido == 0: pantalla.fill(constantes.NEGRO) print current_position texto_gameover1 = letraParaMarcador1.render( "GAME OVER", 1, constantes.ROJO) texto_gameover2 = letraParaMarcador2.render( "Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gameover1, [300, 250]) pantalla.blit(texto_gameover2, [200, 310]) pygame.display.flip() pygame.event.wait() main() pygame.display.flip() if jugador_principal.vidas == -1: pantalla.fill(constantes.NEGRO) print current_position texto_gg = letraParaMarcador1.render( "HAS GANADO con " + str(tiempo_transcurrido) + "segundos sobrantes", 1, constantes.ROJO) texto_gameover2 = letraParaMarcador2.render( "Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gg, [300, 250]) pantalla.blit(texto_gameover2) pygame.display.flip() pygame.event.wait() main() # Salgo del juego return True
def Play(pantalla,time2, jugador): tiempo_comienzo = time() + time2 # Creamos al jugador con la imagen p1_walk.png jugador_principal = Player(jugador) letraParaPuntos = pygame.font.Font(None, 24) letraParaVidas = pygame.font.Font(None, 24) letraTiempo = pygame.font.Font(None, 24) Jefe_final = BOSS("imagenes/cheff.png") # Creamos todos los niveles del juego lista_niveles = [] #lista_niveles.append(Level_01(jugador_principal)) lista_niveles.append(Level_02(jugador_principal)) # Seteamos cual es el primer nivel. numero_del_nivel_actual = 0 nivel_actual = lista_niveles[numero_del_nivel_actual] lista_sprites_activos = pygame.sprite.Group() jugador_principal.nivel = nivel_actual jugador_principal.rect.x = 200 jugador_principal.rect.y = constantes.LARGO_PANTALLA - jugador_principal.rect.height - 120 lista_sprites_activos.add(jugador_principal) letraParaMarcador1 = pygame.font.Font(None, 56) letraParaMarcador2 = pygame.font.Font(None, 36) no_aparece_boss = True # Variable booleano que nos avisa cuando el usuario aprieta el botOn salir. salir = False clock = pygame.time.Clock() # -------- Loop Principal ----------- while not salir: for evento in pygame.event.get(): if evento.type == pygame.QUIT: salir = True if evento.type == pygame.KEYDOWN: if evento.key == pygame.K_SPACE: jugador_principal.avanzarr() if evento.key == pygame.K_LEFT: jugador_principal.retroceder() if evento.key == pygame.K_RIGHT: jugador_principal.avanzar() if evento.key == pygame.K_UP: jugador_principal.saltar() if evento.key == pygame.K_ESCAPE: salir = True if evento.type == pygame.KEYUP: if evento.key == pygame.K_LEFT and jugador_principal.mover_x < 0: jugador_principal.parar() if evento.key == pygame.K_RIGHT and jugador_principal.mover_x > 0: jugador_principal.parar() Jefe_final.avanzar() # Actualiza todo el jugador lista_sprites_activos.update() # Actualiza los elementos del nivel nivel_actual.update() # Si el jugador se acarca hacia el lado derecho mueve el mundo hacia la izquierda (-x) if jugador_principal.rect.x >= 500: diff = jugador_principal.rect.x - 500 jugador_principal.rect.x = 500 nivel_actual.avance_nivel(-diff) # Si el jugador se acarca hacia el lado izquierda mueve el mundo hacia la derecha (-x) if jugador_principal.rect.x <= 120: diff = 120 - jugador_principal.rect.x jugador_principal.rect.x = 120 nivel_actual.avance_nivel(diff) # Si el jugador se mueve hacia el fin del nivel cambia el jugador al siguiente nivel. current_position = jugador_principal.rect.x + nivel_actual.posicion_jugador_nivel if current_position < nivel_actual.limite_nivel: jugador_principal.rect.x = 120 if numero_del_nivel_actual < len(lista_niveles) - 1: current_position=0 pygame.event.wait() Jefe_final.kill() numero_del_nivel_actual += 1 nivel_actual = lista_niveles[numero_del_nivel_actual] jugador_principal.nivel = nivel_actual tiempo_comienzo = time() + time2 no_aparece_boss = True jugador_principal.vidas = jugador_principal.vidas + 5 else: pantalla.fill(constantes.NEGRO) texto_gameover3 = letraParaMarcador1.render(u"¡Has Ganado!", 1, constantes.ROJO) texto_gameover4 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gameover3, [300, 250]) pantalla.blit(texto_gameover4, [200, 310]) pygame.display.flip() pygame.event.wait() main() #Lo que modifique fue esto, el menu y la funcion play # TODO EL CODIGO PARA DIBUJAR DEBE IR DEBAJO DE ESTE COMENTARIO. nivel_actual.draw(pantalla) lista_sprites_activos.draw(pantalla) textoPuntos = letraParaPuntos.render("Puntos: " + str(jugador_principal.puntos), 1, constantes.NEGRO) pantalla.blit(textoPuntos, (10, 10)) textoVidas = letraParaVidas.render("Vidas: " + str(jugador_principal.vidas), 1, constantes.NEGRO) pantalla.blit(textoVidas, (900, 10)) tiempo_transcurrido = int(tiempo_comienzo - time()) textoTiempo = letraTiempo.render("Tiempo: " + str(tiempo_transcurrido), 1, constantes.NEGRO) pantalla.blit(textoTiempo, (300, 10)) LetraMensaje = pygame.font.Font(None, 38) El_Mensaje = LetraMensaje.render("El chef se acerca, apurate", 1, constantes.ROJO) if tiempo_transcurrido < 30 and no_aparece_boss: pantalla.blit(El_Mensaje,(330,80)) if tiempo_transcurrido < 20 and no_aparece_boss: Jefe_final.nivel = nivel_actual Jefe_final.rect.x = jugador_principal.rect.x - 950 Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height Jefe_final.jugador = jugador_principal lista_sprites_activos.add(Jefe_final) no_aparece_boss = False if current_position < nivel_actual.posicion_bigboss and no_aparece_boss: Jefe_final.nivel = nivel_actual Jefe_final.rect.x = jugador_principal.rect.x - 950 Jefe_final.rect.y = constantes.LARGO_PANTALLA - Jefe_final.rect.height Jefe_final.jugador = jugador_principal lista_sprites_activos.add(Jefe_final) no_aparece_boss = False print current_position # TODO EL CODIGO PARA DIBUJAR DEBE IR POR ARRIBA DE ESTE COMENTARIO. clock.tick(60) pygame.display.flip() if jugador_principal.vidas == 0 or tiempo_transcurrido == 0: pantalla.fill(constantes.NEGRO) print current_position texto_gameover1 = letraParaMarcador1.render("GAME OVER", 1, constantes.ROJO) texto_gameover2 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gameover1, [300, 250]) pantalla.blit(texto_gameover2, [200, 310]) pygame.display.flip() pygame.event.wait() main() pygame.display.flip() if jugador_principal.vidas == -1: pantalla.fill(constantes.NEGRO) print current_position texto_gg = letraParaMarcador1.render("HAS GANADO con "+ str(tiempo_transcurrido) + "segundos sobrantes" , 1, constantes.ROJO) texto_gameover2 = letraParaMarcador2.render("Presiona cualquier tecla para volver a jugar", 1, constantes.ROJO) pantalla.blit(texto_gg, [300, 250]) pantalla.blit(texto_gameover2) pygame.display.flip() pygame.event.wait() main() # Salgo del juego return True