//bool CGame::esLimitePantalla(Nave *objeto, int bandera) //{ // if (objeto->obtenerX() <= 0 || objeto->obtenerX() > (WIDTH_SCREEN - objeto->obtenerW() )) // // return true; // // if (objeto->obtenerY() <= 0 || objeto->obtenerY() > (HEIGHT_SCREEN - objeto->obtenerH())) // // return true; // // return false; //} void CGame::MoverEnemigo(){ // if(!esLimitePantalla(enemigo,BORDE_DERECHO)) //enemigo->Mover(1,50); /* switch(enemigo->ObtenerStepActual()){ case 0: if(!enemigo->IsRunningAnimacion()) //enemigo->IncrementarStep(); enemigo->Mover(1,WIDTH_SCREEN-enemigo->obtenerW()); break; case 1: enemigo->IncrementarStep(); break; case 2: if (!enemigo->IsRunningAnimacion()) enemigo->Mover(-1,WIDTH_SCREEN-enemigo->obtenerW()); //enemigo->IncrementarSenemigo->Mover(-1,150); // enemigo->IncrementarStep(); break; case 3: enemigo->IncrementarStep(); break; } */ //enemigo->ponerEn(enemigoParabola*enemigoParabola,enemigoParabola); //enemigoParabola+=0.1f; //copia sw------------- for (int i = 0; i<10; i++) switch (enemigoArreglo[i]->ObtenerStepActual()){ case 0: if (!enemigoArreglo[i]->IsRunningAnacion()) //enemigoArreglo[i]->IncrementarStep(); enemigoArreglo[i]->Mover(5, WIDTH_SCREEN ); if (esLimitePantalla(enemigoArreglo[i], BORDE_DERECHO)) //enemigoArreglo[i]->Mover(5, WIDTH_SCREEN - enemigoArreglo[i]->obtenerW()); enemigoArreglo[i]->TerminacionAnimacion(); //enemigoArreglo[i]->Mover(-5, -640); break; case 1: enemigoArreglo[i]->IncrementarStep(); break; case 2: if (!enemigoArreglo[i]->IsRunningAnacion()) enemigoArreglo[i]->Mover(-5, WIDTH_SCREEN); if (esLimitePantalla(enemigoArreglo[i], BORDE_IZQUIERDO)) enemigoArreglo[i]->TerminacionAnimacion(); break; case 3: enemigoArreglo[i]->IncrementarStep(); break; } }
bool CGame::Start() { // Esta variable nos ayudara a controlar la salida del juego... //bool bandera = false; int salirJuego = false; while (salirJuego == false) { //Maquina de estados switch (estado) { case Estado::ESTADO_INICIANDO: Iniciando(); estado = ESTADO_MENU; //printf("\nEstado Iniciando"); break; //{ // // /* nave = SDL_LoadBMP("../Data/Eddie.bmp"); // SDL_Rect Fuente; // Fuente.x = 90; // Fuente.y = 152; // Fuente.w = 242; // Fuente.h = 76; // SDL_Rect destino; // destino.x = 100; // destino.y = 100; // destino.w = 100; // destino.h = 100; // SDL_BlitSurface(nave, &Fuente, screen, &destino); // SDL_BlitSurface(nave, NULL, screen, NULL); // SDL_FreeSurface(nave);*/ //} case Estado::ESTADO_MENU: menu->Pintar(); texto->Pintar(MODULO_TEXTO_TITULO, 250, 30); texto->Pintar(MODULO_TEXTO_NOMBRE, 300, 400); Menu(); //titulos->Pintar(); //SDL_FillRect(screen, NULL, 0000000); SDL_Flip(screen); keys = SDL_GetKeyState(NULL); //botonInicio->Pintar(); if (keys[SDLK_UP]) { estado = ESTADO_JUGANDO; } //botonInicio->Pintar(); if (keys[SDLK_DOWN]){ //btnSalir= new Nave(screen,"../Data/btnSalir.bmp",0,0,1); //botonSalir->Pintar(); estado = ESTADO_FINALIZADO; //salirJuego = true; } break; /*if (keys[SDLK_UP]) { nave->PintarModulo(0, 200, 100); } if (keys[SDLK_RIGHT]) { nave->PintarModulo(0, 400, 200); } if (keys[SDLK_LEFT]) { nave->PintarModulo(0, 0, 200); }*/ /*if (bandera==false) { estado = ESTADO_JUGANDO; printf("\nEstado Menu"); } else { estado = ESTADO_TERMINANDO; printf("\nEstado Menu"); }*/ case Estado::ESTADO_JUGANDO: //SDL_FillRect(screen, NULL, 0x000000); SDL_FillRect(screen, NULL, 0x000000); keys = SDL_GetKeyState(NULL); for (int i = 0; i<10; i++) enemigoArreglo[i]->Actualizar(); MoverEnemigo(); if (keys[SDLK_RIGHT] && !esLimitePantalla(nave, BORDE_DERECHO)) { //nave->PintarModulo(0, 0, 0, 64, 64); nave->Mover(7); if (esLimitePantalla(nave, BORDE_DERECHO)) { nave->MoverIzquierda(7); } /*Iniciando(); estado = ESTADO_MENU;*/ } if (keys[SDLK_LEFT] && !esLimitePantalla(nave, BORDE_IZQUIERDO)) { //nave->PintarModulo(0, 0, 0, 64, 64); nave->MoverIzquierda(7); if (esLimitePantalla(nave, BORDE_IZQUIERDO)) { nave->Mover(7); } /*Iniciando(); estado = ESTADO_MENU;*/ } if (keys[SDLK_UP] && !esLimitePantalla(nave, BORDE_SUPERIOR)) { nave->MoverArriba(7); if (esLimitePantalla(nave, BORDE_SUPERIOR)) { nave->MoverAbajo(7); } } if (keys[SDLK_DOWN] && !esLimitePantalla(nave, BORDE_INFERIOR)) { nave->MoverAbajo(7); if (esLimitePantalla(nave, BORDE_INFERIOR)) { nave->MoverArriba(7); } } fondo->Pintar(); nave->Pintar(); //MoverEnemigo(); for (int i = 0; i<10; i++) enemigoArreglo[i]->Pintar(); MoverEnemigo(); nave->Pintar(); break; case Estado::ESTADO_FINALIZADO: /*estado = ESTADO_MENU; printf("\nEstado Finalizado"); bandera = true;*/ break; case Estado::ESTADO_TERMINANDO: /*printf("\nEstado Terminando"); getchar();*/ salirJuego = true; break; }; while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { salirJuego = true; } if (event.type == SDL_KEYDOWN) {} } SDL_Flip(screen);// imprimir en pantalla la variable screen frames++; tiempoFrameFinal = SDL_GetTicks(); while (tiempoFrameFinal<(tiempoFrameInicio + FPS_DELAY)){ tiempoFrameFinal = SDL_GetTicks(); SDL_Delay(1); } //printf("Frame:%d Tiempo:%d TiempoPorFrame:%d FPS:%f\n", frames, tiempoFrameInicio, tiempoFrameFinal - tiempoFrameInicio, 1000.0f / (float)(tiempoFrameFinal - tiempoFrameInicio)); tiempoFrameInicio = tiempoFrameFinal; } return true; }
bool CGame::Start() { // Esta variable nos ayudara a controlar la salida del juego... int salirJuego = false; while (salirJuego == false){ //Maquina de estados switch(estado){ case Estado::ESTADO_INICIANDO: //INICIALIZAR //switch(estado){ Iniciando(); estado=ESTADO_MENU; break; /* nave = SDL_LoadBMP("../Data/MiNave.bmp"); SDL_Rect Fuente; Fuente.x =90; Fuente.y =152; Fuente.w =242; Fuente.h =76; SDL_Rect destino; destino.x =100; destino.y =100; destino.w =100; destino.h =100; SDL_BlitSurface(nave, &Fuente, screen, &destino); SDL_BlitSurface(nave, NULL, screen, NULL); SDL_FreeSurface(nave); */ case Estado::ESTADO_MENU: //MENU ////nave->PintarModulo (0,0,0,64,64); SDL_FillRect(screen, NULL, 0x000000); keys = SDL_GetKeyState(NULL); for (int i =0; i < 10; i++) enemigoArreglo[i] -> Actualizar(); MoverEnemigo(); if(keys[SDLK_RIGHT]&& !esLimitePantalla(nave,BORDE_DERECHO)){ //nave->PintarModulo(0,100,100); nave->MoverDerecha(1); ///Iniciando(); ///estado=ESTADO_MENU; } nave->Pintar(); for (int i =0; i < 10; i++) enemigoArreglo[i] -> Pintar(); break; case Estado::ESTADO_JUGANDO: //JUGAR break; case Estado::ESTADO_TERMINADO: //TERMINAR break; case Estado::ESTADO_FINALIZADO: //SALIR salirJuego = true; break; }; while (SDL_PollEvent(&event))//aqui SDL creara una lista de eventos ocurr { if (event.type == SDL_QUIT){salirJuego =true;}//si se detecta una if (event.type == SDL_KEYDOWN){} } SDL_Flip(screen); //imprime en pantalla variable screen frames++; tiempoFrameFinal = SDL_GetTicks(); while(tiempoFrameFinal < (tiempoFrameInicio + FPS_DELAY)) tiempoFrameFinal = SDL_GetTicks(); printf("Frame:%d Tiempo:%d TiempoPorFrame:%d FPS:%f\n", frames,tiempoFrameInicio,tiempoFrameFinal-tiempoFrameInicio,1000.0f / (float)(tiempoFrameFinal-tiempoFrameInicio)); tiempoFrameInicio = tiempoFrameFinal; } return true; }