#include #include #include #include #include // Scape Room (SR) - Fanta // gcc sr.c -std=c99 -lncurses -o sr // Game Variables char gCommand[50]; int gScore=0, gIdRoom=0; float gVersion=0.1; // Game Functions const char* checkRoom(int idRoom){ if(gIdRoom == 0){ mvprintw(1,0,"Sotano 9"); mvprintw(2,0,"La SALA está completamente a oscuras y HUELE raro.\nEn tu BOLSILLO llevas un MECHERO pero no vas a ENCENDERLO porque podría ser peligroso.\n"); } if(gIdRoom == 1){ mvprintw(1,0,"Sotano 8"); mvprintw(2,0,"Se cierra la COMPUERTA. La nueva SALA está bien iluminada. En el centro de la SALA una SILLA.\nEn una de las 4 paredes una PUERTA\nEn la PUERTA una CERRADURA."); } if(gIdRoom == 2){ mvprintw(1,0,"Sotano 8"); mvprintw(2,0,"La nueva SALA está bien iluminada. En el centro de la SALA una SILLA rota.\nEn una de las 4 paredes una PUERTA\nEn la PUERTA una CERRADURA."); } if(gIdRoom == 3){ mvprintw(1,0,"Sotano 7"); mvprintw(2,0,"bla bla bla."); } } int clearLines(int lineStart, int lineEnd){ for (int i = lineStart; i < lineEnd; i++){ move(i,0); clrtoeol(); refresh(); } } void exitGame(){ endwin(); exit(0); } void room(){ clearLines(1,100); checkRoom(gIdRoom); refresh(); } void score(){ clearLines(1,100); mvprintw(1,0,"%d",gScore); refresh(); } void version(){ clearLines(1,100); mvprintw(1,0,"%.1f",gVersion); refresh(); } void readyToInputCommand(){ scanw("%s", gCommand); } void drawInputArea(){ clearLines(0,1); mvprintw(0,0,"# "); refresh(); } void help(){ clearLines(1,100); mvprintw(1,0,"help\t Show help"); mvprintw(2,0,"exit\t Exit of here"); mvprintw(3,0,"score\t Show the score"); mvprintw(4,0,"room\t Show room info"); mvprintw(5,0,"version\t Show Scape Room Version"); mvprintw(6,0,"clear\t Clear text in output area"); refresh(); } void checkInput(){ if(strcmp("exit",gCommand) == 0){ exitGame(); } if(strcmp("help",gCommand) == 0){ help(); } if(strcmp("score",gCommand) == 0){ score(); } if(strcmp("room",gCommand) == 0){ room(); } if(strcmp("version",gCommand) == 0){ version(); } if(strcmp("clear",gCommand) == 0){ clearLines(1,100); refresh(); } if(strcmp("desc",gCommand) == 0){ room(); } if(gIdRoom == 0){ if(strcmp("encender",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Enciendes el mechero y MUERES en una explosión. Eres una persona muuy toonta."); refresh(); sleep(5); exitGame(); } } if(gIdRoom == 0){ if(strcmp("autor",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El AUTOR me habló de sotanos y de una recompensa si consigo salir con vida. Eso creo recordar ahora mismo."); refresh(); } } if(gIdRoom == 0){ if(strcmp("enciendas",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Enciendes el mechero y MUERES en una explosión. Eres una persona muuy toonta."); refresh(); sleep(5); exitGame(); } } if(gIdRoom == 0){ if(strcmp("encenderlo",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Enciendes el mechero y MUERES en una explosión. No podías resistir la tentación. Eres una persona muuy toonta la verdad sea dicha."); refresh(); sleep(8); exitGame(); } } if(gIdRoom == 0){ if(strcmp("mechero",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Lo palpas y es un MECHERO. No lo ENCIENDAS."); refresh(); } } if(gIdRoom == 0){ if(strcmp("oler",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Claramente HUELE a GASOLINA. Prender el MECHERO sería muy muy peligroso."); refresh(); } } if(gIdRoom == 0){ if(strcmp("huele",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"HUELE a una especie de combustible, como GASOLINA. No ENCIENDAS el MECHERO."); refresh(); } } if(gIdRoom == 0){ if(strcmp("gasolina",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Cantas una canción que dice así: A ella le gusta la GASOLINA, dame más gasoliiina ...\n\nEscuchas el sonido de una SILLA en el techo, has incomodado a alguien.\n\nAl cabo de unos minutos una COMPUERTA en el techo se abre y cae una cuerda.\nSubes por la cuerda y se te cae el MECHERO.\n\nEstás ahora en otra ROOM."); gScore=10, gIdRoom=1; refresh(); } } if(gIdRoom == 0){ if(strcmp("sala",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"No se ve un CAGARRO en esta SALA. pero tienes un MECHERO que podrías ENCENDER para ver mejor."); refresh(); } } if(gIdRoom == 0){ if(strcmp("bolsillo",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Palpas tus BOLSILLOS y solamente llevas un MECHERO."); refresh(); } } if(gIdRoom == 0){ if(strcmp("bolsillos",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Palpas tus BOLSILLOS y solamente llevas un maldito MECHERO."); refresh(); } } if(gIdRoom == 0){ if(strcmp("cagarro",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"No se ve ni se HUELE ningún CAGARRO.\nSi puedes OLER algo que podría ser GASOLINA."); refresh(); } } if(gIdRoom == 0){ if(strcmp("ver",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"No se ve un CAGARRO en esta SALA. Para una descripción usa ROOM o DESC."); refresh(); } } if(gIdRoom == 0){ if(strcmp("compuerta",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"No se ve un CAGARRO pero tienes la impresión de que en el techo de la SALA existe una COMPUERTA a la que no llegas."); refresh(); } } if(gIdRoom == 1){ if(strcmp("mechero",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Ya no tienes el MECHERO. Se ha caido mientras subias por la cuerda."); refresh(); } } if(gIdRoom == 1){ if(strcmp("compuerta",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Te colocas encima de la COMPUERTA y se rompe. Caes al sotano 9 y MUERES del golpe."); refresh(); sleep(5); exitGame(); } } if(gIdRoom == 1){ if(strcmp("sala",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El AUTOR de estas pruebas me dijo que para poder SALIR tendría que pasar por 9 SOTANOS.\nEsta SALA es por tanto el Sotano 8."); refresh(); } } if(gIdRoom == 1){ if(strcmp("autor",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El AUTOR de las pruebas es un tal Fanta.\nPrometió darme 1 millón de dolares si consigo SALIR con vida de aquí."); refresh(); } } if(gIdRoom == 1){ if(strcmp("sotanos",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Los direrentes SOTANOS están a diferentes niveles. Para SALIR con vida se tiene que pasar por todos."); refresh(); } } if(gIdRoom == 1){ if(strcmp("salir",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Todo el mundo quiere SALIR de estos SOTANOS. Pero nadie lo ha conseguido aún."); refresh(); } } if(gIdRoom == 1){ if(strcmp("mueres",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La vida es lo que pasa mientras MUERES."); refresh(); } } if(gIdRoom == 1){ if(strcmp("silla",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Te acercas a la SILLA. Se nota que alguien ha estado sentado hace poco tiempo. La palpas y está caliente.\nNotas un BULTO en la SILLA."); refresh(); } } if(gIdRoom == 1){ if(strcmp("bulto",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El BULTO parece el de una LLAVE. Estaría bien ROMPER la SILLA para sacar la LLAVE."); refresh(); } } if(gIdRoom == 1){ if(strcmp("llave",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Una LLAVE suele servir para abrir y cerrar cosas. Parece que bajo el BULTO en la SILLA podríamos tener una."); refresh(); } } if(gIdRoom == 1){ if(strcmp("romper",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Rompes la SILLA y bajo el BULTO se encuentra la LLAVE. Coges la LLAVE."); refresh(); sleep(3); gScore=15, gIdRoom=2; refresh(); } } if(gIdRoom == 1){ if(strcmp("puerta",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La puerta es bien bonita. Tiene una CERRADURA."); refresh(); } } if(gIdRoom == 1){ if(strcmp("puertas",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La puerta es bien bonita. Tiene una CERRADURA."); refresh(); } } if(gIdRoom == 1){ if(strcmp("cerradura",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Si tuvieras una LLAVE podrías probar a meterla en la CERRADURA.\nPero no tienes una LLAVE."); refresh(); } } if(gIdRoom == 2){ if(strcmp("mechero",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Ya no tienes el MECHERO. Se ha caido mientras subias por la cuerda."); refresh(); } } if(gIdRoom == 2){ if(strcmp("compuerta",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Te colocas encima de la COMPUERTA y se rompe. Caes y MUERES del golpe y de inmediato."); refresh(); sleep(5); exitGame(); } } if(gIdRoom == 2){ if(strcmp("sala",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Continuas estando en la SALA llamada Sotano 8."); refresh(); } } if(gIdRoom == 2){ if(strcmp("autor",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El AUTOR de las pruebas es un tal Fanta.\nEs buena gente."); refresh(); } } if(gIdRoom == 2){ if(strcmp("sotanos",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Los direrentes SOTANOS están a diferentes niveles. Para SALIR con vida se tiene que pasar por todos."); refresh(); } } if(gIdRoom == 2){ if(strcmp("salir",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Todo el mundo quiere SALIR de estos SOTANOS. Nadie lo ha conseguido aún."); refresh(); } } if(gIdRoom == 2){ if(strcmp("mueres",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La vida es lo que pasa mientras MUERES."); refresh(); } } if(gIdRoom == 2){ if(strcmp("silla",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Has dejado la silla rota. Sacaste de su interior una LLAVE."); refresh(); } } if(gIdRoom == 2){ if(strcmp("bulto",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"El BULTO ya no existe, te has cargado la SILLA para sacar una LLAVE."); refresh(); } } if(gIdRoom == 2){ if(strcmp("llave",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Una LLAVE plateada tienes en tu poder. Suelen usarse en PUERTAS por ejemplo."); refresh(); } } if(gIdRoom == 2){ if(strcmp("romper",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Con esto ya has roto suficiente por hoy."); refresh(); } } if(gIdRoom == 2){ if(strcmp("puerta",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La puerta es bien chingona. Tiene una CERRADURA bien chingona también."); refresh(); } } if(gIdRoom == 2){ if(strcmp("puertas",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"La puerta es bien chingona. Tiene una CERRADURA bien chingona también."); refresh(); } } if(gIdRoom == 2){ if(strcmp("cerradura",gCommand) == 0){ clearLines(1,100); mvprintw(1,0,"Metes la LLAVE en la CERRADURA y la PUERTA se abre.\nPasas por la puerta e inmediatamente se cierra quedando la llave por el otro lado (la has perdido manazas)\n\nEstás en un ascensor en el que solamente puedes pulsar un botón para subir.\nPulsas y subes\nAl salir en el nuevo piso alguien te golpea y quedas insconciente\n\nAl recobrar la consciencia estás en medio del sotano 7."); gScore=20, gIdRoom=3; refresh(); } } } // Main Function int main() { initscr(); for(;;){ drawInputArea(); readyToInputCommand(); checkInput(); } }