Welcome to Stratos!
//--Inteligencia artificial de CPU if(eJuego.modo == MOD_JUGVSCPU)//Si estamos en modo contra cpu { if(sBola.y > sPaddle2.y + bPaddle->h && sBola.x + bBola->w > SCREEN_W/3) { sPaddle2.vy = 2; } if(sBola.y < sPaddle2.y && sBola.x + bBola->w > SCREEN_W/3) { sPaddle2.vy = -2; } if(sBola.y > sPaddle2.y && sBola.y < sPaddle2.y + bPaddle->h && sBola.x + bBola->w > SCREEN_W/3) { sPaddle2.vy = 0; } }
if(eJuego.modo == MOD_JUGVSCPU)//Si estamos en modo contra cpu { if((sBola.y > (sPaddle2.y + bPaddle->h)) && (sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = 2; } else if((sBola.y < sPaddle2.y) && ((sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = -2; } else if((sBola.y > sPaddle2.y) && (sBola.y < (sPaddle2.y + bPaddle->h)) && ((sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = 0; } }
void logica(){ if(eJuego.j1puntos == 10 || eJuego.j2puntos == 10) { if(key[KEY_ENTER])eJuego.estado = EST_TERMINANDO; return; } if(eJuego.estado == EST_ESPERANDO_RESPUESTA) { if(key[KEY_SPACE]) { sBola.vx = -4; sBola.vy = 0; eJuego.estado = EST_JUGANDO; } } if(eJuego.estado == EST_PUNTO_J1) { if(key[KEY_ENTER]) { eJuego.estado = EST_JUGANDO; sBola.vx = -4; sBola.vy = 0; } } if(eJuego.estado == EST_PUNTO_J2) { if(key[KEY_ENTER]) { eJuego.estado = EST_JUGANDO; sBola.vx = 4; sBola.vy = 0; } } //Recojer pulsaciones de teclado y ajustar la velocidad segun cada caso if(key[KEY_W]) sPaddle1.vy = -2; if(key[KEY_S]) sPaddle1.vy = 2; if(eJuego.modo == MOD_DOSJUG) { if(key[KEY_O]) sPaddle2.vy = -2; if(key[KEY_L]) sPaddle2.vy = 2; } //INTELIGENCIA ARTIFICIAL DE CPU if(eJuego.modo == MOD_JUGVSCPU)//Si estamos en modo contra cpu { if((sBola.y > (sPaddle2.y + bPaddle->h)) && ((sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = 2; } else if((sBola.y < sPaddle2.y) && ((sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = -2; } else if((sBola.y > sPaddle2.y) && (sBola.y < (sPaddle2.y + bPaddle->h)) && ((sBola.x + bBola->w) > SCREEN_W/3)) { sPaddle2.vy = 0; } } //Crear Movimiento //-Calcular vx y vy //--Para los Paddles(Raquetas) if(sPaddle1.y > (SCREEN_H - bPaddle->h) || sPaddle1.y < 0){ if(sPaddle1.y > (SCREEN_H - bPaddle->h)) { if(sPaddle1.vy == 2) sPaddle1.vy = 0; } if(sPaddle1.y < 0) { if(sPaddle1.vy == -2) sPaddle1.vy = 0; } } if(sPaddle2.y > (SCREEN_H - bPaddle->h) && sPaddle2.y < 0){ if(sPaddle2.y > (SCREEN_H - bPaddle->h)) { if(sPaddle2.vy == 2) sPaddle2.vy = 0; } if(sPaddle1.y < 0) { if(sPaddle2.vy == -2) sPaddle2.vy = 0; } } //--Para la bola //--bola--eje x if(sBola.x >= SCREEN_W) { eJuego.j2puntos = eJuego.j2puntos + 1; eJuego.estado = EST_PUNTO_J1; nuevo_saque(); } if(sBola.x + bBola->w <= 0) { eJuego.j1puntos = eJuego.j1puntos + 1; eJuego.estado = EST_PUNTO_J2; nuevo_saque(); } //--bola--eje y if(sBola.y >= SCREEN_H - bBola->h) { sBola.vy = sBola.vy * -1; } if(sBola.y <= 0) { sBola.vy = sBola.vy * -1; } //COLISIONES //-Choque bola con Paddle 1 if(sBola.x >= sPaddle1.x && sBola.x <= sPaddle1.x + bPaddle->w && sBola.y + bBola->h >= sPaddle1.y && sBola.y <= sPaddle1.y + bPaddle->h) { if(sBola.toque == 0) { sBola.vx = sBola.vx * -1; if(sBola.y + bBola->h >= sPaddle1.y && sBola.y <= sPaddle1.y + (bPaddle->h/3)) { sBola.vy = -1; } if(sBola.y + bBola->h >= sPaddle1.y + (bPaddle->h/3) && sBola.y <= sPaddle1.y + 2*(bPaddle->h)) { sBola.vy = 0; } if(sBola.y + bBola->h >= sPaddle1.y + 2*(bPaddle->h/3) && sBola.y <= sPaddle1.y + bPaddle->h) { sBola.vy = 1; } sBola.toque = 1; } } else{ sBola.toque = 0; } //-Choque bola con Paddle 2 if(sBola.x + bBola->w >= sPaddle2.x && sBola.x <= sPaddle2.x + bPaddle->w && sBola.y + bBola->h >= sPaddle2.y && sBola.y <= sPaddle2.y + bPaddle->h) { if(sBola.toque == 0) { sBola.vx = sBola.vx * -1; if(sBola.y + bBola->h >= sPaddle2.y && sBola.y <= sPaddle2.y + (bPaddle->h/3)) { sBola.vy = -1; } if(sBola.y + bBola->h >= sPaddle2.y + (bPaddle->h/3) && sBola.y <= sPaddle2.y + 2*(bPaddle->h)) { sBola.vy = 0; } if(sBola.y + bBola->h >= sPaddle2.y + 2*(bPaddle->h/3) && sBola.y <= sPaddle2.y + bPaddle->h) { sBola.vy = 1; } sBola.toque = 1; } } else{ sBola.toque = 0; } //-Aplicar la velocidad a la posicion // Movemos la pelota con la velocidades vx y vy calculadas sBola.y = sBola.y + sBola.vy; sBola.x = sBola.x + sBola.vx; //--Para las raquetas if(sPaddle2.vy > 2) sPaddle2.vy = 2; if(sPaddle2.vy < -2) sPaddle2.vy = -2; sPaddle1.y = sPaddle1.y + sPaddle1.vy; sPaddle2.y = sPaddle2.y + sPaddle2.vy; //Reestableciendo el dato de velocidad una vez movidos los objetos /* Esto hace que al soltar los botones de direccion de las raquetas, las raquetas se paren, de lo contrario la velocidad segura siendo la misma aun soltando los botones */ sPaddle1.vy = 0; sPaddle2.vy = 0; }
Umm un apuntecillo.. Has probado a debuguear (o como se escriba) y ver en cual de los ifs se mete el programa...
Sobre lo de "debugear" o depurar, uso el DevC++ como IDE y lleva un depurador, pero este no me deja ver las variables cuando el programa esta en ejecucion, sino que solo me deja verlo cuando llego a un "break point" de esos, o pongo el modo paso por paso,pero asi no podre ver lo que realmente pasa por que no puedo ir jugando, o ir moviendo las raquetas para que vea que ocurre en cada caso. ¿Como podira hacer esto?
(hardcodeadas, ya que hablamos en spanglish)