{ "titulo": "Proyecto", "ancho": 500, "alto": 500, "tamaƱo": "500x500", "nombre_de_la_escena_inicial": "nivel1", "imagenes": [], "animaciones": [ { "nombre": "bomba_activa", "cuadros": [ { "nombre": "imagenes:objetos/bomba_0", "sprite": "imagenes-objetos-bomba_0" }, { "nombre": "imagenes:objetos/bomba_1", "sprite": "imagenes-objetos-bomba_1" } ], "velocidad": 10 }, { "nombre": "explosion", "cuadros": [ { "nombre": "imagenes:explosion/explosion_001", "sprite": "imagenes-explosion-explosion_001" }, { "nombre": "imagenes:explosion/explosion_002", "sprite": "imagenes-explosion-explosion_002" }, { "nombre": "imagenes:explosion/explosion_003", "sprite": "imagenes-explosion-explosion_003" }, { "nombre": "imagenes:explosion/explosion_004", "sprite": "imagenes-explosion-explosion_004" }, { "nombre": "imagenes:explosion/explosion_005", "sprite": "imagenes-explosion-explosion_005" }, { "nombre": "imagenes:explosion/explosion_006", "sprite": "imagenes-explosion-explosion_006" }, { "nombre": "imagenes:explosion/explosion_007", "sprite": "imagenes-explosion-explosion_007" }, { "nombre": "imagenes:explosion/explosion_008", "sprite": "imagenes-explosion-explosion_008" }, { "nombre": "imagenes:explosion/explosion_009", "sprite": "imagenes-explosion-explosion_009" }, { "nombre": "imagenes:explosion/explosion_010", "sprite": "imagenes-explosion-explosion_010" }, { "nombre": "imagenes:explosion/explosion_011", "sprite": "imagenes-explosion-explosion_011" }, { "nombre": "imagenes:explosion/explosion_012", "sprite": "imagenes-explosion-explosion_012" }, { "nombre": "imagenes:explosion/explosion_013", "sprite": "imagenes-explosion-explosion_013" }, { "nombre": "imagenes:explosion/explosion_014", "sprite": "imagenes-explosion-explosion_014" }, { "nombre": "imagenes:explosion/explosion_015", "sprite": "imagenes-explosion-explosion_015" } ], "velocidad": "30" }, { "nombre": "mini_explosion", "cuadros": [ { "nombre": "imagenes:mini-explosion/explosion_0", "sprite": "imagenes-mini-explosion-explosion_0" }, { "nombre": "imagenes:mini-explosion/explosion_1", "sprite": "imagenes-mini-explosion-explosion_1" }, { "nombre": "imagenes:mini-explosion/explosion_2", "sprite": "imagenes-mini-explosion-explosion_2" }, { "nombre": "imagenes:mini-explosion/explosion_3", "sprite": "imagenes-mini-explosion-explosion_3" }, { "nombre": "imagenes:mini-explosion/explosion_4", "sprite": "imagenes-mini-explosion-explosion_4" }, { "nombre": "imagenes:mini-explosion/explosion_5", "sprite": "imagenes-mini-explosion-explosion_5" }, { "nombre": "imagenes:mini-explosion/explosion_6", "sprite": "imagenes-mini-explosion-explosion_6" } ], "velocidad": "20" }, { "nombre": "golpe", "cuadros": [ { "nombre": "imagenes:efectos/golpe-1", "sprite": "imagenes-efectos-golpe-1" }, { "nombre": "imagenes:efectos/golpe-2", "sprite": "imagenes-efectos-golpe-2" }, { "nombre": "imagenes:efectos/golpe-3", "sprite": "imagenes-efectos-golpe-3" }, { "nombre": "imagenes:efectos/golpe-4", "sprite": "imagenes-efectos-golpe-4" }, { "nombre": "imagenes:efectos/golpe-5", "sprite": "imagenes-efectos-golpe-5" }, { "nombre": "imagenes:efectos/golpe-6", "sprite": "imagenes-efectos-golpe-6" } ], "velocidad": "15" }, { "nombre": "chispa", "cuadros": [ { "nombre": "imagenes:efectos/chispa-1", "sprite": "imagenes-efectos-chispa-1" }, { "nombre": "imagenes:efectos/chispa-2", "sprite": "imagenes-efectos-chispa-2" }, { "nombre": "imagenes:efectos/chispa-3", "sprite": "imagenes-efectos-chispa-3" }, { "nombre": "imagenes:efectos/chispa-4", "sprite": "imagenes-efectos-chispa-4" }, { "nombre": "imagenes:efectos/chispa-5", "sprite": "imagenes-efectos-chispa-5" } ], "velocidad": "20" }, { "nombre": "humo", "cuadros": [ { "nombre": "imagenes:efectos/humo-01", "sprite": "imagenes-efectos-humo-01" }, { "nombre": "imagenes:efectos/humo-02", "sprite": "imagenes-efectos-humo-02" }, { "nombre": "imagenes:efectos/humo-03", "sprite": "imagenes-efectos-humo-03" }, { "nombre": "imagenes:efectos/humo-04", "sprite": "imagenes-efectos-humo-04" }, { "nombre": "imagenes:efectos/humo-05", "sprite": "imagenes-efectos-humo-05" }, { "nombre": "imagenes:efectos/humo-06", "sprite": "imagenes-efectos-humo-06" }, { "nombre": "imagenes:efectos/humo-07", "sprite": "imagenes-efectos-humo-07" }, { "nombre": "imagenes:efectos/humo-08", "sprite": "imagenes-efectos-humo-08" }, { "nombre": "imagenes:efectos/humo-09", "sprite": "imagenes-efectos-humo-09" }, { "nombre": "imagenes:efectos/humo-10", "sprite": "imagenes-efectos-humo-10" } ], "velocidad": "15" }, { "nombre": "hombre_pixel_camina", "cuadros": [ { "nombre": "imagenes:pixelados/pixel_player_1", "sprite": "imagenes-pixelados-pixel_player_1" }, { "nombre": "imagenes:pixelados/pixel_player_2", "sprite": "imagenes-pixelados-pixel_player_2" } ], "velocidad": "15" }, { "nombre": "hombre_pixel_parado", "cuadros": [ { "nombre": "imagenes:pixelados/pixel_player_0", "sprite": "imagenes-pixelados-pixel_player_0" } ], "velocidad": 10 }, { "nombre": "fantasma_azul_camina", "cuadros": [ { "nombre": "imagenes:pacman/fantasma_azul_0", "sprite": "imagenes-pacman-fantasma_azul_0" }, { "nombre": "imagenes:pacman/fantasma_azul_1", "sprite": "imagenes-pacman-fantasma_azul_1" } ], "velocidad": "10" }, { "nombre": "fantasma_camina", "cuadros": [ { "nombre": "imagenes:pacman/fantasma_6", "sprite": "imagenes-pacman-fantasma_6" }, { "nombre": "imagenes:pacman/fantasma_7", "sprite": "imagenes-pacman-fantasma_7" } ], "velocidad": "10" }, { "nombre": "moneda", "cuadros": [ { "nombre": "imagenes:monedas/moneda_0", "sprite": "imagenes-monedas-moneda_0" }, { "nombre": "imagenes:monedas/moneda_1", "sprite": "imagenes-monedas-moneda_1" }, { "nombre": "imagenes:monedas/moneda_2", "sprite": "imagenes-monedas-moneda_2" }, { "nombre": "imagenes:monedas/moneda_3", "sprite": "imagenes-monedas-moneda_3" }, { "nombre": "imagenes:monedas/moneda_4", "sprite": "imagenes-monedas-moneda_4" }, { "nombre": "imagenes:monedas/moneda_5", "sprite": "imagenes-monedas-moneda_5" }, { "nombre": "imagenes:monedas/moneda_6", "sprite": "imagenes-monedas-moneda_6" }, { "nombre": "imagenes:monedas/moneda_7", "sprite": "imagenes-monedas-moneda_7" } ], "velocidad": "30" }, { "nombre": "pacman_come", "cuadros": [ { "nombre": "imagenes:pacman/pacman_4", "sprite": "imagenes-pacman-pacman_4" }, { "nombre": "imagenes:pacman/pacman_5", "sprite": "imagenes-pacman-pacman_5" }, { "nombre": "imagenes:pacman/pacman_6", "sprite": "imagenes-pacman-pacman_6" } ], "velocidad": "20" }, { "nombre": "pacman_espera", "cuadros": [ { "nombre": "imagenes:pacman/pacman_4", "sprite": "imagenes-pacman-pacman_4" } ], "velocidad": 10 }, { "nombre": "nave_girando_a_la_derecha", "cuadros": [ { "nombre": "imagenes:nave/nave_derecha_1", "sprite": "imagenes-nave-nave_derecha_1" }, { "nombre": "imagenes:nave/nave_derecha_2", "sprite": "imagenes-nave-nave_derecha_2" } ], "velocidad": "20" }, { "nombre": "nave_girando_a_la_izquierda", "cuadros": [ { "nombre": "imagenes:nave/nave_izquierda_1", "sprite": "imagenes-nave-nave_izquierda_1" }, { "nombre": "imagenes:nave/nave_izquierda_2", "sprite": "imagenes-nave-nave_izquierda_2" } ], "velocidad": "20" }, { "nombre": "nave_avanzando", "cuadros": [ { "nombre": "imagenes:nave/nave_avanza_1", "sprite": "imagenes-nave-nave_avanza_1" }, { "nombre": "imagenes:nave/nave_avanza_2", "sprite": "imagenes-nave-nave_avanza_2" } ], "velocidad": "20" }, { "nombre": "nave_en_reposo", "cuadros": [ { "nombre": "imagenes:nave/nave_reposo", "sprite": "imagenes-nave-nave_reposo" } ], "velocidad": 10 }, { "nombre": "gallina_vuela", "cuadros": [ { "nombre": "imagenes:gallina/gallina_vuela_1", "sprite": "imagenes-gallina-gallina_vuela_1" }, { "nombre": "imagenes:gallina/gallina_vuela_2", "sprite": "imagenes-gallina-gallina_vuela_2" }, { "nombre": "imagenes:gallina/gallina_vuela_3", "sprite": "imagenes-gallina-gallina_vuela_3" }, { "nombre": "imagenes:gallina/gallina_vuela_2", "sprite": "imagenes-gallina-gallina_vuela_2" } ], "velocidad": "20" }, { "nombre": "nave_avanza", "cuadros": [ { "nombre": "imagenes:nave/nave_avanza_1", "sprite": "imagenes-nave-nave_avanza_1" }, { "nombre": "imagenes:nave/nave_avanza_2", "sprite": "imagenes-nave-nave_avanza_2" } ], "velocidad": 10 }, { "nombre": "conejo_salta", "cuadros": [ { "nombre": "imagenes:conejo/conejo_salta", "sprite": "imagenes-conejo-conejo_salta" } ], "velocidad": 10 }, { "nombre": "conejo_parado", "cuadros": [ { "nombre": "imagenes:conejo/conejo_parado1", "sprite": "imagenes-conejo-conejo_parado1" }, { "nombre": "imagenes:conejo/conejo_parado2", "sprite": "imagenes-conejo-conejo_parado2" } ], "velocidad": "2" }, { "nombre": "conejo_camina", "velocidad": 15, "cuadros": [ { "nombre": "imagenes:conejo/conejo_camina1", "sprite": "imagenes-conejo-conejo_camina1" }, { "nombre": "imagenes:conejo/conejo_camina2", "sprite": "imagenes-conejo-conejo_camina2" } ] }, { "nombre": "bmo_camina", "velocidad": 15, "cuadros": [ { "nombre": "imagenes:bmo/bmo_camina_1", "sprite": "imagenes-bmo-bmo_camina_1" }, { "nombre": "imagenes:bmo/bmo_camina_2", "sprite": "imagenes-bmo-bmo_camina_2" } ] }, { "nombre": "bmo_escala", "cuadros": [ { "nombre": "imagenes:bmo/bmo_escala_1", "sprite": "imagenes-bmo-bmo_escala_1" }, { "nombre": "imagenes:bmo/bmo_escala_2", "sprite": "imagenes-bmo-bmo_escala_2" } ], "velocidad": 10 }, { "nombre": "bmo_salta", "cuadros": [ { "nombre": "imagenes:bmo/bmo_salta", "sprite": "imagenes-bmo-bmo_salta" } ], "velocidad": 10 }, { "nombre": "bmo_parado", "cuadros": [ { "nombre": "imagenes:bmo/bmo_parado", "sprite": "imagenes-bmo-bmo_parado" } ], "velocidad": 10 } ], "codigos": { "escenas": [ { "nombre": "nivel1", "codigo": "class nivel1 extends Escena {\n enemigo_intervalo_salida: number = 3.0;\n enemigo_rango_velocidad = { \"minimo\": 0.6, \"maximo\": 0.8 };\n enemigo_rango_enfriamiento = { \"minimo\": 1.6, \"maximo\": 1.8 };\n\n numero_enemigos_max: number = 4;\n numero_oleada: number = 0;\n numero_max_oleada: number = 2;\n numero_enemigos_restantes: number;\n\n iniciar() {\n this.crear_oleada();\n }\n\n actualizar() {\n this.desplazamiento_del_fondo_x += 2;\n }\n\n cuando_llega_el_mensaje_perder() {\n this.establecer_mensaje(\"Perdiste :(\");\n this.pilas.luego(2.0, () => {\n this.pilas.clonar(\"reiniciar_escena\");\n });\n }\n\n cuando_llega_el_mensaje_ganar() {\n this.establecer_mensaje(\"Ganaste!!! :)\");\n }\n\n establecer_mensaje(texto_resultado: String) {\n let nuevo_texto = this.pilas.clonar(\"resultado\");\n nuevo_texto.texto = texto_resultado;\n }\n\n cuando_llega_el_mensaje_enemigo_eliminado() {\n this.numero_enemigos_restantes -= 1;\n if (this.numero_enemigos_restantes == 0) {\n this.crear_oleada();\n }\n }\n\n crear_oleada() {\n this.numero_oleada += 1;\n\n if (this.numero_oleada > this.numero_max_oleada) {\n this.pilas.enviar_mensaje_global(\"ganar\");\n }\n else {\n let texto_oleada = this.pilas.clonar(\"texto_oleada\");\n texto_oleada.texto = \"Oleada \" + this.numero_oleada.toString();\n\n this.numero_enemigos_restantes = this.numero_enemigos_max;\n\n this.enemigo_rango_velocidad.minimo += 0.2;\n this.enemigo_rango_velocidad.maximo += 0.2;\n this.enemigo_rango_enfriamiento.minimo -= 0.1;\n this.enemigo_rango_enfriamiento.maximo -= 0.1;\n this.crear_enemigo();\n }\n }\n\n crear_enemigo() {\n this.pilas.cada(this.enemigo_intervalo_salida, () => {\n let nuevo_enemigo = this.pilas.clonar(\"enemigo\");\n nuevo_enemigo.x = 280;\n nuevo_enemigo.y = this.proyecto.valor_aleatorio(-200, 200);\n nuevo_enemigo.asignar_velocidad_movimiento(this.velocidad_aleatoria());\n nuevo_enemigo.asignar_tiempo_enfriamiento(this.enfriamiento_aleatorio());\n //this.pilas.observar(\"Pos_y Spawn\", nuevo_enemigo.y);\n }, this.numero_enemigos_max);\n }\n\n velocidad_aleatoria() {\n let vel_aleatoria = this.proyecto.valor_aleatorio(\n this.enemigo_rango_velocidad.minimo,\n this.enemigo_rango_velocidad.maximo\n );\n return vel_aleatoria;\n }\n\n enfriamiento_aleatorio() {\n let enf_aleatorio = this.proyecto.valor_aleatorio(\n this.enemigo_rango_enfriamiento.minimo,\n this.enemigo_rango_enfriamiento.maximo\n );\n return enf_aleatorio;\n }\n\n}" } ], "actores": [ { "nombre": "nave", "codigo": "// @ts-ignore\nclass nave extends Actor {\n // Movimiento\n vel_movimiento: number = 8;\n limite: number = 220;\n // Disparo normal\n tiempo_enfriamiento: number = 0.4;\n puede_disparar: boolean = true;\n // Disparo bomba\n bombas_restantes: number = 1;\n\n iniciar() {\n this.animacion = \"nave_avanzando\";\n this.y = 0;\n }\n\n actualizar() {\n this.control_movimiento();\n this.control_limites();\n\n if (this.pilas.control.espacio && this.puede_disparar) {\n this.disparar();\n }\n\n if (this.pilas.control.tecla_e && this.bombas_restantes > 0) {\n this.disparar_bomba();\n }\n }\n\n control_movimiento() {\n if (this.control.arriba) {\n this.animacion = \"nave_girando_a_la_derecha\";\n this.y += this.vel_movimiento;\n }\n else if (this.control.abajo) {\n this.animacion = \"nave_girando_a_la_izquierda\";\n this.y -= this.vel_movimiento;\n }\n else {\n this.animacion = \"nave_avanzando\";\n }\n\n if (this.control.derecha) {\n this.x += this.vel_movimiento;\n }\n else if (this.control.izquierda) {\n this.x -= this.vel_movimiento\n }\n }\n\n control_limites() {\n if (this.x >= this.limite) {\n this.x = this.limite;\n }\n else if (this.x <= -this.limite) {\n this.x = -this.limite;\n }\n\n if (this.y >= this.limite) {\n this.y = this.limite;\n }\n else if (this.y <= -this.limite) {\n this.y = -this.limite;\n }\n\n }\n\n disparar() {\n this.puede_disparar = false;\n this.pilas.clonar_en(\"disparo_player\", this.x + 30, this.y);\n\n this.pilas.luego(this.tiempo_enfriamiento, () => {\n this.puede_disparar = true;\n });\n }\n\n disparar_bomba() {\n this.bombas_restantes -= 1;\n this.pilas.clonar_en(\"bomba_player\", this.x, this.y);\n }\n\n cuando_colisiona(otro_actor: Actor) {\n let es_enemigo = otro_actor.tiene_etiqueta(\"enemigo\");\n let es_bomba = otro_actor.tiene_etiqueta(\"bomba_enemigo\");\n let es_disparo = otro_actor.tiene_etiqueta(\"disparo_enemigo\");\n if (es_enemigo) {\n this.destruir(otro_actor, true);\n }\n else if (es_bomba || es_disparo) {\n this.destruir(otro_actor, false);\n }\n }\n\n\n destruir(otro_actor: Actor, explotar_otro_actor: boolean) {\n this.pilas.clonar_en(\"explosion\", this.x, this.y);\n this.eliminar();\n otro_actor.eliminar();\n if (explotar_otro_actor) {\n this.pilas.clonar_en(\"explosion\", otro_actor.x, otro_actor.y);\n }\n\n this.pilas.enviar_mensaje_global(\"perder\");\n }\n\n\n}\n" }, { "nombre": "disparo_player", "codigo": "// @ts-ignore\nclass disparo_player extends Actor {\n\n velocidad: number;\n\n iniciar() {\n this.centro_x = 0.3;\n this.velocidad = 10;\n this.pilas.reproducir_sonido(\"laser\");\n }\n\n actualizar() {\n this.x += this.velocidad;\n this.eliminar_si_sale_de_la_pantalla();\n }\n\n eliminar_si_sale_de_la_pantalla() {\n let derecha = this.pilas.camara.borde_derecho;\n if (this.x > derecha) {\n this.eliminar();\n }\n }\n}\n" }, { "nombre": "enemigo", "codigo": "// @ts-ignore\nclass enemigo extends Actor {\n vel_movimiento: number = 2.0;\n tiempo_enfriamiento: number = 1.2;\n puede_disparar: boolean = true;\n\n iniciar() { }\n\n asignar_velocidad_movimiento(vel: number) {\n this.vel_movimiento = vel;\n this.pilas.observar(\"velocidad_enemigo\", this.vel_movimiento);\n }\n\n asignar_tiempo_enfriamiento(enfriamiento: number) {\n this.tiempo_enfriamiento = enfriamiento;\n this.pilas.observar(\"enfriamiento\", this.tiempo_enfriamiento);\n }\n\n actualizar() {\n if (this.puede_disparar) {\n this.disparar();\n }\n\n this.x -= this.vel_movimiento;\n this.eliminar_si_sale_de_la_pantalla();\n }\n\n disparar() {\n this.puede_disparar = false;\n let disparo_izq = this.pilas.clonar_en(\n \"disparo_enemigo\", this.x - 15, this.y + 10);\n\n let disparo_der = this.pilas.clonar_en(\n \"disparo_enemigo\", this.x - 15, this.y - 10);\n\n this.reproducir_sonido(\"laser\");\n\n this.pilas.luego(this.tiempo_enfriamiento, () => {\n this.puede_disparar = true;\n });\n }\n\n cuando_colisiona(otro_actor: Actor) {\n let es_disparo = otro_actor.tiene_etiqueta(\"disparo_player\");\n let es_bomba = otro_actor.tiene_etiqueta(\"bomba_player\");\n\n if (es_disparo || es_bomba) {\n otro_actor.eliminar();\n this.destruir();\n }\n }\n\n destruir() {\n this.pilas.enviar_mensaje_global(\"modificar_puntaje\", { \"puntos\": 10 });\n this.enviar_mensaje_global(\"enemigo_eliminado\");\n\n this.crear_recompensa();\n\n this.pilas.clonar_en(\"explosion\", this.x, this.y);\n this.eliminar();\n }\n\n crear_recompensa() {\n let numero_azar = Math.random();\n this.pilas.observar(\"Recompensa_azar\", numero_azar);\n\n if (numero_azar <= 0.6) {\n this.pilas.clonar_en(\"moneda\", this.x, this.y);\n }\n else if (numero_azar <= 0.8) {\n this.pilas.clonar_en(\"bomba_enemigo\", this.x, this.y);\n }\n }\n\n eliminar_si_sale_de_la_pantalla() {\n let limite_para_eliminar = this.pilas.camara.borde_izquierdo - 30.0;\n if (this.x < limite_para_eliminar) {\n this.pilas.enviar_mensaje_global(\"modificar_puntaje\", { \"puntos\": -25 });\n this.eliminar();\n }\n }\n\n}\n" }, { "nombre": "bomba_player", "codigo": "// @ts-ignore\nclass bomba_player extends Actor {\n vel_caida: number = 5.0;\n\n iniciar() {\n this.animacion = \"bomba_activa\";\n this.reproducir_sonido(\"seleccion-grave\");\n }\n\n actualizar() {\n this.y -= this.vel_caida;\n this.eliminar_si_sale_de_la_pantalla();\n }\n\n eliminar_si_sale_de_la_pantalla() {\n if (this.y < this.pilas.camara.borde_abajo) {\n this.eliminar();\n }\n }\n\n}\n" }, { "nombre": "explosion", "codigo": "// @ts-ignore\nclass explosion extends Actor {\n\n iniciar() {\n this.animacion = \"explosion\";\n this.pilas.reproducir_sonido(\"explosion\");\n }\n\n actualizar() {}\n\n cuando_finaliza_animacion(nombre: string) {\n this.eliminar();\n }\n}\n" }, { "nombre": "bomba_enemigo", "codigo": "// @ts-ignore\nclass bomba_enemigo extends Actor {\n vel_x: number = 0.0;\n vel_y: number = 0.0;\n tiempo_vida: number = 4.0;\n\n iniciar() {\n this.animacion = \"bomba_activa\";\n this.vel_x = this.proyecto.valor_aleatorio(-1.2, 0.5);\n this.vel_y = this.proyecto.valor_aleatorio(-1.5, 1.5);\n this.pilas.luego(this.tiempo_vida, () => { this.destruir() });\n }\n\n actualizar() {\n this.x += this.vel_x;\n this.y += this.vel_y;\n }\n\n destruir() {\n this.pilas.clonar_en(\"mini_explosion\", this.x, this.y);\n this.eliminar();\n }\n\n}\n" }, { "nombre": "moneda", "codigo": "// @ts-ignore\nclass moneda extends Actor {\n vel_x: number = 0.0;\n vel_y: number = 0.0;\n tiempo_vida: number = 3.0;\n\n iniciar() {\n this.animacion = \"moneda\";\n this.vel_x = this.proyecto.valor_aleatorio(-0.8, -0.2);\n this.vel_y = this.proyecto.valor_aleatorio(-0.4, 0.4);\n this.pilas.luego(this.tiempo_vida, () => { this.eliminar() });\n }\n\n actualizar() {\n this.x += this.vel_x;\n this.y += this.vel_y;\n }\n\n cuando_colisiona(otro_actor: Actor) {\n if (otro_actor.tiene_etiqueta(\"nave_player\")) {\n this.pilas.enviar_mensaje_global(\"modificar_puntaje\", {\"puntos\": 50});\n this.reproducir_sonido(\"moneda\");\n this.eliminar();\n }\n }\n}\n" }, { "nombre": "mini_explosion", "codigo": "// @ts-ignore\nclass mini_explosion extends Actor {\n\n iniciar() {\n this.animacion = \"explosion\";\n this.pilas.reproducir_sonido(\"explosion\");\n }\n\n actualizar() {}\n\n cuando_finaliza_animacion(nombre: string) {\n this.eliminar();\n }\n}\n" }, { "nombre": "disparo_enemigo", "codigo": "// @ts-ignore\nclass disparo_enemigo extends Actor {\n velocidad: number = 8.0;\n\n iniciar() { }\n\n actualizar() {\n this.x -= this.velocidad;\n this.eliminar_si_sale_de_la_pantalla();\n }\n\n eliminar_si_sale_de_la_pantalla() {\n if (this.x < this.pilas.camara.borde_izquierdo) {\n this.eliminar();\n }\n }\n}\n" }, { "nombre": "puntaje", "codigo": "// @ts-ignore\nclass puntaje extends ActorTextoBase {\n puntaje: number = 0;\n\n iniciar() {\n this.actualizar_texto();\n this.fijo = true;\n }\n\n cuando_llega_el_mensaje_modificar_puntaje(datos) {\n this.actualizar_puntaje(datos.puntos);\n }\n\n actualizar_puntaje(cantidad: number) {\n this.puntaje += cantidad;\n if (this.puntaje < 0) {\n this.puntaje = 0;\n }\n\n this.actualizar_texto();\n }\n\n actualizar_texto() {\n this.texto = `Puntaje: ${this.puntaje}`;\n }\n}\n" }, { "nombre": "resultado", "codigo": "// @ts-ignore\nclass resultado extends ActorTextoBase {\n}\n" }, { "nombre": "texto_oleada", "codigo": "// @ts-ignore\nclass texto_oleada extends ActorTextoBase {\n iniciar(){\n this.x = 0;\n this.y = 0;\n\n this.pilas.luego(1.5, () => { this.eliminar() });\n }\n}\n" }, { "nombre": "reiniciar_escena", "codigo": "// @ts-ignore\nclass reiniciar_escena extends ActorTextoBase {\n\n iniciar() {\n this.fijo = true;\n }\n\n cuando_hace_click() {\n this.pilas.reiniciar_escena();\n }\n\n cuando_mueve() {\n this.pilas.definir_cursor(\"pointer\");\n }\n\n cuando_sale() {\n this.pilas.definir_cursor(\"normal\");\n }\n}\n" } ], "proyecto": "class Proyecto {\n iniciar() {\n }\n\n valor_aleatorio(valor_min: number, valor_max: number) {\n return Math.random() * (valor_max - valor_min) + valor_min;\n }\n\n}" }, "escenas": [ { "nombre": "nivel1", "id": 1, "ancho": 1000, "alto": 1000, "camara_x": 0, "camara_y": 0, "gravedad_x": 0, "gravedad_y": 1, "fondo": "decoracion:fondos/fondo-espacio_1", "actores": [ { "x": -179.90867579908675, "y": 8.219178082191775, "z": 0, "imagen": "imagenes:nave/nave_reposo", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "nave_player", "espejado": false, "espejado_vertical": false, "figura": "rectangulo", "figura_dinamica": false, "figura_ancho": 30, "figura_alto": 30, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 12064284181927134, "activo": true, "nombre": "nave", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -131.64556962025316, "y": 8.227848101265835, "z": 0, "imagen": "imagenes:disparos/laser", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 0.6, "escala_y": 1, "transparencia": 0, "etiqueta": "disparo_player", "espejado": false, "espejado_vertical": false, "figura": "rectangulo", "figura_dinamica": false, "figura_ancho": 24, "figura_alto": 10, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 0, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 10826628431963638, "activo": false, "nombre": "disparo_player", "habilidades": [], "sensores": [], "lasers": [] }, { "x": 230.8574461583002, "y": -1.3068373731362044, "z": 0, "imagen": "imagenes:nave/nave_enemiga_2", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 180, "escala_x": 0.6, "escala_y": 0.6, "transparencia": 0, "etiqueta": "enemigo", "espejado": false, "espejado_vertical": false, "figura": "rectangulo", "figura_dinamica": false, "figura_ancho": 30, "figura_alto": 40, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 15495697116365140, "activo": false, "nombre": "enemigo", "habilidades": [], "sensores": [], "lasers": [] }, { "x": 0, "y": 0, "z": 0, "imagen": "imagenes:objetos/bomba_0", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 0.4, "escala_y": 0.4, "transparencia": 0, "etiqueta": "bomba_player", "espejado": false, "espejado_vertical": false, "figura": "circulo", "figura_dinamica": false, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 10, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 12488081142828212, "activo": false, "nombre": "bomba_player", "habilidades": [ "rotar constantemente" ], "sensores": [], "lasers": [] }, { "x": -41.21212121212119, "y": 42.424242424242436, "z": 0, "imagen": "imagenes:explosion/explosion_001", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "explosion", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": false, "texto_con_borde": false, "id": 10395139708700020, "activo": false, "nombre": "explosion", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -62.27848101265826, "y": -70, "z": 0, "imagen": "imagenes:objetos/bomba_0", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 0.3, "escala_y": 0.3, "transparencia": 0, "etiqueta": "bomba_enemigo", "espejado": false, "espejado_vertical": false, "figura": "circulo", "figura_dinamica": false, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 8, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 15589034221323750, "activo": false, "nombre": "bomba_enemigo", "habilidades": [ "rotar constantemente" ], "sensores": [], "lasers": [] }, { "x": 0, "y": 0, "z": 0, "imagen": "imagenes:objetos/moneda", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "moneda", "espejado": false, "espejado_vertical": false, "figura": "circulo", "figura_dinamica": false, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 10, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 16431138183530288, "activo": false, "nombre": "moneda", "habilidades": [], "sensores": [], "lasers": [] }, { "x": 27.707827961957605, "y": 114.54622463516998, "z": 0, "imagen": "imagenes:explosion/explosion_001", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 0.5, "escala_y": 0.5, "transparencia": 0, "etiqueta": "mini_explosion", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": false, "texto_con_borde": false, "id": 17997349916982696, "activo": false, "nombre": "mini_explosion", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -111.64556962025316, "y": -11.772151898734165, "z": 0, "imagen": "imagenes:disparos/laser_2", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 0.6, "escala_y": 1, "transparencia": 0, "etiqueta": "disparo_enemigo", "espejado": true, "espejado_vertical": false, "figura": "rectangulo", "figura_dinamica": false, "figura_ancho": 22, "figura_alto": 6, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 0, "figura_sensor": true, "es_texto": false, "texto_con_borde": false, "id": 12937602425868246, "activo": false, "nombre": "disparo_enemigo", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -177.25540025412963, "y": -228.7166454891995, "z": -10, "imagen": "imagenes:basicos/invisible", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "actor", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": true, "texto_con_borde": false, "texto": "PUNTAJE: 0", "fuente": "color-blanco-con-sombra-chico", "id": 12193277750646554, "activo": true, "nombre": "puntaje", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -18.354430379746816, "y": 220.25316455696202, "z": -10, "imagen": "imagenes:basicos/invisible", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "resultado", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": true, "texto_con_borde": false, "texto": "Hola mundo", "fuente": "color-blanco-con-sombra", "id": 11081417415361476, "activo": false, "nombre": "resultado", "habilidades": [], "sensores": [], "lasers": [] }, { "x": -1.270648030495579, "y": 28.58958068614993, "z": -10, "imagen": "imagenes:basicos/invisible", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "texto_oleada", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": true, "texto_con_borde": false, "texto": "Oleada N", "fuente": "color-blanco-con-sombra-medio", "id": 14496602195250664, "activo": false, "nombre": "texto_oleada", "habilidades": [], "sensores": [], "lasers": [] }, { "x": 0, "y": 0, "z": -10, "imagen": "imagenes:basicos/invisible", "centro_x": 0.5, "centro_y": 0.5, "rotacion": 0, "escala_x": 1, "escala_y": 1, "transparencia": 0, "etiqueta": "actor", "espejado": false, "espejado_vertical": false, "figura": "", "figura_dinamica": true, "figura_ancho": 100, "figura_alto": 100, "figura_radio": 40, "figura_sin_rotacion": false, "figura_rebote": 1, "figura_sensor": false, "es_texto": true, "texto_con_borde": false, "fondo": "imagenes:redimensionables/gris", "texto": "Jugar de nuevo", "fuente": "color-negro", "id": 11280738452815424, "activo": false, "nombre": "reiniciar_escena", "habilidades": [], "sensores": [], "lasers": [] } ] } ], "fps": 60, "modo_de_video": "suavizado", "sonidos": [ { "nombre": "laser", "ruta": "sonidos/laser.mp3" }, { "nombre": "explosion", "ruta": "sonidos/explosion.mp3" }, { "nombre": "gallina", "ruta": "sonidos/gallina.mp3" }, { "nombre": "moneda", "ruta": "sonidos/moneda.mp3" }, { "nombre": "salto-corto", "ruta": "sonidos/salto-corto.mp3" }, { "nombre": "salto-largo", "ruta": "sonidos/salto-largo.mp3" }, { "nombre": "seleccion-aguda", "ruta": "sonidos/seleccion-aguda.mp3" }, { "nombre": "seleccion-grave", "ruta": "sonidos/seleccion-grave.mp3" }, { "nombre": "comer", "ruta": "sonidos/comer.mp3" } ], "bloques": { "proyecto": { "texto": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('ZC`*TK^}PI+^~52^ak!H', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n" }, "escenas": [ { "nombre": "nivel1", "bloques": { "texto": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('ms2+If6B9Dl^C;YsS/{x', this.id);\n}\nescena._bloques_al_iniciar = function(x, y, evento) {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('=UY{}h^MjrUa!2]Q!d*C', this.id);\n}\nescena._bloques_cuando_hace_click = function(x, y, evento) {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('3oE27p+:PzlhcbX-XBVe', this.id);\n}\nescena._bloques_al_actualizar = function() {\n\n };" } } ], "actores": [ { "nombre": "nave", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "disparo_player", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "enemigo", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "bomba_player", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "actor", "bloques": "" }, { "nombre": "explosion", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "bomba_enemigo", "bloques": "", "codigo_de_bloques": "" }, { "nombre": "moneda", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "moneda", "bloques": "" }, { "nombre": "mini_explosion", "bloques": "", "codigo_de_bloques": "" }, { "nombre": "disparo_enemigo", "bloques": "", "codigo_de_bloques": "" }, { "nombre": "puntaje", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "resultado", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "texto_oleada", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" }, { "nombre": "reiniciar_escena", "bloques": "", "codigo_de_bloques": "if (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('^BS9[_V!D30$Klp?G]Nt', this.id);\n}\nactor._bloques_iniciar = function() {\n\n };\n\nif (this.id) {\n\tthis.pilas.notificar_ejecucion_del_bloque('D[i2{g4SjDY+sAT7f=W@', this.id);\n}\nactor._bloques_actualizar = function() {\n\n };\n" } ] } }