123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- /*
- *
- * This file is part of Luces de 1984 SDL version (L1-sdl).
- * Copyright (C) <2017> <alkeon> [alkeon@autistici.org]
-
- * L1-sdl 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-sdl 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-sdl. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- #include <string>
- #include <cstring>
- #include <fstream>
- #include <sstream>
- #include "metodos.h"
- #include "personajes.h"
- #include "SDL.h"
- #include "SDL_ttf.h"
- using namespace std;
- #define VERSION "1.1-sdl"
- void juego::guardar(std::string guardar,Personaje& v){
- if(this->guardados_automaticos==1 ){
- printa("Narrador:Guardando partida...\n");
- string line;
- 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) << "\nBug: " << to_string(v.bug) << "\nPistola: " << to_string(v.pistola);
-
- 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("Pistola: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+9);
- stringstream(line) >> v.pistola;
- }
- 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;
- }
- aux=line.find("Bug: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+5);
- stringstream(line) >> v.bug;
- }
- }
- 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]=='6'){
- this->flashback(v,h);
- }
- if(v.funcion_guardada[1]=='7'){
- this->informacion(v,h);
- }
- if(v.funcion_guardada[1]=='9'){
- this->usas_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'){
- if(v.funcion_guardada[0]=='2'&& v.funcion_guardada[1]=='0'){
- this->non_plus_ultra(v,h);
- }else{
- this->preguntas_principales(v,h);
- }
- }
- }
- }
- void juego::vista_previa_partida(string partida_carga){
- 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;
- int final5=1;
- for(int i=0;i<17 && getline(in,line); ++i){
- 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;
- }
- aux=line.find("Bug: ");
- if(aux!=std::string::npos){
- line=line.substr(aux+5);
- stringstream(line) >> final5;
- }
- }
- std::string final1_str;
- std::string final2_str;
- std::string final3_str;
- std::string final4_str;
- std::string final5_str;
- if(final1==0)
- final1_str="Conseguido";
- if(final1==1)
- final1_str="No conseguido";
- if(final2==0)
- final2_str="Conseguido";
- if(final2==1)
- final2_str="No conseguido";
- if(final3==0)
- final3_str="Conseguido";
- if(final3==1)
- final3_str="No conseguido";
- if(final4==0)
- final4_str="Conseguido";
- if(final4==1)
- final4_str="No conseguido";
- if(final5==0)
- final5_str="Conseguido";
- if(final5==1)
- final5_str="No conseguido";
- if(partida){
- std::string line;
- std::stringstream numeros;
- numeros.str( "" );
- numeros << "Vida \t\t\t " << vida << "\n";
- this->printa("Partida encontrada\n");
- line="Nombre \t\t\t "+nombrel+"\n";
- this->printa(line);
-
- this->printa(numeros.str());
- line="Final 1 \t\t "+final1_str+"\n";
- this->printa(line);
- line="Final 2 \t\t "+final2_str+"\n";
- this->printa(line);
- line="Final 3 \t\t "+final3_str+"\n";
- this->printa(line);
- line="Final 4 \t\t "+final4_str+"\n";
- this->printa(line);
- line="Final 5 \t\t "+final5_str+"\n";
- this->printa(line);
- if(final1==0 && final2==0 && final3==0 && final4==0 && final5==0){
- this->printa("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)
- this->printa("La partida guardada está desactualizada y puede provocar fallos inesperados\n");
- this->printa("¿Quieres cargar esta partida?\n" );
- this->printa("1.- Sí \n2.- No\n");
- SDL_Event e;
- bool continua=true;
- while(continua){
- if( SDL_WaitEvent( &e ) != 0 ){
- if( e.type == SDL_KEYDOWN ){
- if(e.key.keysym.sym == SDLK_1){
- Personaje v(0,20,0,0,0);
- v.nombre=nombrel;
- Personaje h(0,30,0,0,1);
- this->cargarcompleto("save.dat",v,h);
- continua=false;
- }else{
- juego juego_actual;
- Personaje molde(0,30,0,0,1);
- Personaje Winston(0,20,0,0,0);
- this->menu(Winston,molde);
- }
- }
- if(e.type == SDL_QUIT){
- continua=false;
- }
- }
- }
- }
- }
|