123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- /*
- *
- * 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 <iostream>
- #include <string>
- #include "metodos.h"
- #include "SDL_ttf.h"
- #include "SDL.h"
- using namespace std;
- int main (){
- //Iniciar pantalla (NCURSES)
- //Comprueba si se inicia SDL
- if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
- {
- printf( "No se inició SDL. %s\n", SDL_GetError() );
- }
- else
- {
- //Crea una ventana
- SDL_Window * gWindow = SDL_CreateWindow( "DQM", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 700, 480, SDL_WINDOW_RESIZABLE);
- //Comprueba la creación de la ventana
- if( gWindow == NULL )
- {
- printf( "La ventana no se inició. %s\n", SDL_GetError() );
- }
- else
- {
- //Crea el render
- SDL_Renderer * gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_PRESENTVSYNC);
- //Comprueba la creación de la ventana
- if( gRenderer==NULL ){
- printf( "El render no se inició. %s\n", SDL_GetError() );
- }
- TTF_Init();
- if(TTF_Init()==-1) {
- printf("TTF_Init: %s\n", TTF_GetError());
- }
- TTF_Font * gFont = TTF_OpenFont( "LiberationMono-Regular.ttf", 13 );
- if(!gFont) {
- printf("TTF_OpenFont: %s\n", TTF_GetError());
- }else{
- juego juego;
- juego.ventana=gWindow;
- juego.render=gRenderer;
- juego.font=gFont;
- juego.inicio();
- }
- }
- }
- SDL_Quit();
- }
- void juego::inicio(){
- printa("Bienvenido a Luces de 1984\n");//0
- printa("un juego creado por Alkeon.\n");
- //Iniciando personajes
- Personaje molde(0,30,0,0,1);
- Personaje Winston(0,20,0,0,0);
- //Final 1
- Winston.psicosis=1;
- //Final 2
- Winston.soledad=1;
- //Final 3
- Winston.esperpento=1;
- //Final 4
- Winston.hola_dave=1;
- Winston.vida=200;
- Winston.ataque=20;
- molde.vida=80;
- molde.ataque=4;
- //Menú
- this->menu(Winston,molde);
- }
- void juego::printa(std::string linea){
- for(int i=16;i>0;i--){
- this->texto[i]=this->texto[i-1];
- }
- this->texto[0]=linea;
- std::string texto2="";
- for(int e=16;e>=0;e--){
- texto2+=this->texto[e];
- }
- SDL_Surface * textSurface = TTF_RenderUTF8_Blended_Wrapped( this->font, texto2.c_str(), this->blanco,660);
- SDL_Rect renderQuad;
- renderQuad.x = 0;
- renderQuad.y = 0;
- renderQuad.w = textSurface->w;
- renderQuad.h = textSurface->h;
- SDL_Texture * mTexture = SDL_CreateTextureFromSurface( this->render, textSurface);
- SDL_SetRenderDrawColor( this->render, 0, 0, 0, 255 );
- SDL_RenderClear( this->render );
- SDL_RenderCopy( this->render, mTexture, NULL, &renderQuad);
- SDL_RenderPresent( this->render );
- SDL_Delay(200);
- }
- void juego::pausa(){
- printa("Pulsa la tecla 'Enter'.\n");
- SDL_Event e;
- bool continua=true;
- while( SDL_WaitEvent( &e ) != 0 && continua){
- if( e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_RETURN ){
- continua=false;
- }
- }
- }
- void juego::menu(Personaje& v, Personaje& h){
- printa("En este menú puedes escoger distintos puntos:\n");
- printa("1.- Guía sencilla y recomendaciones\n");
- printa("2.- Comenzar el juego\n");
- printa("3.- Cargar juego\n");
- printa("4.- Créditos\n");
- printa("5.- Salir\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){
- this->tutorial(); menu(v,h);
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_2){
- this->escoger_opciones(v,h);
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_3){
- vista_previa_partida("save.dat");
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_4){
- this->creditos(v); menu(v,h);
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_5){
- continua=false;
- }
- }
- if(e.type == SDL_QUIT){
- continua=false;
- }
- }
-
- }
-
- }
- void juego::tutorial(){
- printa("Narrador:Buenas soy el narrador de esta historia.\n");
- printa("Alkeon me tiene (y no me paga) para explicar todo el juego.\n");
- printa("Como veis al intervenir un personaje ocurre como en el teatro escrito.\n");
- printa("Si sigo hablando no se repite. Solo se espera a que cambie de personaje.\n");
- printa("Como consejos, no escribas letras si te piden números y este juego es dinámico.\n");
- printa("Cada vez que se puede, es modificado de ahí las actualizaciones.\n");
- printa("Si tuvieras alguna queja, se las mandas a Alkeon.\n");
- printa("¿No sabes cómo? Recuerda su página es https://autistici.org/alkeon\n\n");
- }
- void juego::escoger_opciones(Personaje& v, Personaje& h){
- printa("Antes de empezar la partida puedes escoger ciertas opciones que te hacen la experiencia de juego más personalizable y compatible con tu modo de juego.\n");
- if(this->guardados_automaticos!=2){
- this->opcion_guardado(v,h);
- }
- this->opcion_nombre(v,h);
- this->preguntas_principales(v,h);
- }
- void juego::opcion_guardado(Personaje& v, Personaje& h){
-
- printa("¿Prefieres guardados automáticos?\n");
- printa("1.- Sí\n");
- printa("2.- 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){
- this->guardados_automaticos=1;
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_2){
- this->guardados_automaticos=2;
- continua=false;
- }
- }
- if(e.type == SDL_QUIT){
- continua=false;
- }
- }
-
- }
- }
- void juego::opcion_nombre(Personaje& v, Personaje& h){
- printa("Antes de empezar puedes escoger otro nombre distinto del predeterminado\n");
- printa("Te recomendamos por la historia y el tema principal que mantengas Winston\n");
- printa("Como referencia a uno de los finales puedes usar el nombre de Dave\n");
- printa("1.- Dejar el nombre de Winston\n");
- printa("2.- Quiero llamarme Dave\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){
- v.nombre="Winston";
- continua=false;
- }
- if(e.key.keysym.sym == SDLK_2){
- v.nombre="Dave";
- continua=false;
- }
- }
- if(e.type == SDL_QUIT){
- continua=false;
- }
- }
-
- }
- }
- void juego::creditos(Personaje& v){
- printa("La licencia de este juego es GNU GPL versión 3.\n");
- printa("Puedes saber más sobre este juego en https://autistici.org/alkeon/\n");
- printa("Dedicatoria:\n");
- printa("Por los que se van, por los que se quedan.\n");
- printa("A todos ellos, gracias.\n\n");
- }
|