Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - @XSStringManolo

#181
Puedes confirmarme la siguiente afirmación?
Buscando el segundo "es", este no se encuetra debido a que find me retorna el indice de el primer caracter de "es", y al volver a usar found que ahora contiene el indice retornado por find de "es" y sumarle 1, find empieza a buscar "es" en la 's'. Por ese motivo no encuentra "es" en la cadena.
Estoy en lo correcto?

Código (cpp) [Seleccionar]

string MiString{"Este es mi string"};

void BuscarEnString(string MiString)
{
   size_t found = MiString.find("es");
   if (found != string::npos)
   {
         cout << "\" es\" encontrado en la posicion: " <<found <<endl;
   }

   found = MiString.find("es", found+1);
   if  (found != string::npos)
   {
         cout << "es encontrado en la posicion: " << found << endl;
   }
}



Estoy entendiendo como funciona el metodo find?








#182
1- Dots and dashes - SSPU

2- Roxanne - ThePolice

3- La del pirata cojo - Joaquin Sabina

4- Hey there Delilah - Plain White T's

5- Locura transitoria - Extremoduro
#183
Me preguntaba si podria postear un plaintext de la hostia en el foro de C++.
No ocupara nada en memoria al ser un .txt sin fotos ni fuentes ni nada. Pero si será largo . Entomces no se si afectaria al foro. Si hay limites de caracteres y esas dudas.
En ese caso si seria aceptable pegar un trozo minusculo de pocos caracteres y un link al archivo?
Prefiero pegarlo directamente al foro mas que nada por comodidad de los usuarios del foro.
Si no, lo subo a github o lo que creais oportuno. Perdonar por las molestias.

El contenido del txt son apuntes tipo apuntes de clase pero con algo mas de contenido y explicación sobre libros, documentos y tutoriales en ingles. Como escribir me ayuda a aprender y hay mucha gente que no habla ingles lo fui traduciendo todo a español, nombre de variables funciones tambien en español. Estoy seguro que muchos le gustara un documento asi tan completo y conciso.
Aún no lo termine que me quedan un par de libros por leer. Pero no le queda mucho.
#184
Software / Live cd de sistema W7 en C://?
9 Mayo 2019, 14:08 PM
Que herramienta me aconsejan para hacer un live cd del sistema actual que tengo instalado en C://?
E estado modificando un Window 7 y quiero bootearlo por usb como un live cd. Para poder usar el sistema en otros equipos sin la necesidad de instalarlo. Asi podre usar todas mis herramientas en cualquier equipo publico con sistemas antiguos.
No tengo muy claro que software hace exactamente eso ya que hay cientos de programas para backups y live cds que lo unico que hacen es crear un instalador o backups no booteables.

Tengo el HBCD quizas alguna de estas herramientas me sirva?
#185
Estoy aprendiendo a usar SDL.
Escribi un programa simple con la idea de que muestre 3 imagenes en pantalla.
La idea es que se muestre la primera imagen y tras unos segundos se muestre la siguiente.
Quiero hacer un juego simple sin mucha funcionalidad para ir asimilamdo conceptos e ir aprendiendo el uso de SDL.

Quiero hacer como la tipica pantalla de inicio de juegos como pokemon.
La primera imagen es el titulo del juego.
Tras unos segundos la imagen cambia y se suele mostrar un video introductorio.
En mi caso de momento es la imagen2.

La imagen3 seria la imagen del menu principal. Mi idea es poner rectangulos sobre la superficie de cada
opcion del menu. Por ejemplo Nueva Partida. Y que al hacer click en el rectangulo se
llame a una funcion BucleDelJuego.



Tengo 1 error que no entiendo muy bien por que sucede.
Se me esta complicando aprender debido a que encuentro poca documentacion actualizada
para SDL2, me voy guiando por libros antiguos intentando actualizarlos mirando las cabeceras en la carpeta includes de SDL2 y siguiendo los ejemplos de Lazy Foo que son los unicos que me compilan sin
modificarlos.

main.cpp
Código (cpp) [Seleccionar]
         
#include <SDL.h>
#include <iostream>
#include <string>

const int ANCHO_DE_VENTANA = 640;
const int ALTO_DE_VENTANA = 480;

enum SuperficiesDeImagenes
{
imagen1 = 1,
imagen2,
imagen3,
numeroDeImagenes
};


//Funcion para cargar una imagen:
SDL_Surface* cargarSuperficie(std::string path);

//Ventana sobre la que renderizar:
SDL_Window* gVentana = NULL;

//Superficie sobre la ventana:
SDL_Surface* gScreenSurface = NULL;

//Imagen mostrada actualmente:
SDL_Surface* gCurrentSurface = NULL;

//Imagenes que corresponden a las superficies
SDL_Surface* gSuperficiesDeImagenes[numeroDeImagenes];

bool Inicializar()
{
bool Inicializado = true;

//Inicializar SDL:
if (SDL_Init(SDL_INIT_VIDEO) <0)
{
std::cout << "Error inicializando  -> " << SDL_GetError() << std::endl;
Inicializado = false;
}

else
{
//Crear Ventana:
gVentana = SDL_CreateWindow("Titulo de la ventana", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, ANCHO_DE_VENTANA, ALTO_DE_VENTANA, SDL_WINDOW_SHOWN);

//Si el puntero a ventana esta vacio: (no se creo) muestra error.
if (gVentana == NULL)
{
std::cout << "Error al crear la ventana -> " << SDL_GetError() << std::endl;
Inicializado = false;
}

//Si la ventana está en el puntero:
else
{
//Obtener superficie de la ventana:
gScreenSurface = SDL_GetWindowSurface(gVentana);
}
}

return Inicializado;
}


bool CargarImagenes()
{
bool ImagenFueCargada = true;

//Cargar primer imagen:
gSuperficiesDeImagenes[imagen1] = cargarSuperficie("nombredeimagen1.bpm");
if (gSuperficiesDeImagenes[imagen1] = NULL)
{
std::cout << "Error cargando la primer imagen" << SDL_GetError() << std::endl;
ImagenFueCargada = false;
}

//Cargar segunda imagen:
gSuperficiesDeImagenes[imagen2] = cargarSuperficie("nombredeimagen2.bpm");
if (gSuperficiesDeImagenes[imagen2] = NULL)
{
std::cout << "Error cargando la segunda imagen" << SDL_GetError() << std::endl;
ImagenFueCargada = false;
}

//Cargar tercer imagen:
gSuperficiesDeImagenes[imagen3] = cargarSuperficie("nombredeimagen3.bpm");
if (gSuperficiesDeImagenes[imagen3] = NULL)
{
std::cout << "Error cargando la tercer imagen" << SDL_GetError() << std::endl;
ImagenFueCargada = false;
}

return ImagenFueCargada;
}


void Cerrar()
{

//Eliminar superficies de la memoria;
for (int i = 0; i < (numeroDeImagenes-1); i++)
{
SDL_FreeSurface( SuperficiesDeImagenes[ i ] );
SuperficiesDeImagenes[i] = NULL;
}

//Eliminar la Ventana:
SDL_DestroyWindow(gVentana);
gVentana = NULL;

//Cerrar SDL
SDL_Quit();
}

//Funcion cargar la superficie
SDL_Surface* cargarSuperficie(std::string path)
{
//Cargar imagen en ruta especifica
SDL_Surface* superficieCargada = SDL_LoadBMP( path.c_str() );

if (superficieCargada = NULL)
{
std::cout << "Error al cargar la superficie " << path.c_str() <<" Error:" << SDL_GetError() << std::endl;
}

return superficieCargada;
}


int main ( int argc, char* args[])
{
//Iniciar SDL y crear la ventana:
//Si la funcion Inicializar devuelve "false" = error:
if (!Inicializar())
{
std::cout << "No se pudo Inicializar" << std::endl;
}

else
{
if (!CargarImagenes())
{
std::cout << "No se pudo Cargar Imagenes" << std::endl;
}

else //Si todo ha funcionado:
{
bool salirDeBucle = false;

//Variable para obtener entrada:
SDL_Event e;

//Imagen por defecto o primer imagen a cargar.
gCurrentSurface = gSuperficiesDeImagenes[imagen1];

while (salirDeBucle == false)
{
//Procesa cola de eventos hasta que no queden:
while ( SDL_PollEvent(&e) !=0 )
{

//Si el usuario presiona la X de cerrar ventana
if(e.type == SDL_QUIT)
{
salirDeBucle = true;
}
}
//Aplica la imagen actual:
SDL_BlitSurface(gCurrentSurface, NULL, gScreenSurface, NULL);

    //Actualiza la superficie que pertenece a la ventana gVentana:
SDL_UpdateWindowSurface(gVentana);

//Pausa la imagen actual X segundos
SDL_Delay(7000);

//Carga la imagen2 en la superficie actual:
gCurrentSurface = gSuperficiesDeImagenes[imagen2];

SDL_BlitSurface(gCurrentSurface, NULL, gScreenSurface, NULL);
SDL_UpdateWindowSurface(gVentana);
SDL_Delay(7000);

//Carga la imagen3 en la superficie actual:
gCurrentSurface = gSuperficiesDeImagenes[imagen3];

SDL_BlitSurface(gCurrentSurface, NULL, gScreenSurface, NULL);
SDL_UpdateWindowSurface(gVentana);
SDL_Delay(7000);



}
}
}

Cerrar();

return 0;
}



Error de compilacion:
||=== Build: Debug in SDL2TESTLIBS (compiler: GNU GCC Compiler) ===|
|In function 'bool CargarImagenes()':| 73|warning: suggest parentheses around assignment used as truth value [-Wparentheses]
81|warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
89|warning: suggest parentheses around assignment used as truth value [-Wparentheses]|
|In function 'void Cerrar()':|
105|error: expected primary-expression before '[' token|
106|error: expected unqualified-id before '[' token|
|In function 'SDL_Surface* cargarSuperficie(std::__cxx11::string)':|
123|warning: suggest parentheses around assignment used as truth value [-Wparentheses]| ||=== Build failed: 2 error(s), 4 warning(s) (0 minute(s), 0 second(s)) ===|

Agradezco referemcias a documemtacion actualizada y cualquier ayuda con el codigo