Eskema
15/02/2005, 21:37
Hola de nuevo a todos, aqui sigo probando cosas y hoy me he encontrado algo curioso, estoy creando una rutina para hacer que una pelota rebote por la pantalla y curiosidades de la vida no funciona como deberia. Lo mas curioso es que esa misma rutina sin tocar ni una sola coma la tengo en otro proyecto y funciona perfectamente. A ver si algun alma caritativa le da un vistazo y me dice si es algo mio, o cosa de la SDL,
void mover_bola(void){
int xMax=630,xMin=10,yMax=465,yMin=10; //una pantalla de 640x480
int direccion_bola=0;
//direccion 0 abajo-derecha
//direccion 1 arriba-derecha
//direccion 2 arriba-izquierda
//direccion 3 abajo-izquierda
if (direccion_bola == 0 && pelota.x < xMax && pelota.y < yMax) {
pelota.x++;pelota.x++;
pelota.y++;pelota.y++;
}
if (direccion_bola == 0 && (pelota.x >= xMax || pelota.y >= yMax )) {
if (pelota.x >= xMax)
{direccion_bola = 3;}
else
{direccion_bola = 1;}
}
if (direccion_bola == 1 && pelota.x < xMax && pelota.y > yMin){
pelota.x++;pelota.x++;
pelota.y--;pelota.y--;
}
if (direccion_bola == 1 && (pelota.x >= xMax || pelota.y <= yMin )){
if (pelota.x >= xMax)
{direccion_bola = 2;}
else
{direccion_bola = 0;}
}
if (direccion_bola == 2 && pelota.x > xMin && pelota.y > yMin){
pelota.x--;pelota.x--;
pelota.y--;pelota.y--;
}
if (direccion_bola == 2 && (pelota.x <= xMin || pelota.y <= yMin )){
if (pelota.x <= xMin)
{direccion_bola = 1;}
else
{direccion_bola = 3;}
}
if (direccion_bola == 3 && pelota.x > xMin && pelota.y < yMax){
pelota.x--;pelota.x--;
pelota.y++;pelota.y++;
}
if (direccion_bola == 3 && (pelota.x <= xMin || pelota.y >= yMax)){
if (pelota.x <= xMin)
{direccion_bola = 0;}
else
{direccion_bola = 2;}
}
}
Lo curioso del tema es que empieza a bajar y al llegar abajo, deberia rebotar hacia arriba, sin embargo se queda quieta abajo ¿?
Saludos, Eskema
void mover_bola(void){
int xMax=630,xMin=10,yMax=465,yMin=10; //una pantalla de 640x480
int direccion_bola=0;
//direccion 0 abajo-derecha
//direccion 1 arriba-derecha
//direccion 2 arriba-izquierda
//direccion 3 abajo-izquierda
if (direccion_bola == 0 && pelota.x < xMax && pelota.y < yMax) {
pelota.x++;pelota.x++;
pelota.y++;pelota.y++;
}
if (direccion_bola == 0 && (pelota.x >= xMax || pelota.y >= yMax )) {
if (pelota.x >= xMax)
{direccion_bola = 3;}
else
{direccion_bola = 1;}
}
if (direccion_bola == 1 && pelota.x < xMax && pelota.y > yMin){
pelota.x++;pelota.x++;
pelota.y--;pelota.y--;
}
if (direccion_bola == 1 && (pelota.x >= xMax || pelota.y <= yMin )){
if (pelota.x >= xMax)
{direccion_bola = 2;}
else
{direccion_bola = 0;}
}
if (direccion_bola == 2 && pelota.x > xMin && pelota.y > yMin){
pelota.x--;pelota.x--;
pelota.y--;pelota.y--;
}
if (direccion_bola == 2 && (pelota.x <= xMin || pelota.y <= yMin )){
if (pelota.x <= xMin)
{direccion_bola = 1;}
else
{direccion_bola = 3;}
}
if (direccion_bola == 3 && pelota.x > xMin && pelota.y < yMax){
pelota.x--;pelota.x--;
pelota.y++;pelota.y++;
}
if (direccion_bola == 3 && (pelota.x <= xMin || pelota.y >= yMax)){
if (pelota.x <= xMin)
{direccion_bola = 0;}
else
{direccion_bola = 2;}
}
}
Lo curioso del tema es que empieza a bajar y al llegar abajo, deberia rebotar hacia arriba, sin embargo se queda quieta abajo ¿?
Saludos, Eskema