live history, un audiojuego que estoy desarrollando

124 Nachrichten, 5 Seiten:  1 2 34 5 ↖ Zurück zur Themenliste

~msgScore~: +2

91. Amil ,

hola vuenas, el juego es en bgt?

~msgScore~: +0

92. maria_123,

ni idea

~msgScore~: +0

93. balbino,

Hola amigos, ¡siento mucho no responderles!
Les había dicho que les compartiría el código que llevo de mi audiojuego, más aún no se lo he compartido. En este mensaje les comparto el código completo, por si alguno puede orientarme.

Live_history.bgt (script principal)

//incluir los scripts necesarios para el funcionamiento de live history

include "game.bgt" //esto incluye el script de la interfaz del juego

include"dynamic_menu.bgt" //esto incluye la librería dynamic_menu, para crear menús

include"sound_pool.bgt" //sound pool 3d, una versión modificada de la librería sound pool

include"form.bgt" //audio form, la herramienta más potente de todas

include"voz_avanzada.bgt" //incluir la librería voz avanzada de camilo ortiz, para gestionar los mensajes hablados del juego

include"sound_play.bgt" //funciones de reproducción simples de sonido librería creada por yóisber gonzález

//objetos
sound_pool pool; //instancia del objeto sound pool
voz_avanzada mi_voz; //objeto voz avanzada
dictionary live_history;
file live_history_data;
jugador personaje;
jugador personaje_montado;
jugador bote;
settings live_history_settings;
//mapa mundo(50000, 50000, "colors");
//objetos de sonidos
sound escribiendo;
sound cargando;
sound music; //este sonido gestiona la música
sound Altas_llamas;
sound Buzon;
sound Cama;
sound Puerta;
sound Puerta_de_piedra;
sound Estufa;
sound Estufa_electrica;
sound Salida_o_conexion_entre_areas;
sound seleccionar;
sound error;
sound creando_datos;
sound mover;
sound logo; //sonido de logotipo de live history
sound iniciando;
sound iniciado;
sound recordatorio;
sound recordatorio2;
sound next;
sound endstage;
sound listo;
sound fuego;
sound menu_cargado; //cuando se inicia un menú
sound Volver;
sound momento_desagradable;
sound iglesia;
sound paso;
sound comienza_el_discurso;
sound fin_del_discurso;
sound lluvia;
sound directorio;
sound jaws;
//variables y constantes
int x, y;
string nombre;
string mis_datos;
int Paso;
bool configuracion_guardada;
bool ventana_activa;
bool live_history_iniciado=false;
//constantes de dirección
const int derecha=1;
const int izquierda=-1;
const int adelante=1;
const int retroceder=-1;
//enumerar los objetos
//enumeración de los medios de transporte
enum transporte
{
coche,
avion,
elicoptero,
nave,
tren,
ferrocarril,
barco,
bote
}
//enumeración de los objetos
enum objeto
{
zapatos,
portaobjetos,
telefono,
balde,
tabla,
plato,
vaso,
encendedor,
llave,
etiqueta_de_versiculo
}
//clase para gestionar la información del jugador, como su posición en el mapa y sus estadísticas
class jugador
{
int posicion_x;
int posicion_y;
double salud;
double defenza;
double hambre;
double sed;
jugador()
{
this.posicion_x=x;
this.posicion_y=y;
this.salud=100;
this.defenza=20;
this.hambre=0;
this.sed=0;
}
}
//pequeña clase para gestionar las precargas
class precarga
{
sound@ sonido; //el objeto de sonido a utilizar para gestionar las precargas
string nombre; //cadena que almacena el nombre de archivo de sonido a precargar
}

precarga[] precargas;

void reservar_memoria(int cantidad)
{
precargas.reserve(cantidad);
}

bool agregar_precarga(string nombre_de_archivo)
{

// Verify that the sound hasn't already been loaded as a preload by comparing the filenames.

for(int i=0;i<precargas.length();i++)
{
if(precargas[i].nombre==nombre_de_archivo)
return false;
}

sound temporal;
temporal.load(nombre_de_archivo);
if(temporal.active==false)
{
return false;
}
precarga cargador;
@cargador.sonido=temporal;
cargador.nombre=nombre_de_archivo;
precargas.insert_last(cargador);
return true;
}

// The following function resets all of the preloads.

void resetear_precargas()
{
precargas.resize(0);

// Call the garbage_collect function to ensure that all data is cleaned up immediately.
// Comment out this call if you don't want this extra delay here.

garbage_collect();
}

//funciones de sonido y música
bool fade(sound@ noise, double start_volume, double end_volume, double time, bool interruptable)
{
noise.volume = start_volume;
timer t;
double elapsed = t.elapsed;
while(elapsed < time)
{ noise.volume = start_volume + (end_volume-start_volume)*elapsed/time;
wait(10);
elapsed = t.elapsed;
if(key_pressed(KEY_SPACE) && interruptable)
{
return true;
}
}
noise.volume = end_volume;
return false;
}

int music_volume=-10; // Volume for all game music
void music_change(string music_file)
{
if(music.playing)
{
fade(@music, music_volume, -50, 500, false);
}
music.stream(music_file);
music.volume = -50;
music.play_looped();
fade(@music, -50, music_volume, 500, false);
}

void music_stop()
{
if(music.playing)
{
fade(@music, music_volume, -50, 500, false);
}
}

void music_pause()
{
music.pause();
}

void music_resume()
{
music.play_looped();
}

void music_volume_up()
{
if(music_volume <= -5)
{
int old_volume = music_volume;
music_volume += 5;
fade(@music, old_volume, music_volume, 200, false);
}
}

void music_volume_down()
{
if(music_volume >= -55)
{
int old_volume = music_volume;
music_volume -= 5;
fade(@music, old_volume, music_volume, 200, false);
}
}

void sound_play_centered(string filename)
{
pool.play_stationary(filename, false); // Not looping
}

void sound_resume_all()
{
pool.resume_all();
}

void sound_purge()
{
pool.destroy_all();
}

void datos()
{
if(!directory_exists("Mis Datos"))
{
hablar_y_esperar("creando el directorio de datos, por favor espere...");
guardar_datos(live_history_settings);
directory_create("Mis Datos");
directorio.play();
}
else
{
mi_voz.speak_interrupt("Cargando");
cargar_datos(live_history_settings);
cargando.play();
}
}

void guardar_datos(settings@ game_settings)
{
game_settings.write_number(music_volume, -10);
game_settings.write_number(mi_voz.salida, 0);
game_settings.write_number(mi_voz.espera_lector, 42);
game_settings.write_number(mi_voz.velocidad_sapi, 0);
game_settings.write_number(mi_voz.tono_sapi, 0);
game_settings.write_number(mi_voz.volumen_sapi, 0);
}

void cargar_datos(settings@ game_settings)
{
game_settings.read_number(music_volume);
game_settings.read_number(mi_voz.salida);
game_settings.read_number(mi_voz.espera_lector);
game_settings.read_number(mi_voz.velocidad_sapi);
game_settings.read_number(mi_voz.tono_sapi);
game_settings.read_number(mi_voz.volumen_sapi);
}

void cargar_todos_los_sonidos()
{
iniciando.load("Voces/iniciando.ogg");
iniciado.load("Voces/iniciado.ogg");
iniciando.play_wait();
iniciando.close();
agregar_precarga("Música/iglesia.ogg");
agregar_precarga("Música/tu_casa.ogg");
agregar_precarga("Música/ciudad_blue.ogg");
agregar_precarga("Música/andén.ogg");
agregar_precarga("Música/altar.ogg");
agregar_precarga("Música/área_de_espera_de_autobús.ogg");
agregar_precarga("Música/alcantarillado.ogg");
agregar_precarga("Música/autobús.ogg");
agregar_precarga("Música/avión.ogg");
agregar_precarga("Música/avión_a_mitad_de_camino.ogg");
agregar_precarga("Música/avión_aterrizando.ogg");
agregar_precarga("Música/avión_cerca_del_punto_de_aterrizage.ogg");
agregar_precarga("Música/avión_despegando.ogg");
agregar_precarga("Música/avión_listo_para_despegar.ogg");
agregar_precarga("Música/avión_volando.ogg");
agregar_precarga("Música/avitación.ogg");
agregar_precarga("Música/balle_green.ogg");
agregar_precarga("Música/barco.ogg");
agregar_precarga("Música/bosque_frío.ogg");
agregar_precarga("Música/camino_a_las_alturas.ogg");
agregar_precarga("Música/campo_de_guerra.ogg");
agregar_precarga("Música/carro.ogg");
agregar_precarga("Música/castillo_beautiful.ogg");
agregar_precarga("Música/centro_de_juegos.ogg");
agregar_precarga("Música/ciudad_black.ogg");
agregar_precarga("Música/ciudad_broun.ogg");
agregar_precarga("Música/ciudad_ret.ogg");
agregar_precarga("Música/ciudad_ruins.ogg");
agregar_precarga("Música/ciudad_various_colors.ogg");
agregar_precarga("Música/desierto.ogg");
agregar_precarga("Música/cocina.ogg");
agregar_precarga("Música/en_espera_de_medio_de_transporte.ogg");
agregar_precarga("Música/escuela.ogg");
agregar_precarga("Música/estación_de_bote.ogg");
agregar_precarga("Música/gallinero.ogg");
agregar_precarga("Música/isla_watercang.ogg");
agregar_precarga("Música/jardín_del_bosque.ogg");
agregar_precarga("Música/misión_de_batalla.ogg");
agregar_precarga("Música/misión_de_exploración.ogg");
agregar_precarga("Música/misión_en_curso.ogg");
agregar_precarga("Música/misión_en_el_bosque.ogg");
agregar_precarga("Música/misión_en_el_desierto.ogg");
agregar_precarga("Música/montaña.ogg");
agregar_precarga("Música/oasis.ogg");
agregar_precarga("Música/playa.ogg");
agregar_precarga("Música/pradera_oscura.ogg");
agregar_precarga("Música/pradera_tranquila.ogg");
agregar_precarga("Música/rebaño_de_ovejas.ogg");
agregar_precarga("Música/resultado_de_la_misión.ogg");
agregar_precarga("Música/río_water_blue.ogg");
agregar_precarga("Música/sala_de_espera.ogg");
agregar_precarga("Música/terreno.ogg");
agregar_precarga("Música/última_misión.ogg");
agregar_precarga("Música/vía_de_trenes.ogg");
agregar_precarga("Música/victoria.ogg");
agregar_precarga("Música/zona_boscosa.ogg");
iniciado.play_wait();
iniciado.close();
live_history_iniciado=true;
}

//gestión de voz general y específica
void hablar(string texto)
{
mi_voz.speak(texto);
}

void hablar_y_esperar(string texto)
{
mi_voz.speak_wait(texto);
}

void hablar_esperar_e_interrumpir(string texto)
{
mi_voz.speak_interrupt_wait(texto);
}

void stop()
{
mi_voz.stop();
}

void copiar(string fragmento)
{
clipboard_copy_text(fragmento);
}

void hablar_coordenadas()
{
mi_voz.speak("ubicación: "+personaje.posicion_x+", "+personaje.posicion_y+"");
}

void hablar_seccion(string texto)
{
if(!next.active)
{
next.load("Sonidos/clic.ogg");
}
next.play();
copiar(texto);
hablar(texto);
while(!key_pressed(KEY_RETURN));
return ;
}

void main()
{
mi_voz.inicializar();
logo.load("Sonidos/live_history_logo.ogg");
recordatorio.load("Voces/recordatorio_de_lector_de_pantalla.ogg");
recordatorio2.load("Voces/sugerencia_de_lector_de_pantalla.ogg");
error.load("Sonidos/error.ogg");
endstage.load("Sonidos/continúa_el_juego.ogg");
creando_datos.load("Sonidos/imprimiendo.ogg");
momento_desagradable.load("Sonidos/momento_desagradable.ogg");
escribiendo.load("Sonidos/escribir_en_computadora.ogg");
iglesia.load("Música/iglesia.ogg");
if(!configuracion_guardada)
{
configuracion_guardada=live_history_settings.setup("Yóisber González", "Live history", true);
}
cargando.load("Sonidos/cargando_componentes.ogg");
directorio.load("Sonidos/componentes_fluyendo.ogg");
datos();
reservar_memoria(10000);
agregar_precarga("Música/música_de_bienvenida.ogg");
agregar_precarga("Música/música_de_bienvenida2.ogg");
ventana_activa=show_game_window("live history");
if(ventana_activa==true)
{
cargando.stop();
}
logo.play();
while(logo.playing)
{
wait(5);
if(key_pressed(KEY_RETURN))
{
fade(logo, 0, -20, 500, false);
logo.stop();
}
}
logo.close();
recordatorio.play_wait();
recordatorio2.play_wait();
recordatorio.close();
recordatorio2.close();
bienvenida();
comprobar_lector();
menu_principal();
}

void comprobar_lector()
{
if(!screen_reader_is_running(NVDA))
{
if(screen_reader_is_running(JAWS))
{
jaws.load("Voces/está_utilizando_jaws.ogg");
jaws.play_wait();
mi_voz.speak_wait("está utilizando el lector de pantalla jaws. Para una experiencia práctica, le recomendamos que utilice NVDA");
}
}
}

void bienvenida()
{
sound[] Bienvenida(2);
Bienvenida[0].load("Música/música_de_bienvenida.ogg");
Bienvenida[1].load("Música/música_de_bienvenida2.ogg");
while(true)
{
if(!live_history_iniciado)
{
cargar_todos_los_sonidos();
}
Bienvenida[0].play_wait();
Bienvenida[1].play_looped();
if(key_pressed(KEY_RETURN) && live_history_iniciado==true)
{
fade(Bienvenida[1], 0, -100, 1000, false);
Bienvenida[1].stop();
Bienvenida[1].close();
menu_principal();
}
}
}

void probar_altavoces()
{
sound prueba;
prueba.load("Sonidos/clic.ogg");
hablar("utilice las teclas direccionales de izquierda y derecha para probar los altavoces en la posición correspondiente, la tecla direccional de abajo para probar el altavoz central, o la tecla escape o intro para salir de la prueba");
while(!key_pressed(KEY_ESCAPE) or !key_pressed(KEY_RETURN))
{
if(key_pressed(KEY_LEFT))
{
prueba.pan=-100;
prueba.play();
}
else if(key_pressed(KEY_RIGHT))
{
prueba.pan=100;
prueba.play();
}
else if(key_pressed(KEY_DOWN))
{
prueba.pan=0;
prueba.play();
}
else if(key_pressed(KEY_RETURN) or key_pressed(KEY_ESCAPE))
{
opciones();
}
wait(5);
}
}

void menu_principal()
{
dynamic_menu menu;
music.load("Música/menú_principal.ogg");
music.pitch=90;
music.volume=0;
music.play_looped();
mover.load("Sonidos/mover.ogg");
seleccionar.load("Sonidos/seleccionar.ogg");
Volver.load("Sonidos/atrás.ogg");
menu.set_speech_mode(mi_voz.salida);
menu.set_tts_object(mi_voz.voz);
menu.enable_home_and_end=true;
menu.allow_escape=true;
menu.wrap=false;
menu.set_callback(check_menu_events, "");
int nueva_partida=menu.add_item_tts("nuevo juego");
int aprender_sonidos=menu.add_item_tts("aprender los sonidos del juego");
int configuracion=menu.add_item_tts("configuración de voz");
int ajustes=menu.add_item_tts("opciones");
int cerrar=menu.add_item_tts("salir del juego");
int elemento_seleccionado;
do
{
elemento_seleccionado=menu.run_extended("Menú principal. Utilice las teclas direccionales de arriba y abajo para moverse por el menú, luego pulse intro para seleccionar.", true, 1, true);
if(elemento_seleccionado>0)
{
seleccionar.play();
}
if(elemento_seleccionado==nueva_partida)
{
nuevo_juego();
}
if(elemento_seleccionado==aprender_sonidos)
{
fade(music, 0, -30, 500, false);
aprender_los_sonidos_del_juego();
fade(music, -30, 0, 500, false);
}
if(elemento_seleccionado==configuracion)
{
mi_voz.configuracion();
guardar_datos(live_history_settings);
}
if(elemento_seleccionado==ajustes)
{
fade(music, 0, -30, 500, false);
opciones();
fade(music, -30, 0, 500, false);
}
}
while(elemento_seleccionado!=0 and elemento_seleccionado !=cerrar);
{
salir();
}
}

void salir()
{
audio_form form;
form.create_window("live history", false, true);
form.set_output_mode(mi_voz.salida);
form.set_tts_object(mi_voz.voz);
int si=form.create_button("&sí", true, false);
int no=form.create_button("&no", false, true);
form.focus(si);
hablar("¿está seguro de que desea salir del juego?");
while(true)
{
form.monitor();
if(form.is_pressed(si))
{
wait(5);
resetear_precargas();
exit();

}
else if(form.is_pressed(no))
{
menu_principal();
}
}
}

int menu_position;
int check_menu_events(dynamic_menu@ game_menu, string data)
{
if(!game_menu.running)
{
return -1;
}
if(game_menu.get_position()!=menu_position)
{
mover.play_wait();
menu_position=game_menu.get_position();
}
if(key_down(KEY_F8))
{
music_volume_down();
}
else if(key_down(KEY_F9))
{
music_volume_up();
}

return 0;
}

void opciones()
{
dynamic_menu menu;
configurar_menu(menu);
menu.allow_escape=true;
int ejecutar_mini_reproductor=menu.add_item_tts("ejecutar mini reproductor");
int altavoces=menu.add_item_tts("probar los altavoces");
int volumen_de_la_musica=menu.add_item_tts("volumen de la música: "+music_volume+"");
int acerca_de_live_history=menu.add_item_tts("Acerca de Live history");
int volver=menu.add_item_tts("atrás");
int seleccionado;
do
{
seleccionado=menu.run_extended("menú de opciones. Utilice las teclas direccionales de arriba y abajo para moverse sobre las diversas opciones, luego pulse intro para seleccionar. Pulsa escape para regresar", true, 1, true);
if(seleccionado>0 and seleccionado<5)
{
seleccionar.play();
}
if(seleccionado==ejecutar_mini_reproductor)
{
music.pause();
run("mini_reproductor.exe", "", true, false);
music.play_looped();
}
if(seleccionado==altavoces)
{
music.pause();
probar_altavoces();
music.play_looped();
}
if(seleccionado==volumen_de_la_musica)
{
//ajustar_el_volumen_de_la_musica();
}
if(seleccionado==acerca_de_live_history)
{
//acerca_de();
}
}
while(seleccionado!=0 and seleccionado!=volver);
Volver.play();
}

void aprender_los_sonidos_del_juego()
{
dynamic_menu menu;
menu.set_speech_mode(mi_voz.salida);
menu.set_callback(check_menu_events, "");
menu.set_tts_object(mi_voz.voz);
menu.enable_home_and_end=true;
menu.wrap=false;
menu.add_item_tts("altas llamas");
menu.add_item_tts("buzón");
menu.add_item_tts("cama");
menu.add_item_tts("puerta");
menu.add_item_tts("puerta de piedra");
menu.add_item_tts("Salida o conexión entre áreas");
menu.add_item_tts("Estufa");
menu.add_item_tts("estufa_eléctrica");
menu.add_item_tts("atrás");
int selected;
do
{
selected=menu.run_extended("menú de sonidos. Utilice las teclas direccionales de arriba y abajo para moverse por los diversos sonidos, luego pulse intro para escucharlo. Presiona escape cuando hayas finalizado", true, 1, true);
if(selected>0 and selected<9)
{
seleccionar.play();
}
if(selected==1)
{
music.pause;
Altas_llamas.load("Sonidos/altas_llamas.ogg");
Altas_llamas.play_wait();
music.play_looped();
}
else if(selected==2)
{
music.pause();
Buzon.load("Sonidos/buzón.ogg");
Buzon.play_wait();
music.play_looped();
}
else if(selected==3)
{
music.pause();
Cama.load("Sonidos/cama.ogg");
Cama.play_wait();
music.play_looped();
}
else if(selected==4)
{
music.pause();
Puerta.load("Sonidos/puerta.ogg");
Puerta.play_wait();
music.play_looped();
}
else if(selected==5)
{
music.pause();
Puerta_de_piedra.load("Sonidos/puerta_de_piedra.ogg");
Puerta_de_piedra.play_wait();
music.play_looped();
}
else if(selected==6)
{
music.pause();
Salida_o_conexion_entre_areas.load("Sonidos/salida_o_conexión_entre_áreas.ogg");
Salida_o_conexion_entre_areas.play_wait();
music.play_looped();
}
else if(selected==7)
{
music.pause();
Estufa.load("Sonidos/estufa.ogg");
Estufa.play_wait();
music.play_looped();
}
else if(selected==8)
{
music.pause();
Estufa_electrica.load("Sonidos/estufa_eléctrica.ogg");
Estufa_electrica.play_wait();
music.play_looped();
}
}
while(selected!=0 and selected!=9);
{
Volver.play();
}
}

void nuevo_juego()
{
music.load("Música/nuevo_juego.ogg");
music.play_looped();
hablar_seccion("¡hola y bienvenido a live history!");
wait(1000);
fade(music, 0, -10, 2000, false);
hablar_seccion("te adentrarás en un gran mundo, el mundo de colors, en el que havita la palabra de Dios");
hablar_seccion("tu trabajo principal es, conocer la palabra de Dios, y tu objetivo es emprender diversas misiones, tales como las misiones de estudio, construcción, entre muchas otras");
hablar_seccion("Cuando comience la misión, primero se te indicará tu objetivo, para que de este modo tengas en cuenta lo que deberás hacer");
hablar_seccion("¡pero serás enormemente recompensado cuando hayas completado todas tus misiones!");
hablar_seccion("aunque antes que todo, necesito recoger algunos datos, tales como tu nombre");
endstage.play_wait();
music.stop();
recoger_datos();
}

void configurar_menu(dynamic_menu@ game_menu)
{
game_menu.set_speech_mode(mi_voz.salida);
game_menu.set_tts_object(mi_voz.voz);
game_menu.enable_home_and_end=true;
game_menu.wrap=false;
game_menu.allow_escape=false;
game_menu.set_callback(check_menu_events, "");
}

void configurar_formulario(audio_form@ my_form)
{
my_form.set_output_mode(mi_voz.salida);
my_form.set_tts_object(mi_voz.voz);
}

void recoger_datos()
{
audio_form form;
form.create_window("nombre", false, true);
configurar_formulario(form);
int campo_de_nombre=form.create_input_box("introduzca aquí su nombre, el cual utilizará durante todo el juego", "", "", 20, false, false);
int cancelar=form.create_button("cancelar", false, true);
int aceptar=form.create_button("aceptar", true, false);
form.focus(campo_de_nombre);
while(true)
{
form.monitor();
if(form.is_pressed(cancelar))
{
menu_principal();
}
else if(form.is_pressed(aceptar))
{
nombre=form.get_text(campo_de_nombre);
if(nombre=="")
{
error.play();
hablar("lo siento, pero debe especificar un nombre");
}
else
{
preguntar_nombre();
}
}
}
}

void preguntar_nombre()
{
dynamic_menu menu;
configurar_menu(menu);
int si=menu.add_item_tts("si");
int no=menu.add_item_tts("no");
int seleccionado;
do
{
seleccionado=menu.run_extended("¿tu nombre es "+nombre+"?", true, 1, true);
if(seleccionado==seleccionado)
{
seleccionar.play();
}
if(seleccionado==si)
{
hablar_seccion("gracias, "+nombre+"");
hablar_seccion("a partir de este momento, comenzaremos a procesar tus datos");
hablar("escribiendo tus datos, por favor espere");
creando_datos.play_wait();
live_history.set("nombre", 5);
string mis_datos_de_juego=serialize(live_history);
live_history_data.open("mis datos/save_game.bin", "wb");
escribiendo.play_wait();
live_history_data.write(mis_datos_de_juego);
game_interface();
}
else if(seleccionado==no)
{
recoger_datos();
}
}
while(seleccionado!=0);
menu_principal();
}

void comprobar_entrada()
{
if(key_pressed(KEY_Q))
{
hablar_coordenadas();
}
if(key_pressed(KEY_H))
{
hablar("salud: "+personaje.salud+"");
}
if(key_pressed(KEY_F9))
{
music_volume_up();
hablar(music_volume);
}
if(key_pressed(KEY_F8))
{
music_volume_down();
hablar(music_volume);
}
if(key_pressed(KEY_D))
{
hablar("defenza: "+personaje.defenza+"");
}
if(key_pressed(KEY_A))
{
hablar("hambre: "+personaje.hambre+"");
}
if(key_pressed(KEY_S))
{
hablar("Sed: "+personaje.sed+"");
}
if(key_pressed(KEY_ESCAPE))
{
salir();
}
}

void establecer_posicion(jugador@ mi_jugador, int p_x, int p_y)
{
mi_jugador.posicion_x=p_x;
mi_jugador.posicion_y=p_y;
}

Y este otro es el código de un script llamado game.bgt, que es el que contiene la interfaz del juego en si.

//interfaz del juego
int[] lugares(100);
string ciudad;
void game_interface()
{
music.load("Música/tu_casa.ogg");
music.volume=music_volume;
music.play_looped();
hablar_seccion("Desde hace mucho tiempo, había visto cosas realmente desepcionantes, tales como lo son la maldad, y el producto que genera, lo cual no es nada bueno");
hablar_seccion("además, ya ni siquiera los niños preservaban su inocencia, sino que, al igual que todos, estaban corrompidos por causa del mal");
hablar_seccion("y como consecuencia, resulta ahora más difícil lograr un cambio de personalidad");
hablar_seccion("porque ya a ninguno le preocupaba el echo de que su personalidad sea de buen parecer o de mal parecer");
hablar_seccion("sino que, solo les preocupaban otras cosas que, para ser onesto, pueden esperar");
hablar_seccion("a cada uno le preocupaba solo lo suyo propio, pero ninguno había querido ayudar a otros, sino simplemente pensaba en si mismo, en lo que le fuese beneficioso a el, no tomando en cuenta si le beneficiaría a otro, o no");
hablar_seccion("así mismo, no les importaba quien los estubiese viendo o delante de quien estaban fallando");
hablar_seccion("y por si todo esto fuera poco, ¡yo también soy parte de todo esto!");
music.stop();
momento_desagradable.play_wait();
hablar_seccion("entonces, ¿qué debería hacer ahora?");
lluvia.load("Sonidos/lluvia.ogg");
iglesia.play_looped();
comienza_el_discurso.load("Sonidos/comienza_un_discurso.ogg");
comienza_el_discurso.play_wait();
lluvia.play_looped();
hablar_seccion("¡oh, no! ¡está lloviendo a cántaros aquí!");
hablar_seccion("Yóisber González: Hola, mi ¡"+nombre+"! ¡estoy tan emocionado de verte!");
hablar_seccion(""+nombre+": ¡yo también estoy tan feliz de que estés con migo!");
hablar_seccion("Yóisber González: me gustaría hablar con tigo");
hablar_seccion(""+nombre+": ¿sobre qué tema?");
hablar_seccion("Yóisber González: bueno, la verdad es qué, es muy cierto lo que mencionas a cerca de la situación en la que nos encontramos");
hablar_seccion("Específicamente el echo de que caímos en corrupción");
hablar_seccion("sin embargo, he recibido un mandato de parte de Dios, el cual me dijo que venga a visitarte");
hablar_seccion("y es precisamente para discutir con más detalle sobre este grave asunto");
hablar_seccion("Eso último que dijo Yóisber González, hizo que "+nombre+" se sintiera culpable, no permitiendo que diga ni una sola palabra, por unos momentos");
wait(3000);
hablar_seccion("Yóisber González: "+nombre+", ¿te encuentras bien?");
hablar_seccion(""+nombre+": la verdad es qué, yo soy parte de este grave asunto");
hablar_seccion("pero tan pronto como "+nombre+" dijo eso, se sintió muy triste");
hablar_seccion("Yóisber González: oh, lo se.");
hablar_seccion("Pero, no olvides que tu eres mi amigo preferido, y yo soy hijo de Dios.");
hablar_seccion("y para el propósito para el cual has sido llamado, es para cumplir un viaje lleno de misiones, donde tu objetivo será conocer la palabra de Dios, así como todos sus caminos, mandamientos, entre otros.");
hablar_seccion("aunque, realmente te siento muy triste");
hablar_seccion("y me gustaría consolarte.");
hablar_seccion("¿vendrías con migo?");
hablar_seccion(""+nombre+": si, voy con tigo.");
hablar_seccion("Yóisber González: ¡perfecto!");
hablar_seccion("A pesar de la fuerte lluvia, ambos pudieron tener una combersación sobre estos temas, en el lugar de la lluvia.");
hablar_seccion("Yóisber González: ve, entra en tu casa para resguardarte de la lluvia, y yo iré también con tigo.");
endstage.play_wait();
lluvia.stop();
fin_del_discurso.load("Sonidos/fin_del_discurso.ogg");
fin_del_discurso.play_wait();
iglesia.stop();
tu_casa();
}
void tu_casa()
{
music_change("Música/tu_casa.ogg");
hablar("tu_casa");
int puerta=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 5, 0, true);
int cama=pool.play_2d("Sonidos/cama.ogg", personaje.posicion_x, personaje.posicion_y, 13, 10, true);
music.play_looped();
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_down(KEY_LEFT) and personaje.posicion_x >0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje.posicion_x<=20)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/Paso.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje.posicion_y<=20)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_pressed(KEY_RETURN))
{
if(personaje.posicion_x==5 and personaje.posicion_y==0)
{
reproducir_esperando("Sonidos/cerrar_puerta.ogg", 0);
sound_purge();
establecer_posicion(personaje, 5, 41);
ciudad_blue();
}
if(personaje.posicion_x==13 and personaje.posicion_y==10)
{
sound_purge();
cama1();
}
}
}
lugares[0]=lugares[0]+1;
}
void ciudad_blue()
{
hablar("ciudad blue");
music_change("Música/ciudad_blue.ogg");
sound ambiente;
ambiente.load("Sonidos/ambiente.ogg");
ambiente.volume=-25;
music.play_looped();
ambiente.play_looped();
int puerta=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 5, 41, true);
int puerta2=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 41, 25, true);
int rio=pool.play_extended_2d("Sonidos/río.ogg", personaje.posicion_x, personaje.posicion_y, 15, 30, 5, 5, 5, 5, true, 0, 0, 0, 100);
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_down(KEY_LEFT) and personaje.posicion_x>0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje.posicion_x<=40)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje.posicion_y<=40)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
wait(200);
}
if(key_pressed(KEY_RETURN))
{
if(personaje.posicion_x==5 and personaje.posicion_y==41)
{
reproducir_esperando("Sonidos/abrir_puerta.ogg", 0);
sound_purge();
lugares[2]=lugares[2]+1;
ambiente.stop();
establecer_posicion(personaje, 5, 0);
tu_casa();
}
if(personaje.posicion_x>=15 and personaje.posicion_x<=20 && personaje.posicion_y>=30 and personaje.posicion_y<=35)
{
sound_purge();
lugares[2]=lugares[2]+1;
ambiente.stop();
rio_water_blue();
}
if(personaje.posicion_x==41 and personaje.posicion_y==25)
{
sound_purge();
estacion_de_botes_de_blue();
lugares[2]=lugares[2]+1;
}
}
}
}
void cama1()
{
hablar("cama");
music_change("Música/avitación.ogg");
if(lugares[1]==0)
{
music_change("Música/en_espera_de_medio_de_transporte.ogg");
music.play_looped();
comienza_el_discurso.play_wait();
hablar_seccion("Yóisber González: Hola de nuevo");
hablar_seccion(""+nombre+": ¡o, hola amigo!");
hablar_seccion("Yóisber González: Realmente me gustaría decirte algunas cosas con respecto al tema que hemos abordado brebemente");
hablar_seccion("Y es sobre lo siguiente");
hablar_seccion("Entiendo claramente que has conocido estos echos sobre lo que ocurre con todos, y las cosas que no agradan a Dios, que son las que ya has escuchado mencionar");
hablar_seccion("Hay mucha maldad en todo el mundo, incluso este país, Colors, aunque es enormemente admirado por el echo de que hay un porcentaje muy alto de personas buenas, de aproximadamente un 70%");
hablar_seccion("Aún así, siguen existiendo personas malas, como podrás imaginar, un 30%");
hablar_seccion("Sin embargo, realmente considero mejor Colors que Billplaces, que como indica el nombre de este último, está muy plagado de personas malas, y en ese país existe un bajo porcentaje del total de la población de personas bondadosas");
hablar_seccion("Por ello, el ejecutivo nacional de colors ha emanado una orden, en la que dice lo siguiente, recomendable copiarla en algún documento o escribirla en una hoja:");
reproducir_esperando("Sonidos/abrir_edición.ogg", 0);
hablar_seccion("Estimado Colors, gracias a todos por su atención, comprensión y afecto con los ciudadanos, y con mi persona, Good Max.");
hablar_seccion("Hemos observado, mis seguidores y yo, una serie de actos altamente impropios de Colors, por parte de varios ciudadanos de las siguientes ciudades:");
hablar_seccion("Hemos encontrado sospechosos a muchos ciudadanos de black, ruins y así mismo ciudadanos perdidos en el desierto que conduce a Various colors.");
hablar_seccion("Además, hemos observado que algunos de estos, especialmente los de Black y algunos de Ruins han traído a varios ciudadanos de billplaces.");
hablar_seccion("¿Por qué tenemos por mal vistos a los ciudadanos de Billplaces? porque las leyes de billplaces se basan en lo que agrada al hombre, mas no prestan atención a lo que es agradable a los ojos y ohidos de Dios.");
hablar_seccion("Y el gobierno de billplaces, Black Col, no ha pensado ni un segundo en la situación moral de su país.");
hablar_seccion("Por tanto, he tomado la decisión de decretar de manera oficial, que todo ciudadano que provenga de Black, Ruins o, en última instancia de Billplaces, deberá pasar por el centro de formación moral nacional de Colors (CNMC), antes de tener acceso completo a cualquier área de las tierras de colors.");
hablar_seccion("En el, se le serán enseñado a dichos ciudadanos de forma amable los principios, valores y los mandamientos y estatutos de la ley de Dios, que es la ley en las que se basan las leyes de Colors.");
hablar_seccion("Solo se permitirá el uso de vara, látigo u otro objeto para golpear, si el ciudadano o ciudadanos en cuestión toman una actitud irrespetuosa contra el educador o compañero de formación.");
hablar_seccion("Este centro, del que hay una cantidad creciente de sedes a lo largo del país, fue creado con la única finalidad de formar a aquellos ciudadanos que no hayan podido desarrollar una buena personalidad en ellos, por lo que sólo utilizando materiales agresores contra los mismos sin enseñarles nada al encontrar alguna anomalía en dichos ciudadanos, puede resultar o en una posible indiferencia, o no en la diferencia que se espera notar en los ciudadanos de Colors.");
hablar_seccion("Esta ley está aprobada y debe cumplirse, por lo que yo pasaré por todo el país de Colors, comenzando por Black y Ruins para verificar el cumplimiento de las leyes que se les impone a cada uno.");
hablar_seccion("Si algún ciudadano desea que yo visite su ciudad, por favor envíe un mensaje a la cuenta siguiente:");
hablar_seccion("@goodmax");
hablar_seccion("Así, yo podré visitar la ciudad de la que dicho ciudadano me ha contactado, para de este modo ver su ciudad.");
hablar_seccion("Para ello el usuario en el mensaje debe indicar que quiere que sea visitada su ciudad de parte de nosotros.");
hablar_seccion("Nuevamente, gracias a todos por su atención.");
reproducir_esperando("Sonidos/cerrar_edición.ogg", 0);
hablar_seccion("Yóisber González: como ya mencionó el señor Good, recorrerá todo Colors para asegurar el cumplimiento de las leyes.");
hablar_seccion("Mientras que "+nombre+" escuchaba la información, se sintió mucho más triste.");
hablar_seccion("Yóisber González, viendo esta situación, se levantó por unos momentos de la cama en la que estaba "+nombre+", y abrió su mochila, que estaba guardada en un estante a 30 centímetros de la cama.");
hablar_seccion("A continuación, introdujo su mano derecha en la mochila, de la cual tomó una toalla nueva, y la colocó encima de la cama.");
hablar_seccion("Cerró la mochila, y se sentó nuevamente en la cama, entre la toalla y "+nombre+".");
hablar_seccion("Luego, con mucho cuidado puso su mano derecha sobre la cabeza de "+nombre+", y deslizaba continuamente y de la misma forma su mano sobre ella.");
hablar_seccion("Y dijo:");
hablar_seccion("Yóisber González: No te preocupes amigo, recuerda que siempre estaremos juntos, y yo nunca te dejaré.");
hablar_seccion("Además, ambos seguimos a Dios, por ello quise hablarte de Good Max, que también es muy fiel seguidor de Dios.");
hablar_seccion(""+nombre+": ¿Good max? ¡Me gustaría verlo!");
hablar_seccion("Yóisber González tomó la toalla de sobre la cama, y con ella secó con mucho cuidado la cara de "+nombre+".");
hablar_seccion("Luego con ambas manos abrazó a "+nombre+", y lo izo tender sobre el, de tal forma que Yóisber González quedó encima de la cama acostado, y "+nombre+" quedó acostado sobre el.");
hablar_seccion("Y dijo:");
hablar_seccion("Yóisber González: Tranquilo, yo sé que tu amas la bondad, y has reconocido que no es correcto lo que muchos han estado haciendo.");
hablar_seccion("Eres mi mejor amigo, y somos una amistad creada de parte de Dios.");
hablar_seccion("De todo corazón te lo pido, ya no te sientas triste.");
hablar_seccion("Realmente te aprecio mucho, "+nombre+".");
hablar_seccion(""+nombre+": oh, yo también te aprecio mucho, y de todo corazón.");
hablar_seccion("ambos, "+nombre+" y Yóisber González, se abrazaron fuertemente.");
hablar_seccion("Yóisber González: ¿Entonces te gustaría encontrarte con Good Max?");
hablar_seccion(""+nombre+": Si, me gustaría un encuentro con Good max, para conocerlo y hablar con el.");
hablar_seccion("¿Quizás deba comunicarme con el?");
hablar_seccion("Yóisber González: No te preocupes, yo hablaré con el.");
hablar_seccion("Creo que él está en ciudad black.");
hablar_seccion("Pero, no te dirijas todavía a ciudad black, espéralo en ciudad blue, cerca del río Water Blue.");
hablar_seccion(""+nombre+": ¿Es el río que está cerca de mi casa, al lado derecho de la puerta?");
hablar_seccion("Yóisber González: si, es ese río exactamente.");
hablar_seccion(""+nombre+": ¡Perfecto!");
hablar_seccion("Yo estaré esperando en la ciudad.");
hablar_seccion("Yóisber González colocó con cuidado a "+nombre+" a su lado derecho, y se levantó con cuidado de la cama.");
hablar_seccion("A continuación, tomó la toalla de encima de la cama, y la guardó en el mismo lugar del que la había extraído, su mochila.");
hablar_seccion("Luego caminó lentamente hacia la puerta de salida, y salió.");
paso.load("Sonidos/paso.ogg");
paso.pan=0;
paso.play_wait();
wait(500);
paso.pan=25;
paso.play_wait();
wait(500);
paso.pan=50;
paso.play_wait();
wait(500);
paso.pan=75;
paso.play_wait();
reproducir_esperando("Sonidos/cerrar_puerta.ogg", 0);
hablar_seccion("De acuerdo.");
hablar_seccion("¡Saldré ahora mismo a la ciudad!");
endstage.play_wait();
fin_del_discurso.play_wait();
music_change("Música/avitación.ogg");
music.play_looped();
lugares[1]=lugares[1]+1;
}
music.play_looped();
establecer_posicion(personaje, 5, 5);
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
if(key_pressed(KEY_Q))
{
hablar_coordenadas();
}
if(key_pressed(KEY_H))
{
hablar("salud: "+personaje.salud+"");
}
if(key_pressed(KEY_F9))
{
music_volume_up();
hablar(music_volume);
}
if(key_pressed(KEY_F8))
{
music_volume_down();
hablar(music_volume);
}
if(key_pressed(KEY_D))
{
hablar("defenza: "+personaje.defenza+"");
}
if(key_pressed(KEY_A))
{
hablar("hambre: "+personaje.hambre+"");
}
if(key_pressed(KEY_S))
{
hablar("Sed: "+personaje.sed+"");
}
if(key_pressed(KEY_LEFT) and personaje.posicion_x>0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/sacudir_bolso.ogg");
}
if(key_pressed(KEY_RIGHT) and personaje.posicion_x<=10)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/sacudir_bolso.ogg");
}
if(key_pressed(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/sacudir_bolso.ogg");
}
if(key_pressed(KEY_UP) and personaje.posicion_y<=10)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/sacudir_bolso.ogg");
}
if(key_pressed(KEY_LEFT) and personaje.posicion_x<=0)
{
error.load("Sonidos/error.ogg");
music.stop();
error.play_wait();
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
personaje.salud=personaje.salud-10;
hablar_seccion("¡Te caíste de la cama! pierdes 10 puntos de salud");
tu_casa();
}
if(key_pressed(KEY_RIGHT) and personaje.posicion_x>=10)
{
error.load("Sonidos/error.ogg");
music.stop();
error.play_wait();
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
personaje.salud=personaje.salud-10;
hablar_seccion("¡Te caíste de la cama! pierdes 10 puntos de salud");
tu_casa();
}
if(key_pressed(KEY_DOWN) and personaje.posicion_y<=0)
{
error.load("Sonidos/error.ogg");
music.stop();
error.play_wait();
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
personaje.salud=personaje.salud-10;
hablar_seccion("¡Te caíste de la cama! pierdes 10 puntos de salud");
tu_casa();
}
if(key_pressed(KEY_UP) and personaje.posicion_y>=10)
{
error.load("Sonidos/error.ogg");
music.stop();
error.play_wait();
sound_play_centered("Sonidos/paso_sobre_arena.ogg");
personaje.salud=personaje.salud-10;
hablar_seccion("¡Te caíste de la cama! pierdes 10 puntos de salud");
tu_casa();
}
if(key_pressed(KEY_RETURN))
{
hablar("Tus puntos de salud fueron restaurados.");
personaje.salud=100;
}
if(key_pressed(KEY_ESCAPE))
{
tu_casa();
}
}
lugares[1]=lugares[1]+1;
}
void rio_water_blue()
{
hablar("Río water blue");
sound ambiente;
ambiente.load("Sonidos/río.ogg");
bote.posicion_x=random(15, 25);
bote.posicion_y=random(0, 50);
ambiente.volume=-20;
music_change("Música/río_water_blue.ogg");
music.play_looped();
ambiente.play_looped();
int Bote=pool.play_2d("Sonidos/bote.ogg", personaje.posicion_x, personaje.posicion_y, bote.posicion_x, bote.posicion_y, true);
int salida_del_rio=pool.play_2d("Sonidos/salida_o_conexión_entre_áreas.ogg", personaje.posicion_x, personaje.posicion_y, 25, 0, true);
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_down(KEY_LEFT) and personaje.posicion_x>0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/paso_sobre_el_agua.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje.posicion_x<=50)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/paso_sobre_el_agua.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/paso_sobre_el_agua.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje.posicion_y<=1000)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso_sobre_el_agua.ogg");
wait(200);
}
if(key_pressed(KEY_RETURN) and personaje.posicion_x==25 and personaje.posicion_y==0)
{
sound_purge();
ambiente.stop();
establecer_posicion(personaje, 15, 30);
ciudad_blue();
}
if(bote.posicion_x==personaje.posicion_x and bote.posicion_y==personaje.posicion_y)
{
sound_purge();
ambiente.stop();
un_bote_a_black();
lugares[3]=lugares[3]+1;
}
}
}
void un_bote_a_black()
{
reproducir_esperando("Sonidos/abordar_bote_o_medio_acuático.ogg", 0);
bool modo_conduccion=false;
hablar("bote");
music_change("Música/bote.wav");
music.play_looped();
establecer_posicion(personaje_montado, 15, 0);
establecer_posicion(personaje, 25, 1);
int puerta=pool.play_2d("Sonidos/salida_o_conexión_entre_áreas.ogg", personaje_montado.posicion_x, personaje_montado.posicion_y, 15, 0, true);
while(true)
{
pool.update_listener_2d(personaje_montado.posicion_x, personaje_montado.posicion_y);
//pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_pressed(KEY_J))
{
if(modo_conduccion==false)
{
hablar("Modo conducción activado.");
modo_conduccion=true;
}
else
{
hablar("Modo conducción desactivado.");
modo_conduccion=false;
}
}
if(modo_conduccion==true)
{
mover_bote__a_black_y();
}
if(key_down(KEY_LEFT) and personaje_montado.posicion_x>0)
{
personaje_montado.posicion_x--;
sound_play_centered("Sonidos/paso7.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje_montado.posicion_x<=30)
{
personaje_montado.posicion_x++;
sound_play_centered("Sonidos/paso7.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje_montado.posicion_y>0)
{
personaje_montado.posicion_y--;
sound_play_centered("Sonidos/paso7.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje_montado.posicion_y<=60)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso7.ogg");
wait(200);
}
if(key_pressed(KEY_W))
{
hablar("Ubicación del personaje en el bote: "+personaje_montado.posicion_x+", "+personaje_montado.posicion_y+"");
}
if(key_pressed(KEY_RETURN) and personaje_montado.posicion_x==15 and personaje_montado.posicion_y==0)
{
reproducir_esperando("Sonidos/abordar_bote_o_medio_acuático.ogg", 0);
if(personaje.posicion_y==0)
{
sound_purge();
ciudad_blue();
}
else
{
sound_purge();
rio_water_blue();
}
}
}
lugares[4]=lugares[4]+1;
}
void mover_bote__a_black_y()
{
while(personaje.posicion_y>0)
{
personaje.posicion_y--;
sound bote_en_movimiento;
bote_en_movimiento.load("Sonidos/bote_en_movimiento.ogg");
bote_en_movimiento.play_looped();
if(personaje.posicion_y==0)
{
sound_purge();
reproducir_esperando("Sonidos/abordar_bote_o_medio_acuático.ogg", 0);
bote_en_movimiento.stop();
estacion_de_botes_de_blue();
}
}
while(personaje.posicion_y<=1000)
{
personaje.posicion_y++;
sound bote_en_movimiento;
bote_en_movimiento.load("Sonidos/bote_en_movimiento.ogg");
bote_en_movimiento.play_looped();
if(personaje.posicion_y==1000)
{
ciudad_black();
}
}
}
void estacion_de_botes_de_blue()
{
hablar("estación_de_botes_de_blue.");
bool solicitud_procesada=false;
music_change("Música/estación_de_bote.ogg");
music.play_looped();
int puerta_a_ciudad_blue=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 0, 5, true);
int puerta_a_bote=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 25, 51, true);
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_down(KEY_LEFT) and personaje.posicion_x>0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje.posicion_x<=50)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje.posicion_y<=50)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso.ogg");
wait(200);
}
if(key_pressed(KEY_F2))
{
ciudad=input_box("Estación de botes de blue.", "Hola, bienvenido a nuestra estación de botes. ¿A dónde te gustaría ir?");
reproducir_esperando("Sonidos/escribir_en_computadora.ogg", 0);
if(ciudad=="black")
{
alert("Estación de botes de blue.", "Estimado usuario. Hemos recibido su solicitud, y está siendo procesada. Aguarde un momento, por favor.");
wait(5000);
hablar("Su solicitud ha sido procesada satisfactoriamente. Por favor dirigirse a la puerta que se encuentra en la parte frontal de nuestra sala.");
solicitud_procesada=true;
}
}
if(key_pressed(KEY_RETURN))
{
if(personaje.posicion_x==0 and personaje.posicion_y==5)
{
reproducir_esperando("Sonidos/cerrar_puerta3.ogg", 0);
sound_purge();
establecer_posicion(personaje, 41, 25);
ciudad_blue();
}
if(personaje.posicion_x==25 and personaje.posicion_y==51 && solicitud_procesada==true)
{
reproducir_esperando("Sonidos/abrir_puerta2.ogg", 0);
sound_purge();
un_bote_a_black();
lugares[4]=lugares[4]+1;
}
}
}
}
void ciudad_black()
{
hablar("Ciudad Black.");
music_change("Música/ciudad_black.ogg");
music.play_looped();
int puerta_a_estacion_de_bote=pool.play_2d("Sonidos/puerta.ogg", personaje.posicion_x, personaje.posicion_y, 25, 0, true);
while(true)
{
pool.update_listener_2d(personaje.posicion_x, personaje.posicion_y);
comprobar_entrada();
if(key_down(KEY_LEFT) and personaje.posicion_x>0)
{
personaje.posicion_x--;
sound_play_centered("Sonidos/paso_sobre_grama_seca.ogg");
wait(200);
}
if(key_down(KEY_RIGHT) and personaje.posicion_x<=50)
{
personaje.posicion_x++;
sound_play_centered("Sonidos/paso_sobre_grama_seca.ogg");
wait(200);
}
if(key_down(KEY_DOWN) and personaje.posicion_y>0)
{
personaje.posicion_y--;
sound_play_centered("Sonidos/paso_sobre_grama_seca.ogg");
wait(200);
}
if(key_down(KEY_UP) and personaje.posicion_y<=50)
{
personaje.posicion_y++;
sound_play_centered("Sonidos/paso_sobre_grama_seca.ogg");
wait(200);
}
}
}

Aquí entonces les he dejado el código, y más adelante entonces publico una versión funcional del mismo, ya que es algo pesado.

~msgScore~: +0

94. Rayo,

no sería mejor pasar todo el código en un zip? o aún mejor, en GitHub, si tu idea es que sea Open Source

~msgScore~: +0

95. maria_123,

revivo hilo

~msgScore~: +0

96. liu_kang ,

joder, para qué mierda rebiben hilos inecesariamente! me cansa esa gente....

~msgScore~: +0

97. luzbel,

y no crees que sería mejor que ignores el hilo xd? we, pregunta jkalsfd.

~msgScore~: +0

98. maria_123,

me encanta revivir hilos para que anden asiendo bardo esos si que son ignesesarios

~msgScore~: +0

99. gianella.delgado,

se que no es el hilo quizá más oportuno, pero es el más cercano a lo que quiero preguntar. para los que saben programar en Python, saben que ocurre cuando intentas pasar el .py a .exe, con pyinstaller?
miren el problema que tengo es el siguiente:
pongo en la consola:
cd C:\Users\GIANE\getlink para buscar la ruta. luego:
pyinstaller principal.py --onefile --noconsole
para convertir en exe.
sale el primer herror:
89 INFO: PyInstaller: 5.1
89 INFO: Python: 3.8.7
89 INFO: Platform: Windows-10-10.0.19041-SP0
89 INFO: wrote C:\Users\GIANE\getlink\principal.spec
100 INFO: UPX is not available.
100 INFO: Extending PYTHONPATH with paths

y este es el herror que me da cuando lo ejecuto:
C:\Users\GIANE\getlink\dist\principal.exe ventana
terminal en blanco
Traceback (most recent call last):
File "getlink\principal.py", line 3, in <module>
ModuleNotFoundError: No module named 'modulos'
[7228] Failed to execute script 'principal' due to unhandled exception!

entonces no se si yo estoy haciendo algo mal, o algo falta, pero quisiera poder resolverlo, porque no puedo convertir mis .py en exes, y la verdad, es que cuando formateo aveces ya no quiero tener python, pero igual tengo que instalarlo por obligación para que funcione mis programas que solo están en .py
creo que el problema que tengo es los módulos, porque me da la inpreción que dijeran que no están disponibles o no existen o no se encuentran en la ruta. si alguien puede orientarme sería muy valioso.

~msgScore~: +0

100. pianino.64,

amigo comuníquese conmigo, por si necesita sonidos para su juego, en esto si le puedo ayudar

~msgScore~: +0

101. Qhay,

No soy nadie para decir como programar, pero cielos, creo que estás haciendo los mapas a la manera un poco burda, es decir, sin sistema. Creo, porque no vi todos los 50000 caracteres de código. No digo que no esté bien, pero tal vez eso se vuelva algo loco si sigue creciendo.
Para la chica del problema de Python, prueba quitando eso de noconsole. Creo que a mí me funcionó así en su momento. Eso básicamente pasa si no estás usando algo que tenga interfaz, por ejemplo si haces todo tirándolo por consola, sin usar algo como Pygame o así. No estoy seguro, prueba. De igual ya dirás si estás usando algo de interfaz, como PyGame.

~msgScore~: +0

102. gianella.delgado,

no, esto es ful interfás gráfica, nada se hace vía consola. pero también prové quitándole noconsole e igual no funcionó.

~msgScore~: +0

103. Aedion,

Concordo con @Qay.
Creo que sería mejor hacer plataformas, puertas, etc. para que no tengas que crear una función para cada nuevo mapa que tengas.

~msgScore~: +0

104. Qhay,

Vaya.
Pues no sé, yo es que también tuve problemas con ese sistema de compilación. Podrías usar py2exe, a mí me funcionó.

~msgScore~: +0

105. mi-papi-chulo,

hola chicos. postéo. yo digo dejen de criticár, si no lesgusta lo que áse el chico no postéen es lo que recomiéndo. bí que critican

~msgScore~: +0

106. little_fox,

no son críticas. En el mejor de los casos, son hechos.

~msgScore~: +0

107. Dherhion,

Ese código da muchísima grima.
Es difícil de mantener, es difícil de leer y se nota muchísimo que se ha copiado y pegado de mil sitios.
No me meto en el tema de gestión de mapas, porque es un horror.

~msgScore~: +0

108. Def-Leppard,

es que de verdad, todo lo que digan que vaya en contra de lo que pensáis, lo llamais crítica? no coments

~msgScore~: +0

109. javic87,

haber si os dais cuenta de una vez de que no todo son críticas, como dice def, y que el discurso este de si no te gusta, no comentes tampoco es la solución

~msgScore~: +0

110. Qhay,

Leyendo el mensaje de Derion, yo vi algunas partes donde él comentaba a su forma... y luego otros comentarios en inglés, que curiosamente me hicieron pensar en la ayuda de BGT. Su forma de explicar me lo pareció, añadiendo, claramente, que está en inglés. Creía que era el único que lo había notado. De todos modos, no estoy muy seguro si es de la ayuda, pero me suena mucho, tuve mis momentos en los que miraba bastante esa ayuda.

~msgScore~: +0

111. Def-Leppard,

de echo, la crítica es la única manera de cambiar y construir algo mejor. claro, si yo llego y te digo: tu juego es una puta mierda. pos eso es crítica, además destructiva.
si te digo: pues mira, en un juego normal esto sería así, así, y así. tu puedes hacer lo que quieras,pero esa crítica esal menos, constructiva. y lo digo por toda esa gente que se ofende cuando le tocan sus juegos favoritos.
por cierto, en el mundo real todo el mundo critica, ha criticado, y criticará. con más o menos bondad, pero lo harán. hay que aprender a afrontar la crítica, aunque sea devastadora

~msgScore~: +0

112. Alexander-Mortem,

estoy con def, asta los maestros, o nuestros propios pades nos critican, pero aí está el punto, si arán un comentario para ayudar, aserle ver sus errores a la persona, y todos tenemos porque nadie es perfecto, personal mente no me molesta

~msgScore~: +0

113. balbino,

Hola amigos.

Gracias a @qay y al que concuerda con el. Yo hice los mapas así porque no hallaba una forma que sea más efectiva.

Pero, qué forma alternativa me recomiendan para. Acer los mapas?

~msgScore~: +0

114. gianella.delgado,

cay disculpa, sabes cual es la sintacsis para instalar con Python 2. e visto información en internet pero es confusa e incompleta. igual hay que instalar primero esa librería?

~msgScore~: +0

115. Franco-Escamilla ,

Puedes hacer un sistema de clases y sub clases.
Esto sería así, más o menos:

  • El juego se inicia.
  • En main se hace un llamado a una función, digamos init_maps.
  • Init_maps crea un objeto de tipo mapa por cada archivo (es recomendable así desde mi perspectiva) ubicado en una carpeta/archivo dat y luego lo añade a una matriz general del mismo tipo.
  • El constructor de cada objeto lee su contenido, divide y carga los datos necesarios. Plataformas, escaleras, puertas, zonas, etc etc (todas estas perteneciendo a un sub objeto del objeto principal del mapa).
  • Creas funciones para ubicar el piso que hay debajo de ti en base a aquellos datos usando índices en la matriz del objeto, por ejemplo. lo mismo para localizar/abrir puertas y así.
  • Un ejemplo práctico sería:
    //archivos de inclusión, variables y otras chingaderas.
    void main(){
    //mucho código de inicialización.
    init_maps();
    //más código.
    }
    void init_maps(){
    string[] files=find_files("maps/*.map");
    for(int x=0; x<files.length(); x++){
    map m(files[x]);
    maps.insert_last(m);
    }
    }
    map@[] maps;
    class map{
    string name;
    platform@[] platforms;
    map(string n){
    this.name=string_replace(n, ".mmap", "", true);
    init_data(n);
    }
    void init_data(string n){
    file f;
    f.open("maps/"+n, "r");
    string[] lines=string_split(f.read(), "\r\n", false);
    f.close();
    for(int x=0; x<lines.length(); x++){
    string[] data=string_split(lines[x], "|", false);
    if(data[0]=="p"&&data.length()>5){
    platform p(string_to_number(parsed[1]), string_to_number(parsed[2]), string_to_number(parsed[3]), string_to_number(parsed[4]), parsed[5]);
    platforms.insert_last(p);
    }
    }
    }
    }
    class platform{
    int minx, maxx, miny, maxy;
    string tile;
    platform(int min_x, int max_x, int min_y, int max_y, string tile_sound){
    this.minx=min_x;
    this.maxx=max_x;
    this.miny=min_y;
    this.maxy=max_y;
    this.tile=tile_sound;
    }
    }
    Y así sucesivamente (cabe aclarar que es algo super básico que se me ocurrió en 2 minutos).
    Si hay algo mal en mi... ¿Teoría? de una forma más práctica para hacer mapas, que me corrijan los que saben más.
    Salu2.

~msgScore~: +0

Zuletzt geändert von Franco-Escamilla , Jun 28 2022 03:28:14

116. dhegwork-adakly,

Cavo, creo que te faltó una llave xd. De todos modos voy a rebisar denuevo.

~msgScore~: +0

117. josesolo,

para deworc adacli ¿eso no quiere decir dubroc cajali una cosa que desía unlimited? ops era para otro lugar pero bueno. ya que critican, prefiero hablar de otra cosa antes que criticar y que ste prollecto se baya a pique. espero que el juego siga. y que alguna bes lo juguemos. yo no estoy acostumbrado a critica, y menos en estos prollectos

~msgScore~: +0

118. artur_123,

Apropósito de mapas. Qué les parecería usando programación orientada a objetos, crear los objetos lugares, con las salidas como atributos o lista de atributos.

~msgScore~: +0

119. dhegwork-adakly,

no estaba criticando xd, solo le avisé porque encontré ese detaye. La verdad es un código geneal.

~msgScore~: +0

120. Qhay,

Hola.
Para la chica que preguntó más arriba.
Si te referías a Py2exe, puedes hacerlo de la manera siguiente:
Primero que todo, instalar la librería con "pip", "pip install py2exe".
Una vez hayas hecho esto, tienes que crear un archivo en el mismo directorio de tu proyecto un archivo llamado "setup.py", en el cuál pondrás lo siguiente:
from distutils.core import setup
import py2exe
setup(console=['Nombre_del_archivo.py'])#Aquí también puedes agregar tus librerías, esto solo es un archivo de ejemplo.
Como último paso has de ir al CMD y con el comando "cd" ir hasta la carpeta de tu proyecto donde está tu archivo .py y el setup.py y poner:
python setup.py py2exe
Y en teoría, debería de funcionarte. Ya me comentarás, si no puedes me dices, compilar a .exe en Python llega a ser lioso.

~msgScore~: +0

124 Nachrichten, 5 Seiten:  1 2 34 5 ↖ Zurück zur Themenliste

Auf das Thema antworten

Sie müssen angemeldet sein, um posten zu können

Passwort vergessen? Benutzerkonto erstellen