Como algunos saben, he hecho un juego en C de dos autos que se pelean, en C, y lo he terminado. Sin embargo, ahora quiero hacerlo en C++ para aprender a manejar las clases.
Sin embargo, por mas que lea y lea sobre clases, no entiendo como hacerlas funcionar. Solo pido que me expliquen como harian una clase para elegir entre tres opciones con las flechas del teclado y enter. Ademas, con ver el ejemplo para mi propio codigo supongo que voy a entender como funcionan.
Dejo el Code>
Cita:
Aca esta el Codigo. Yo estaba pensando en una variable que sea 0, 1 o 2. En el sector private que este esa variable, en el sector public que este la funcion para cambiar la variable de opcion, y para detectar las teclas y detectar opcion elegida. entonces, si enter es presionado cuando la opcion es 0, se inicia nueva partida. cuando es 1, se inician las instrucciones y cuando es 2 sale del juego. #include "SDL.h"
const int WINDOW_WIDTH = 1000;//altura de ventana
const int WINDOW_HEIGHT = 700;//ancho de ventana
const char* WINDOW_TITLE = "Flying Fighting Cars";//titulo de ventana
SDL_Surface *screen, *pantalla, *nueva_partida, *instrucciones, *salir, *logo;
SDL_Event event;
SDL_Rect pantallar, nueva_partidar, instruccionesr, salirr, logor;
bool superwhile = true;
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0,SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
SDL_WM_SetCaption( WINDOW_TITLE, 0 );
pantalla = SDL_LoadBMP("Pantalla.bmp");
nueva_partida = SDL_LoadBMP("NuevaPartida.bmp");
instrucciones = SDL_LoadBMP("Instrucciones.bmp");
salir = SDL_LoadBMP("Salir.bmp");
logo = SDL_LoadBMP("Logo.bmp");
while(superwhile)
{
pantallar.x = 0;
pantallar.y = 0;
pantallar.w = pantalla->w;
pantallar.h = pantalla->h;
SDL_BlitSurface(pantalla, NULL, screen, &pantallar);
nueva_partidar.x = 100;
nueva_partidar.y = 450;
nueva_partidar.w = nueva_partida->w;
nueva_partidar.h = nueva_partida->h;
SDL_SetColorKey(nueva_partida,SDL_SRCCOLORKEY|SDL_ RLEACCEL,SDL_MapRGB(nueva_partida->format,255,255,255));
SDL_BlitSurface(nueva_partida, NULL, screen, &nueva_partidar);
instruccionesr.x = 100;
instruccionesr.y = 500;
instruccionesr.w = instrucciones->w;
instruccionesr.h = instrucciones->h;
SDL_SetColorKey(instrucciones,SDL_SRCCOLORKEY|SDL_ RLEACCEL,SDL_MapRGB(instrucciones->format,255,255,255));
SDL_BlitSurface(instrucciones, NULL, screen, &instruccionesr);
salirr.x = 100;
salirr.y = 550;
salirr.w = salir->w;
salirr.h = salir->h;
SDL_SetColorKey(salir,SDL_SRCCOLORKEY|SDL_RLEACCEL ,SDL_MapRGB(salir->format,255,255,255));
SDL_BlitSurface(salir, NULL, screen, &salirr);
logor.x = 220;
logor.y = 200;
logor.w = logo->w;
logor.h = logo->h;
SDL_SetColorKey(logo,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(logo->format,255,255,255));
SDL_BlitSurface(logo, NULL, screen, &logor);
SDL_Flip(screen);
SDL_FreeSurface(screen);
while(SDL_PollEvent(&event))
{
if ( event.type == SDL_KEYDOWN || event.type == SDL_QUIT)
{
superwhile = false;
}
}
}
SDL_Quit();
}
const int WINDOW_WIDTH = 1000;//altura de ventana
const int WINDOW_HEIGHT = 700;//ancho de ventana
const char* WINDOW_TITLE = "Flying Fighting Cars";//titulo de ventana
SDL_Surface *screen, *pantalla, *nueva_partida, *instrucciones, *salir, *logo;
SDL_Event event;
SDL_Rect pantallar, nueva_partidar, instruccionesr, salirr, logor;
bool superwhile = true;
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0,SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
SDL_WM_SetCaption( WINDOW_TITLE, 0 );
pantalla = SDL_LoadBMP("Pantalla.bmp");
nueva_partida = SDL_LoadBMP("NuevaPartida.bmp");
instrucciones = SDL_LoadBMP("Instrucciones.bmp");
salir = SDL_LoadBMP("Salir.bmp");
logo = SDL_LoadBMP("Logo.bmp");
while(superwhile)
{
pantallar.x = 0;
pantallar.y = 0;
pantallar.w = pantalla->w;
pantallar.h = pantalla->h;
SDL_BlitSurface(pantalla, NULL, screen, &pantallar);
nueva_partidar.x = 100;
nueva_partidar.y = 450;
nueva_partidar.w = nueva_partida->w;
nueva_partidar.h = nueva_partida->h;
SDL_SetColorKey(nueva_partida,SDL_SRCCOLORKEY|SDL_ RLEACCEL,SDL_MapRGB(nueva_partida->format,255,255,255));
SDL_BlitSurface(nueva_partida, NULL, screen, &nueva_partidar);
instruccionesr.x = 100;
instruccionesr.y = 500;
instruccionesr.w = instrucciones->w;
instruccionesr.h = instrucciones->h;
SDL_SetColorKey(instrucciones,SDL_SRCCOLORKEY|SDL_ RLEACCEL,SDL_MapRGB(instrucciones->format,255,255,255));
SDL_BlitSurface(instrucciones, NULL, screen, &instruccionesr);
salirr.x = 100;
salirr.y = 550;
salirr.w = salir->w;
salirr.h = salir->h;
SDL_SetColorKey(salir,SDL_SRCCOLORKEY|SDL_RLEACCEL ,SDL_MapRGB(salir->format,255,255,255));
SDL_BlitSurface(salir, NULL, screen, &salirr);
logor.x = 220;
logor.y = 200;
logor.w = logo->w;
logor.h = logo->h;
SDL_SetColorKey(logo,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(logo->format,255,255,255));
SDL_BlitSurface(logo, NULL, screen, &logor);
SDL_Flip(screen);
SDL_FreeSurface(screen);
while(SDL_PollEvent(&event))
{
if ( event.type == SDL_KEYDOWN || event.type == SDL_QUIT)
{
superwhile = false;
}
}
}
SDL_Quit();
}
Por favor, me dais una mano.
Gracias, saludos!