commit 724658153a41b719b209472428caef6dd95c8aa6 Author: fanta Date: Sun Jan 5 20:37:06 2025 +0100 scape room en c diff --git a/sr/sr b/sr/sr new file mode 100755 index 0000000..1192a2e Binary files /dev/null and b/sr/sr differ diff --git a/sr/sr.c b/sr/sr.c new file mode 100644 index 0000000..9e509db --- /dev/null +++ b/sr/sr.c @@ -0,0 +1,119 @@ +#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(); + } +}