Esta característica hay que programarla dentro del juego y no de las librerías, es decir, lo pondremos en NSMB.cpp.
El código fuente de la función avanzar será el siguiente:
int NSMB::avanzar() {
velocidad--;
if (velocidad == 0) {
velocidad = MOVIMIENTO_VELOCIDAD;
if (movimiento == MOVIMIENTO_DERECHA) {
if (koopa->GetX() < 128) {//128 = pixeles mitad pantalla
koopa->MoveRight(MOVIMIENTO_VELOCIDAD);
if (topScreen->IsCollision(koopa, mundo_plataformas->GetX(), mundo_plataformas->GetY()))
koopa->MoveLeft(MOVIMIENTO_VELOCIDAD);//deshacemos el avance
} else {
int x = mundo_plataformas->GetX() + 1;
if (x < COLUMNAS_MAPA - COLUMNAS_PANTALLA) {
if (!topScreen->IsCollision(koopa, x, mundo_plataformas->GetY())) {
mundo_plataformas->SetX(x);
mundo_plataformas->PrintMap8x8(MAPA_PLATAFORMAS);
}
} else if (koopa->GetX() < 256) {
koopa->MoveRight(MOVIMIENTO_VELOCIDAD);
if (topScreen->IsCollision(koopa, mundo_plataformas->GetX(), mundo_plataformas->GetY()))
koopa->MoveLeft(MOVIMIENTO_VELOCIDAD);//deshacemos el avance
}
}
} else {//MOVIMIENTO_IZQUIERDA
if (koopa->GetX() > 128) {//128 = pixeles mitad pantalla
koopa->MoveLeft(MOVIMIENTO_VELOCIDAD);
if (topScreen->IsCollision(koopa, mundo_plataformas->GetX(), mundo_plataformas->GetY()))
koopa->MoveRight(MOVIMIENTO_VELOCIDAD);//deshacemos el avance
} else if (mundo_plataformas->GetX() > 0) {
int x = mundo_plataformas->GetX() - 1;
if (!topScreen->IsCollision(koopa, x, mundo_plataformas->GetY())) {
mundo_plataformas->SetX(x);
mundo_plataformas->PrintMap8x8(MAPA_PLATAFORMAS);
}
} else if (koopa->GetX() > 0) {
koopa->MoveLeft(MOVIMIENTO_VELOCIDAD);
if (topScreen->IsCollision(koopa, mundo_plataformas->GetX(), mundo_plataformas->GetY()))
koopa->MoveRight(MOVIMIENTO_VELOCIDAD);//deshacemos el avance
}
}
}
return 1;
}
Hoy no voy a poner una versión del código porque está cambiando bastante por lo que lo dejaré para futuros post. Sólo os puedo decir que las funciones Print de ScreenManager están ahora a nivel de TileSet. La clase Sprite está cambiando y mantener varias versiones no me es posible.
Saludos
2 comentarios:
Madre mía vaya currazo llevas. Y mejor así, así no pasa como pasaba hasta ahora de que se ven cosas raras si te vas para un lado.
¡Sigue así!
Buenas David
En estos momentos puedo sacar algo de tiempo y he avanzado bastante el proyecto. Incluso tengo ya escrito el post de la semana que viene.
Esto empieza a tener forma, saludos
Publicar un comentario