Está en la página 1de 2

A continuación una versión mejorada del código anterior, donde se utiliza las

funciones incorporadas en SFML como el mover (.move) y obtener posición


(.getPosition()) :

//Programa en SFML Y C++ que mueve una forma simple en pantalla Versión
2.0

#include <SFML/Graphics.hpp> //esta es una librería multimedia

int main() // función principal donde empezara a ejecutarse el programa


{
const int max_x = 800, max_y = 600, min_x = 0, min_y = 0;
float r_ball = 10.f; //Radio del circulo
float movx = 5.f, movy = 5.f; // incremento de las coordenada del circulo float
x = 0, y = 0; // coordenadas iniciales de ball

sf::RenderWindow window(sf::VideoMode(max_x, max_y), "@intellvirtual: Mover Formas


Simples");
window.setVerticalSyncEnabled(true);// sincronismo vertical para reducir la velocidad de
fotogramas
sf::CircleShape ball(r_ball);
ball.setFillColor(sf::Color::Yellow);
ball.setPosition(x, y);

while (window.isOpen()) // mientras la ventana este abierta se ejecutara el bucle


{
sf::Event event; // variable la cual almacenara el evento ocurrido while
(window.pollEvent(event)) // buble el cual se ejecutara indefinidamente
{
if (event.type == sf::Event::Closed) /* si el tipo de evento que se almacena en la
variable es closed se cumple la condición y se ejecuta el siguiente bloque de código*/
window.close(); // cerrar la ventana
}
sf::Vector2f posicion = ball.getPosition();//posicion actual del circulo x
= posicion.x;
y = posicion.y;
if (x == max_x - r_ball * 2 || x < min_x)//r_ball*2 toma en cuenta el diametro del circulo
movx *= -1;

if (y == max_y - r_ball * 2 || y < min_y)


movy *= -1;

ball.move(movx, movy);//mueve el circulo de su posicion actual //de acuerdo al


valor de incremento movx y movy window.clear(); // se borrara todo lo
que está en pantalla window.draw(shape); // función utilizada para
dibujar figura en la pantalla window.display(); // muestra en pantalla lo
que ha sido renderizado
}
}//window.isOpen return
0;

También podría gustarte