Ahora mostraré los cambios que se han realizado en los diferentes ficheros. Para facilitarlo, he dejado la parte de SDL comentada.
Clase Juego
En la clase juego lo primero que se ha cambiado son las variables privadas usadas en la biblioteca SDL a las necesarias para SFML:
//Variables SDL
/*
SDL_Window *window;
SDL_Renderer *renderer;
*/
//Variables SFML
sf::RenderWindow *window;
y ahora para crear la ventana del juego solo necesitamos:
window = new sf::RenderWindow(sf::VideoMode(anchura,altura),"Tic-Tac-Toe");
acordándonos después de eliminar la ventana.
Clase CtrlVPartida
En el controlador, ahora necesitamos un puntero a la ventana de renderizado que usaremos para obtener los eventos que recibe la misma.
sf::RenderWindow *window;
Y ahora la función para manejar eventos funciona de la siguiente manera:
sf::Event e;
while(window->pollEvent(e)){
switch(e.type){
case sf::Event::Closed:
window->close();
salir = true;
break;
case sf::Event::MouseButtonPressed:
if (e.mouseButton.button == sf::Mouse::Left){
modelo->setFicha(e.mouseButton.x/200,e.mouseButton.y/200);
}
break;
}
}
Si observamos el código en la versión SDL vemos que es muy parecido.
Clase VPartida
En la vista, tenemos que cambiar las variables que guardan las imágenes en SDL a su contratarte en SFML.
//Variables SDL
/*
SDL_Renderer* renderer;
SDL_Texture* imgTablero;
SDL_Texture* imgFichaCirculo;
SDL_Texture* imgFichaCruz;
*/
//Variables SFML
sf::RenderWindow *window;
sf::Texture imgTablero;
sf::Texture imgFichaCirculo;
sf::Texture imgFichaCruz;
Y por supuesto, modificar la funcion de renderizado:
/*
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer,imgTablero, NULL, NULL);
SDL_Rect pos;
pos.w = 200;
pos.h = 200;
*/
window->clear(sf::Color::Black);
window->draw(sf::Sprite(imgTablero));
sf::Sprite ficha;
for (int i = 0; i < Partida::TAM; i++){
//pos.y = i*200;
for (int j = 0; j < Partida::TAM; j++){
//pos.x = j*200;
ficha.setPosition(j*200,i*200);
switch (modelo->getFicha(j,i)){
case CRUZ:
//SDL_RenderCopy(renderer,imgFichaCruz, NULL, &pos);
ficha.setTexture(imgFichaCruz);
window->draw(ficha);
break;
case CIRCULO:
//SDL_RenderCopy(renderer,imgFichaCirculo, NULL, &pos);
ficha.setTexture(imgFichaCirculo);
window->draw(ficha);
break;
}
}
}
//SDL_RenderPresent(renderer);
window->display();
Si queréis ver el código podéis descargarlo desde aquí. A partir de ahora, con esta nueva biblioteca empezaremos a funcionar, hasta otra.
No hay comentarios:
Publicar un comentario