123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- /*
- *
- * This file is part of Luces de 1984 (L1).
- * Copyright (C) <2017> <alkeon> [alkeon@autistici.org]
-
- * L1 is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * L1 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with l1. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- #include <string>
- #include <cstring>
- #include <fstream>
- #include <sstream>
- #include "metodos.h"
- #include "personajes.h"
- #include <curses.h>
- #include <ncurses.h>
- using namespace std;
- #define VERSION "1.1"
- void juego::guardar(std::string guardar,Personaje& v){
- if(this->guardados_automaticos==1 ){
- printa("Narrador:Guardando partida...\n");
- std::ofstream out("save.dat");
- out << "Nombre: " << v.nombre << "\nVida: " << to_string(v.vida) << "\nAtaque: " << to_string(v.ataque) << "\nBotiquín: " << to_string(v.botiquin) << "\nBalas: " << to_string(v.balas) << "\nDaño " << to_string(v.balas_dano) << "\nGanzúa: " << to_string(v.ganzua) << "\nGuardado: " << guardar << "\nGuardados automáticos: " << to_string(this->guardados_automaticos) << "\nVersión: " << VERSION << "\nPsicosis: " << to_string(v.psicosis) << "\nSoledad: " << to_string(v.soledad) << "\nEsperpento: " << to_string(v.esperpento) << "\nHola Dave: " << to_string(v.hola_dave);
-
- printa("Narrador:Partida guardada.\n");
- }
- }
- void juego::cargarcompleto(string partida,Personaje& v,Personaje& h){
- string line;
- ifstream in(partida.c_str());
- while(getline(in,line)){
- size_t aux=line.find("Nombre: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- v.nombre=line;
- }
- aux=line.find("Vida: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+6);
- stringstream(line) >> v.vida;
- }
- aux=line.find("Ataque: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- stringstream(line) >> v.ataque;
- }
- aux=line.find("Botiquín: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+10);
- stringstream(line) >> v.botiquin;
- }
- aux=line.find("Balas: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+7);
- stringstream(line) >> v.balas;
- }
- aux=line.find("Daño: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+6);
- stringstream(line) >> v.balas_dano;
- }
- aux=line.find("Ganzúa: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- stringstream(line) >> v.ganzua;
- }
- aux=line.find("Guardado: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+10);
- v.funcion_guardada=line;
- }
- aux=line.find("Guardados automáticos: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+23);
- stringstream(line) >> this->guardados_automaticos;
- }
- aux=line.find("Psicosis: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+10);
- stringstream(line) >> v.psicosis;
- }
- aux=line.find("Soledad: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- stringstream(line) >> v.soledad;
- }
- aux=line.find("Esperpento: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+12);
- stringstream(line) >> v.esperpento;
- }
- aux=line.find("Hola Dave: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+11);
- stringstream(line) >> v.hola_dave;
- }
- }
- this->cargarnivel(v,h);
- }
- void juego::cargarnivel(Personaje& v, Personaje& h){
- if(v.funcion_guardada[0]=='a'){
- if(v.funcion_guardada[1]=='2'){
- this->interrogatorio(v,h);
- }
- if(v.funcion_guardada[1]=='3'){
- this->huida(v,h);
- }
- if(v.funcion_guardada[1]=='4'){
- this->provisiones(v,h);
- }
- if(v.funcion_guardada[1]=='5'){
- this->asesinar(v,h);
- }
- if(v.funcion_guardada[1]=='6'){
- this->flashback(v,h);
- }
- if(v.funcion_guardada[1]=='7'){
- this->informacion(v,h);
- }
- if(v.funcion_guardada[1]=='8'){
- this->ira(v,h);
- }
- if(v.funcion_guardada[1]=='9'){
- this->usando_un_ordenador(v,h);
- }
- }else{
- if(v.funcion_guardada[0]=='1'){
- this->preguntas_principales(v,h);
- }
- if(v.funcion_guardada=="-1"){
- v.vida=200;
- v.ataque=20;
- h.vida=80;
- h.ataque=4;
- this->preguntas_principales(v,h);
- }
- if(v.funcion_guardada[1]=='2'){
- this->huida_ruidosa(v,h);
- }
- if(v.funcion_guardada[1]=='3'){
- this->vuelves(v,h);
- }
- if(v.funcion_guardada[1]=='4'){
- this->ayudantes_cerradura(v,h);
- }
- if(v.funcion_guardada[1]=='5'){
- this->muerte_al_francotirador(v,h);
- }
- if(v.funcion_guardada[0]!='1' && v.funcion_guardada[0]!='b'){
- this->preguntas_principales(v,h);
- }
- }
- }
- void vista_previa_partida(string partida_carga){
- clear();
- string line;
- string nombrel;
- bool partida;
- int vida;
- string version;
- ifstream in(partida_carga.c_str());
- int final1=1;
- int final2=1;
- int final3=1;
- int final4=1;
- while(getline(in,line)){
- size_t aux=line.find("Nombre: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- nombrel=line;
- }
- aux=line.find("Vida: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+6);
- stringstream(line) >> vida;
- }
- aux=line.find("Versión: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+9);
- version=line;
- partida=true;
- }
- aux=line.find("Psicosis: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+10);
- stringstream(line) >> final1;
- }
- aux=line.find("Soledad: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+8);
- stringstream(line) >> final2;
- }
- aux=line.find("Esperpento: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+12);
- stringstream(line) >> final3;
- }
- aux=line.find("Hola Dave: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+11);
- stringstream(line) >> final4;
- }
- }
- char final1_str[30];
- char final2_str[30];
- char final3_str[30];
- char final4_str[30];
-
- if(final1==0)
- strcpy(final1_str,"Conseguido");
- if(final1==1)
- strcpy(final1_str,"No conseguido");
- if(final2==0)
- strcpy(final2_str,"Conseguido");
- if(final2==1)
- strcpy(final2_str,"No conseguido");
- if(final3==0)
- strcpy(final3_str,"Conseguido");
- if(final3==1)
- strcpy(final3_str,"No conseguido");
- if(final4==0)
- strcpy(final4_str,"Conseguido");
- if(final4==1)
- strcpy(final4_str,"No conseguido");
- if(partida){
- clear();
-
- printw("Partida encontrada\n");
-
- printw("Nombre \t\t\t %s\n",nombrel.c_str());
- printw("Vida \t\t\t %d\n",vida);
- printw("Final 1 \t\t %s\n",final1_str);
- printw("Final 2 \t\t %s\n",final2_str);
- printw("Final 3 \t\t %s\n",final3_str);
- printw("Final 4 \t\t %s\n",final4_str);
- if(final1==0 && final2==0 && final3==0 && final4==0){
- printw("Esta partida ha sido completada con todos los finales. Enhorabuena al jugador y espero que haya disfrutado (dentro de las limitaciones) del juego. \nAtte:Alkeon\n");
- }
- if(version!=VERSION)
- printw("La partida guardada está desactualizada y puede provocar fallos inesperados\n");
- printw("¿Quieres cargar esta partida?\n" );
- printw("1.- Sí \n2.- No\n");
- char eleccion[2];
- getstr(eleccion);
- if(eleccion[0] == '1'){
- juego juego_actual;
- Personaje v(0,20,0,0,0);
- v.nombre=nombrel;
- Personaje h(0,30,0,0,1);
- juego_actual.cargarcompleto("save.dat",v,h);
- }else{
- string partida_guardada;
- juego juego_actual;
- printw("¿Quieres cargar otra partida?\n" );
- printw("1.- Sí \n2.- No\n");
- char str[2];
- getstr(str);
- if(str[0]=='1'){
- printw("Escribe el nombre del archivo:" );
- char partida_mod[100];
- getstr(partida_mod);
- string partida_real(partida_mod);
- vista_previa_partida(partida_real);
- }else{
- juego juego_actual;
- Personaje molde(0,30,0,0,1);
- Personaje Winston(0,20,0,0,0);
- juego_actual.menu(Winston,molde);
- }
- }
- }else{
- printw("Ninguna partida encontrada\n");
- printw("¿Quieres cargar otra partida?\n" );
- printw("1.- Sí \n2.- No\n");
- char str[2];
- getstr(str);
- if(str[0]=='1'){
- printw("Escribe el nombre del archivo:");
- char str2[30];
- getstr(str2);
- string partida_guardada(str2);
- vista_previa_partida(partida_guardada);
-
- }else{
- Personaje molde(0,30,0,0,1);
- Personaje Winston(0,20,0,0,0);
- juego juego_actual;
- juego_actual.menu(Winston,molde);
- }
- }
-
- }
|