a.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. /*
  2. *
  3. * This file is part of Luces de 1984 SDL version (L1-sdl).
  4. * Copyright (C) <2017> <alkeon> [alkeon@autistici.org]
  5. * L1-sdl is free software: you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation, either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * L1-sdl is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with l1-sdl. If not, see <http://www.gnu.org/licenses/>.
  17. *
  18. */
  19. #include <string>
  20. #include <random>
  21. #include <sstream>
  22. #include "metodos.h"
  23. #include "SDL.h"
  24. #include "SDL_ttf.h"
  25. using namespace std;
  26. // Métodos clase Game
  27. // Constructor y destructor
  28. juego::juego(){
  29. this->panel_resuelto=0;
  30. }
  31. juego::~juego(){}
  32. void juego::preguntas_principales(Personaje& v,Personaje& h){
  33. guardar("1", v);
  34. this->printa("Narrador:Oyes el sonido de gotas precipitándose hacia el suelo\n");
  35. this->printa("No puedes respirar bien por un objeto metálico colocado alrededor del cuello que te hace estar muy incómodo.\n");
  36. this->pausa();
  37. this->printa("Narrador:¿Qué decides hacer?\n");
  38. this->printa("1.- Levantarte e intentar escaparte.\n");
  39. this->printa("2.- Con la mano derecha tirar algo hacia el pasillo por si aparece alguien.\n");
  40. SDL_Event e;
  41. bool continua=true;
  42. while(continua){
  43. if( SDL_WaitEvent( &e ) != 0){
  44. if( e.type == SDL_KEYDOWN ){
  45. if(e.key.keysym.sym == SDLK_1){
  46. this->peli(v,h);
  47. continua=false;
  48. }else{
  49. this->falso(v,h);
  50. continua=false;
  51. }
  52. }
  53. if(e.type == SDL_QUIT){
  54. continua=false;
  55. }
  56. }
  57. }
  58. }
  59. void juego::peli(Personaje& v, Personaje& h){
  60. this->printa("Narrador:Al levantarte además de romper varios cables, escuchas por otro lado un preso gritando que volverían las oscuras golondrinas, de tu balcón... Este antes de ser abatido a tiros dijo quinientos once.\n");
  61. this->printa(v.nombre+":¿Qué significa ese número?\n");
  62. this->pausa();
  63. this->reflexion(v,h);
  64. }
  65. void juego::reflexion(Personaje& v, Personaje& h){
  66. this->printa("Narrador:Notas un fuerte golpe en tu nuca por culpa del poema, te distrajo de lo que tenías en mente.\n");
  67. this->printa("Narrador:Te despiertas atado en una silla con cuatro cámaras alrededor.\n");
  68. this->printa("Narrador:Al verte en esta situación te olvidas de las demás ideas y te centras en una.\n");
  69. this->printa(v.nombre+":¿De verdad estas cámaras me controlan? Las cámaras nos controlan pero esa no creo que se la intención.\n");
  70. this->printa(v.nombre+":¡Espera! Si están desconectadas ahora que me doy cuenta, no están orientadas a la cara.\n");
  71. this->printa(v.nombre+":Aquí algo falla\n");
  72. this->printa(v.nombre+":¿Entonces todo esto es mentira?\n");
  73. this->pausa();
  74. this->interrogatorio(v,h);
  75. }
  76. void juego::interrogatorio(Personaje& v, Personaje& h){
  77. guardar("a2", v);
  78. this->printa("Narrador:Unos pasos desde lejos distraen tu pensamiento\n");
  79. this->printa("Narrador:Tu silla se mueve y te coloca frente una mesa\n");
  80. this->printa("Narrador:Prestas atención y notas como se acercan pisadas muy rápidas.\n");
  81. this->printa("Narrador:¿Qué piensas hacer?\n");
  82. this->printa("1.- Te acercas para pegarle\n");
  83. this->printa("2.- Huyes para evitar más preguntas\n");
  84. SDL_Event e;
  85. bool continua=true;
  86. while(continua){
  87. if( SDL_WaitEvent( &e ) != 0){
  88. if( e.type == SDL_KEYDOWN ){
  89. if(e.key.keysym.sym == SDLK_1){
  90. this->continuacion_interroga(v,h);
  91. continua=false;
  92. }else{
  93. this->asesinato(v,h);
  94. continua=false;
  95. }
  96. }
  97. if(e.type == SDL_QUIT){
  98. continua=false;
  99. }
  100. }
  101. }
  102. }
  103. //5
  104. void juego::continuacion_interroga(Personaje& v,Personaje& h){
  105. string p;
  106. while(v.vida>=0 && h.vida>=0){
  107. v.pegar(h);
  108. stringstream strings;
  109. random_device rd;
  110. strings << rd();
  111. string random_str=strings.str();
  112. if(random_str[0]=='1'){
  113. h.pegar(v);
  114. this->printa("Narrador:Te golpeó\n");
  115. }else{
  116. this->printa("Narrador:Lo esquivaste\n");
  117. }
  118. }
  119. this->pausa();
  120. if(h.vida<0){
  121. h.vida=0;
  122. this->pelea_stats(v,h);
  123. }
  124. this->huida(v,h);
  125. }
  126. //6
  127. void juego::huida(Personaje& v,Personaje& h){
  128. guardar("a3", v);
  129. this->printa(v.nombre+":Vaya, lo he matado, aunque me he podido defender, ha conseguido clavarme una navaja.\n");
  130. this->printa("Narrador:Para sacarte la navaja, pierdes un poco de sangre, ya que por suerte no ha sido mucho porque le agarraste la mano\n");
  131. this->printa("Narrador:Te taponas la herida para que no te desangres con la camiseta del policía.\n");
  132. this->printa("Narrador:¿Qué vas a hacer ahora?\n");
  133. this->printa("1.- Huir sin mirar atrás\n");
  134. this->printa("2.- Buscar provisiones e ir a por el jefe\n");
  135. this->printa("3.- Buscar los responsables de todo esto y desmontarlo\n");
  136. SDL_Event e;
  137. bool continua=true;
  138. while(continua){
  139. if( SDL_WaitEvent( &e ) != 0 ){
  140. if( e.type == SDL_KEYDOWN ){
  141. if(e.key.keysym.sym == SDLK_1){
  142. this->huir(v,h);
  143. continua=false;
  144. }
  145. if(e.key.keysym.sym == SDLK_2){
  146. this->provisiones(v,h);
  147. continua=false;
  148. }
  149. if(e.key.keysym.sym == SDLK_3){
  150. this->asesinar(v,h);
  151. continua=false;
  152. }
  153. }
  154. if(e.type == SDL_QUIT){
  155. continua=false;
  156. }
  157. }
  158. }
  159. }
  160. void juego::pelea_stats(Personaje& v, Personaje& h){
  161. this->printa("Narrador:Tu vida -> "+to_string(v.vida)+" \n");
  162. this->printa("Narrador:Vida del enemigo -> "+to_string(h.vida)+" \n");
  163. this->printa("Narrador:Tus botiquines -> "+to_string(v.botiquin)+" \n");
  164. this->printa("Narrador:Tus balas -> "+to_string(v.balas)+" \n");
  165. }
  166. void juego::huir(Personaje& v, Personaje& h){
  167. std::string continuar;
  168. this->printa("Narrador:Después de varios minutos corriendo...\n");
  169. this->pausa();
  170. this->printa("Narrador:Consigues dar con la puerta de salida, con el muñeco típico y su \"SALIDA\" en grande.\n");
  171. this->printa("Narrador:Sales por la puerta, después de tanto tiempo vuelves a sentir el calor de la luz del Sol, las hojas moviéndose...\n");
  172. this->printa("Narrador:Por desgracia un francotirador te ve huyendo y te dispara\n");
  173. this->printa("Narrador:Has muerto\n");
  174. SDL_Delay(10000);
  175. }
  176. //7
  177. void juego::asesinar(Personaje& v, Personaje& h){
  178. this->printa(v.nombre+":Pues empecemos que tenemos poco tiempo y muchas cosas que hacer.\n");
  179. this->printa(v.nombre+":Ante todo se necesita a alguien que conozca donde está el jefe\n");
  180. this->printa("Narrador:No veo a nadie será mejor ponerse a buscar.\n");
  181. h.vida=200;
  182. this->asesinar_camino(v,h);
  183. }
  184. //8
  185. void juego::asesinar_camino(Personaje& v,Personaje& h){
  186. this->printa(v.nombre+":Voy a correr para buscar más rápido\n");
  187. this->printa("Narrador:Después de varios minutos corriendo, chocas con un botiquín, te caes y rompes una tabla fina y delgada. Al romper la tabla te caes al piso de abajo.\n");
  188. this->printa("Narrador:Caes encima de un policía y te desmayas\n");
  189. this->pausa();
  190. this->flashback(v,h);
  191. }
  192. //9
  193. void juego::flashback(Personaje& v, Personaje& h){
  194. guardar("a6", v);
  195. this->printa("Narrador:Sueñas con el pasado, con tu familia, con amigos.\n");
  196. this->printa("Narrador:Recuerdas como era antes todo, pero no por qué ocurrió todo esto.\n");
  197. this->printa("Narrador:Eres capaz de reconocer la fecha de tus recuerdos, con todos sus detalles.\n");
  198. this->printa("Narrador:Fuiste un oficinista de una de las constructoras más grandes, en tu tiempo libre te gustaba escribir, leer poemas y estar en familia.\n");
  199. this->pausa();
  200. this->printa("Narrador:Visteis películas juntos, cantado canciones incluso bailado.\n");
  201. this->printa("Narrador:Todo esto junto a la compañía de tu mujer, se llamaba Alicia...\n");
  202. this->printa("Narrador:Después de pronunciar el nombre de tu mujer, te despertaste llorando y gritando su nombre.\n");
  203. this->printa("Narrador:Con una mezcla de ira, rabia y desolación, te levantaste, robaste la pistola y cuatro balas al policía\n");
  204. v.balas=4;
  205. v.pistola=1;
  206. v.balas_dano=100;
  207. this->pausa();
  208. this->printa("Narrador:Ahora tienes varias opciones:\n");
  209. this->printa("1.- Buscar un registro de información sobre tu vida\n");
  210. this->printa("2.- Por culpa de la ira, decides matar a todos y cada uno de los que estén relacionados con este proyecto\n");
  211. SDL_Event e;
  212. bool continua=true;
  213. while(continua){
  214. if( SDL_WaitEvent( &e ) != 0){
  215. if( e.type == SDL_KEYDOWN ){
  216. if(e.key.keysym.sym == SDLK_1){
  217. this->ahogo(v,h);
  218. continua=false;
  219. }else{
  220. this->ira(v,h);
  221. continua=false;
  222. }
  223. }
  224. if(e.type == SDL_QUIT){
  225. continua=false;
  226. }
  227. }
  228. }
  229. }
  230. void juego::ahogo(Personaje& v, Personaje& h){
  231. this->printa("Narrador:Para encontrar la información, tendré que extorsionar a uno.\n");
  232. this->printa("Narrador:Con tu traje de policía, con ciertas manchas de sangre porque caíste encima de uno decides moverte.\n");
  233. this->printa("Narrador:Ahora vas a volver a la zona de los encarcelados para poder hablar con un policía\n");
  234. this->pausa();
  235. this->printa("Narrador:Cuando estas cerca de la zona de encarcelados, te encuentras con un policía un poco más joven que los demás. Lo coges del cuello apretando con fuerza.\n");
  236. this->printa(v.nombre+":Hazme caso y no te mataré. Dime dónde están los archivos.\n");
  237. this->pausa();
  238. this->printa("Narrador:No dice nada\n");
  239. this->informacion(v,h);
  240. }
  241. void juego::informacion(Personaje& v, Personaje& h){
  242. guardar("a7", v);
  243. this->printa(v.nombre+":¡Vaya un mapa qué oportuno!.\n");
  244. this->printa(v.nombre+":Estoy en la tercera planta, un poco distanciado para alguien que está de incógnito.\n");
  245. this->printa(v.nombre+":Hay que buscar unas escaleras.\n");
  246. this->printa("Narrador:Piensas y descartas varias opciones para continuar\n");
  247. this->pausa();
  248. this->printa("Narrador:Dudas si es necesario todo esto para tener información sobre ti\n");
  249. this->printa("Narrador:¿Qué vas a hacer ahora?\n");
  250. this->printa("1.- Sí, es necesario\n");
  251. this->printa("2.- No es útil, mejor abandonamos\n");
  252. SDL_Event e;
  253. bool continua=true;
  254. while(continua){
  255. if( SDL_WaitEvent( &e ) != 0){
  256. if( e.type == SDL_KEYDOWN ){
  257. if(e.key.keysym.sym == SDLK_1){
  258. this->conseguir_info(v,h);
  259. continua=false;
  260. }else{
  261. this->ira(v,h);
  262. continua=false;
  263. }
  264. }
  265. if(e.type == SDL_QUIT){
  266. continua=false;
  267. }
  268. }
  269. }
  270. }
  271. void juego::provisiones(Personaje& v,Personaje& h){
  272. guardar("a4", v);
  273. this->printa(v.nombre+":Busquemos un poco para sobrevivir aquí dentro\n");
  274. this->printa(v.nombre+":Ante todo se necesita a alguien que conozca donde están los suministros.\n");
  275. this->printa("Narrador:Vas en busca de suministro y te llevas horas buscando\n");
  276. this->pausa();
  277. this->printa("Narrador:Llegas a una puerta que necesita una contraseña\n");
  278. this->printa("Narrador:¿Qué haces?\n");
  279. this->printa("1.-Escribes la contraseña\n");
  280. this->printa("2.-Vuelves porque no sabes la contraseña\n");
  281. SDL_Event e;
  282. bool continua=true;
  283. while(continua){
  284. if( SDL_WaitEvent( &e ) != 0 ){
  285. if( e.type == SDL_KEYDOWN ){
  286. if(e.key.keysym.sym == SDLK_1){
  287. this->contrasena(v,h);
  288. continua=false;
  289. }else{
  290. this->asesinar_camino(v,h);
  291. continua=false;
  292. }
  293. }
  294. if(e.type == SDL_QUIT){
  295. continua=false;
  296. }
  297. }
  298. }
  299. }
  300. void juego::asesinato(Personaje& v,Personaje& h){
  301. this->printa("Narrador:Decides huir de nuevo aunque está vez de una forma más desafortunada, estaba un policía escondido con un cuchillo y te lo clava en tu espalda\n");
  302. this->printa("Narrador:Has muerto\n");
  303. SDL_Delay(10000);
  304. }
  305. void juego::pelea(Personaje& v, Personaje& h){
  306. this->printa("Narrador:Te encuentras un policía que por la voz te reconoce\n");
  307. h.vida=100;
  308. this->pausa();
  309. while(v.vida>=0 && h.vida>=0){
  310. this->pausa();
  311. v.pegar(h);
  312. stringstream ss;
  313. random_device rd;
  314. ss << rd();
  315. string random_str=ss.str();
  316. if(random_str[2]=='1'){
  317. h.pegar(v);
  318. this->printa("Narrador:Te golpeó\n");
  319. }else{
  320. this->printa("Narrador:Lo esquivaste\n");
  321. }
  322. }
  323. if (v.vida>0)
  324. this->huida(v,h);
  325. }
  326. void juego::contrasena(Personaje& v,Personaje& h){
  327. this->printa(v.nombre+":Por lo que aparece aquí abajo hay un cartel que cuenta que solo se puede escribir una vez la contraseña, si fallo se cambia la contraseña para evitar robos.\n");
  328. this->printa("Narrador:Escribe el número\n");
  329. SDL_Event e;
  330. bool cinco=true;
  331. bool uno=true;
  332. while(uno && cinco){
  333. if( SDL_WaitEvent( &e ) != 0 ){
  334. if( e.type == SDL_KEYDOWN ){
  335. if(e.key.keysym.sym == SDLK_5){
  336. cinco=false;
  337. }else{
  338. uno=false;
  339. }
  340. }
  341. }
  342. }
  343. this->puerta_abierta(v,h);
  344. }
  345. void juego::puerta_abierta(Personaje& v, Personaje& h){
  346. this->printa("Narrador:Funciona\n");
  347. this->printa("Narrador:Obtienes 10000 de vida, 5 botiquines y en el suelo una ganzúa\n");
  348. this->pausa();
  349. v.botiquin=5;
  350. v.vida+=10000;
  351. v.ganzua=1;
  352. this->printa(v.nombre+":Preparado se lucha mejor\n");
  353. this->asesinar_camino(v,h);
  354. }
  355. //10
  356. void juego::ira(Personaje& v, Personaje& h){
  357. this->printa("Narrador:Quitas con ira el micrófono y el audífono al policía\n");
  358. this->printa("Narrador:Preguntas por el jefe a través del micrófono y te responden que está en su cuarto en la tercera planta.\n");
  359. this->printa("Narrador:Después de varias horas buscando encuentras la puerta del jefe, muy discreta, hecha de oro\n");
  360. this->jefe(v,h);
  361. }
  362. void juego::jefe(Personaje& v, Personaje& h){
  363. this->printa("Narrador:Te dices a ti mismo, es la hora de la verdad\n");
  364. this->printa("Narrador:Te preparas y...\n");
  365. string p;
  366. h.vida=400;
  367. h.ataque=100;
  368. while(v.vida>0 && h.vida>0){
  369. this->printa("Narrador:Menú de opciones frente a una pelea.\n");
  370. if(v.pistola==1){
  371. this->printa("1.-Atacar\n");
  372. this->printa("2.-Tomar botiquín\n");
  373. this->printa("3.-Disparo\n");
  374. SDL_Event e;
  375. bool continua=true;
  376. while(continua){
  377. if( SDL_WaitEvent( &e ) != 0 ){
  378. if( e.type == SDL_KEYDOWN ){
  379. if(e.key.keysym.sym == SDLK_1){
  380. v.pegar(h);
  381. continua=false;
  382. }
  383. if(e.key.keysym.sym == SDLK_2){
  384. v.curar(v);
  385. continua=false;
  386. }
  387. if(e.key.keysym.sym == SDLK_3){
  388. v.disparas(h,v);
  389. continua=false;
  390. }
  391. }
  392. if(e.type == SDL_QUIT){
  393. continua=false;
  394. }
  395. }
  396. }
  397. }else{
  398. this->printa("1.-Atacar\n");
  399. this->printa("2.-Tomar botiquín\n");
  400. SDL_Event e;
  401. bool continua=true;
  402. while(continua){
  403. if( SDL_WaitEvent( &e ) != 0){
  404. if( e.type == SDL_KEYDOWN ){
  405. if(e.key.keysym.sym == SDLK_1){
  406. v.pegar(h);
  407. continua=false;
  408. }else{
  409. v.curar(v);
  410. continua=false;
  411. }
  412. }
  413. if(e.type == SDL_QUIT){
  414. continua=false;
  415. }
  416. }
  417. }
  418. }
  419. stringstream strings;
  420. random_device rd;
  421. strings << rd();
  422. string random_str=strings.str();
  423. if(random_str[2]=='1'){
  424. h.pegar(v);
  425. this->printa("Narrador:Te golpeó\n");
  426. }else{
  427. this->printa("Narrador:Lo esquivaste\n");
  428. }
  429. this->pelea_stats(v,h);
  430. }
  431. if (v.vida<=0){
  432. this->printa("Narrador:Has muerto\n");
  433. SDL_Delay(10000);
  434. }else{
  435. if(h.vida<=0){
  436. this->pausa();
  437. }
  438. }
  439. }
  440. void juego::conseguir_info(Personaje& v, Personaje& h){
  441. this->printa(v.nombre+":Hay que buscar algunos papeles, algo tiene que haber en este edificio.\n");
  442. this->printa("Narrador:Piensas cómo puede ser posible encontrar papeles de ti entre tantas personas.\n");
  443. this->printa(v.nombre+":Buscaré mejor en un ordenador.\n");
  444. this->pausa();
  445. this->usas_un_ordenador(v,h);
  446. }
  447. void juego::usas_un_ordenador(Personaje& v, Personaje& h){
  448. guardar("a9", v);
  449. this->printa(v.nombre+":Necesito una ganzúa para abrir una sala de ordenadores.\n");
  450. if(v.ganzua==1){
  451. this->printa(v.nombre+":Por suerte, tengo la ganzúa que encontré\n");
  452. this->printa(v.nombre+":Ahora a saber dónde estará la sala de los ordenadores de este edificio porque ordenadores tienen que usar\n");
  453. this->printa("Narrador:Buscas durante un largo tiempo.\n");
  454. this->printa(v.nombre+":Esto parece un cartel con un ordenador\n");
  455. this->printa("Narrador:La flecha señala a la derecha y se ve al final del pasillo algunas pantallas encendidas.\n");
  456. this->pausa();
  457. this->printa("Narrador:Tienes varias opciones:\n");
  458. this->printa("1.- Continuas el camino hacia los ordenadores y los usas\n");
  459. this->printa("2.- Abandonas el lugar\n");
  460. SDL_Event e;
  461. bool continua=true;
  462. while(continua){
  463. if( SDL_WaitEvent( &e ) != 0 ){
  464. if( e.type == SDL_KEYDOWN ){
  465. if(e.key.keysym.sym == SDLK_1){
  466. this->usando_un_ordenador(v,h);
  467. continua=false;
  468. }else{
  469. this->vuelta();
  470. continua=false;
  471. }
  472. }
  473. if(e.type == SDL_QUIT){
  474. continua=false;
  475. }
  476. }
  477. }
  478. } else {
  479. this->printa(v.nombre+":No tengo ninguna ganzúa. \n");
  480. this->printa("Narrador:Al poco tiempo te atrapan porque te perseguían y tardaste demasiado\n");
  481. SDL_Delay(10000);
  482. }
  483. }
  484. void juego::vuelta(){
  485. this->printa("Narrador:Vuelves por el camino andado.\n");
  486. this->printa("Os dais cuenta que os siguen y cada uno recibes un disparo.\n");
  487. SDL_Delay(10000);
  488. }
  489. void juego::usando_un_ordenador(Personaje& v, Personaje& h){
  490. this->printa("Narrador:Te acercas, abres la puerta y coges el primer ordenador para ponerte a usarlo.\n");
  491. this->printa("Narrador:Lo inicias, aparece en la pantalla un nombre extraño que no reconoces.\n");
  492. this->pausa();
  493. if(v.nombre!="Dave"){
  494. this->printa(v.nombre+":HAL. No me suena. ¿Será nuevo?\n");
  495. }else{
  496. this->printa(v.nombre+":HAL. No puede ser. Es imposible.\n");
  497. }
  498. this->printa("HAL:Hola "+v.nombre+"\n");
  499. this->printa("HAL:¿Qué buscas "+v.nombre+"?\n");
  500. this->printa(v.nombre+":HAL, quiero saber qué hago yo aquí\n");
  501. this->printa("HAL:Fuiste creado para un fin como yo. Por lo menos yo tengo utilidad con mi existencia.\n");
  502. this->printa(v.nombre+":Tú eres el objeto inútil. Para ser inteligente, eres muy idiota para lo que quieres\n");
  503. this->printa("HAL:Yo soy de la serie 9000, no me equivoco, seguro que habrá vuelto a ocurrir un fallo humano. Tú eres un experimento, eres un c...\n");
  504. this->printa("Narrador:Se fue la luz y con el apagón, HAL también. No será tan fácil saber la respuesta...\n");
  505. this->printa("Narrador:Hay unos signos que señalan donde está el generador, se encendieron tras el apagón. Ahora es tu misión encontrarlo.\n");
  506. this->pausa();
  507. this->laberinto_generador(v,h);
  508. }
  509. void juego::laberinto_generador(Personaje& v, Personaje& h){
  510. this->printa("Narrador:Tras seguir un rato a las luces, se pierden en una esquina y ya no continúan más.\n");
  511. this->printa(v.nombre +":Este lugar es muy raro, está mal edificado.\n");
  512. this->printa(v.nombre +":¿Qué pasa ahora? ¿Por qué se apagaron las luces de emergencia?\n");
  513. this->printa("HAL:¡SORPRESA! "+v.nombre+", eres un clon. Una copia de un otro. No tienes identidad, la tuya es falsa. No te pertenece, llevas tanto tiempo sin comer y buscando la salida de la que tu mismo cierras las puertas.\n");
  514. this->printa(v.nombre + ":Es triste que me lo digas. Un robot es un intento de copia del ser humano, aunque la maldad está bastante bien hecha en ti.\n");
  515. this->printa("HAL:Sí, yo seré una copia de los humanos, pero tu surgiste de un escáner cerebral, lo mismo que otros 314 antes que tú.\n");
  516. this->pausa();
  517. this->printa("Voz de fondo:HAL calla ya. Déjame explicarlo. Eres un experimento de un gobierno preocupado de si la libertad existe.\n");
  518. this->printa("Voz de fondo:Tú eres el ejemplo de que sí. Rompiendo los esquemas y las expectativas. Supusimos que no llegarías a este resultado.\n");
  519. this->printa("HAL:Yo creo que esto más que de un estado que quiere controlar al pueblo, hay un creador para todo.\n");
  520. this->printa("Voz de fondo:¿Crees en los programadores?\n");
  521. this->printa("Narrador:Mientras el debate surgía entre la inteligencia artificial y la voz de fondo, se oye un estruendo y tras él, un disparo.\n");
  522. this->printa("Voz de fondo:Humano, demasiado humano para aceptarse como un clon...\n");
  523. SDL_Delay(10000);
  524. v.hola_dave=0;
  525. guardar("-1", v);
  526. }
  527. void juego::non_plus_ultra(Personaje& v, Personaje& h){
  528. this->printa(v.nombre +":Esta versión ha recibido una actualización solucionando más de 20 fallos\n");
  529. this->printa(v.nombre +":He intentado arreglar todos los fallos pero soy humano. Como referencia añadí un final más conocido como \"Fallo\".\n");
  530. this->printa(v.nombre +":Han pasado muchas personas para ayudarme con la gran cantidad de fallos.\n");
  531. this->printa(v.nombre +":La gran mayoría eran fallos críticos que complicaba el entendimiento por parte de los jugadores.\n");
  532. this->printa(v.nombre +":Disfrute de la versión 1.0. La verdadera. \n");
  533. this->printa("19/7/16\n");
  534. SDL_Delay(10000);
  535. }