// Constante globale: const int maxlung=50; const int minlung=20; const int maxlat=30; const int minlat=10; const string[] cardinale={"", "Nord", "Nord-Est", "Est", "Sud-Est", "Sud", "Sud-Vest", "Vest", "Nord-Vest"}; // Variabile globale: int lungime=0, latime=0; int x=0, y=0; int directie=1; int p=0, v=0; // pentru pan si volume. int[][] sala; int volum_fundal=-30; // Obiecte: sound pas, perete, deviere, fundal; void main() { show_game_window("Explorare spatiu"); install_keyhook(); // Functia spune este definita de noi: spune("Bine ai venit! Explorare placuta!"); // Se incarca intr-o functie toate sunetele in memorie: incarcare_sunete(); // Redarea fundalului cu fade-in: fundal.volume=-60; fundal.play_looped(); for(int i=fundal.volume; i8) directie=1; } spune_directie(); } void deplasare() { if(directie==1) { y++; if(y>=latime) { y=latime-1; redare_perete(); } else { redare_pas(); } } else if(directie==5) { y--; if(y<0) { y=0; redare_perete(); } else { redare_pas(); } } else if(directie==3) { x++; if(x>=lungime) { x=lungime-1; redare_perete(); } else { redare_pas(); } } else if(directie==7) { x--; if(x<0) { x=0; redare_perete(); } else { redare_pas(); } } // Nord-Est: else if(directie==2) { y++; x++; if(y>=latime) { y=latime-1; redare_deviere(); directie=3; spune_directie(); } else if(x>=lungime) { x=lungime-1; redare_deviere(); directie=1; spune_directie(); } else { redare_pas(); } } // sfarsit Nord-Est. // Deplasare Sud_est: else if(directie==4) { y--; x++; if(y<0) { y=0; redare_deviere(); directie=3; spune_directie(); } else if(x>=lungime) { x=lungime-1; redare_deviere(); directie=5; spune_directie(); } else { redare_pas(); } } // sfarsit Sud-Est. // Sud-Vest: else if(directie==6) { y--; x--; if(y<0) { y=0; redare_deviere(); directie=7; spune_directie(); } else if(x<0) { x=0; redare_deviere(); directie=5; spune_directie(); } else { redare_pas(); } } // sfarsit Sud_Vest. // Nord-Vest: else if(directie==8) { y++; x--; if(y>=latime) { y=latime-1; redare_deviere(); directie=7; spune_directie(); } else if(x<0) { x=0; redare_deviere(); directie=1; spune_directie(); } else { redare_pas(); } } // Nord_Vest. } void spune_directie() { spune(cardinale[directie], true); } void spune_coordonate() { int x_real=x+1; int y_real=y+1; spune("x "+x_real+", y "+y_real+".", true); } void calculare_pv() { // Calculare volume pentru axa y: v=y*-1; // Calculare pan pentru axa x: p=x-(lungime/2); } void redare_pas() { calculare_pv(); pas.stop(); pas.pan=p; pas.volume=v; pas.play(); } void redare_perete() { calculare_pv(); perete.stop(); perete.pan=p; perete.volume=v; perete.play(); } void redare_deviere() { calculare_pv(); deviere.stop(); deviere.pan=p; deviere.volume=v; deviere.play(); } void pauza() { spune("Pauza"); for(int i=fundal.volume; i<0; i++) { wait(50); fundal.volume=i; } while(true) { if(key_pressed(KEY_P)) { break; } wait(5); } for(int i=fundal.volume; i>volum_fundal; i--) { wait(50); fundal.volume=i; } } void spune_informatii() { spune("Marime sala: "+lungime+" pe "+latime+"."); }