{
"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"
}
]
}
}