Dibujar formas simples con C++ y SFML


Programación Orientada a Objetos con C++ y SFML
SFML esta compuesto por varios módulos especializados en los aspecto que integran el desarrollo de los juegos de vídeos. Sistema, Ventana, Gráfico, Sonido y Red.

Estos módulos han sido diseñados con la filosofía de programación orientada a objeto (POO). La POO nos permite crear tipos nuevos de datos donde podemos definir su contenido y las operaciones que son posible en esos datos .

Una de las características mas importante del lenguaje de programación C++ es la clase, que permite a los programadores crear sus propios tipos de datos. Por ejemplo los tipos incorporados en los lenguajes de programación como los números enteros, los caracteres, punto flotante, etc., son tipos primitivos de objetos, y las operaciones que puedo realizar sobre esos tipos son, sumar, restar, multiplicar, dividir concatenar etc. 

La POO nos permite crear nuevos tipos mas complejos permitiendo que la manipulación de esos tipos sea tan intuitivos como los tipos primitivos (enteros,char).

El enfoque de la POO brinda la posibilidad de manejar eficientemente la complejidad de los programas modernos a través de la abstracción, además del beneficio de la reutilización de código. Por ejemplo, podemos realizar un programa para dibujar una rectángulo,  luego  uno que dibuje un triangulo y finalmente un programa que dibuje un  circulo. Gran parte del código de cada uno de esos programa tienen cosas en común, similar a los objetos reales. Los objetos de una misma clase tiene características y comportamientos similares como el tamaño, color, posición en pantalla etc. Éste nivel de abstracción nos permite escribir programas que encierre las propiedades y funcionalidades de un triangulo, rectángulo o un circulo en una clase que podemos darle el nombre de  figura. La clase figura me permite crear objetos figura con sus características y sus métodos  u operaciones.

Los datos que manipula un programa son almacenados en variables y cada variable tiene un tipo.Por ejemplo cuando un tipo de una variable se declara rectángulo es Figura podemos decir que rectángulo tiene el tipo Figura o que rectángulo es una Figura.

Para ver esto en la practica vamos a escribir un programa que pueda crear un triangulo y lo dibuje en pantalla.

En SFML, si necesitamos dibujar un rectángulo en una ventana ya creada, tenemos que usar la clase RectangleShape

sf::RectangleShape rectangulo(sf::Vector2f(60,20));


sf es el espacio de nombres de la librería SFML, los puntos ::, es un operador de ámbito.  La sentencia sf::RectangleShape, le indica al compilador que queremos usar el nombre RectangleShape definido en el espacio de nombre sf.

Ya hemos creado una variable llamada rectangulo, que almacena objetos de la clase FiguraRectangular (RectangleShape), y le asignamos un tamaño de 60 pixeles de ancho por 20 pixeles de alto (parametros).

Después de esta introducción teórica, vamos a ver como hacer ésto en el mundo virtual.

A continuación el programa completo para dibujar un rectángulo en una ventana de dibujo utilizando C++ y SFML.

//Programa que crea un objeto rectángulo y lo dibuja en pantalla

#include <SFML/Graphics.hpp> int main()
{
    // creamos la ventana de 200x200 pixeles
    sf::RenderWindow ventana(sf::VideoMode(200, 200), "Ventana de Dibujo");

    // definimos un rectangulo 60x20
    sf::RectangleShape rectangulo(sf::Vector2f(60, 20));

    // ejecutar el programa mientras la ventana esté abierta
    while (ventana.isOpen())
    {
        //verificamos todos los eventos de la ventana 
        sf::Event evento;
        while (ventana.pollEvent(evento))
        {
            // "cierre solicitado" evento: cerramos la ventan
            if (evento.type == sf::Event::Closed)
                ventana.close();
        }

        // limpiamos la ventana con el color negro
        ventana.clear(sf::Color::Black);

        // aqui dibujamos el rectangulo en la ventana
           ventana.draw(rectangulo);

        // mostramos ventana en la pantalla
        ventana.display();
    }

    return 0;
}

Compilamos y ejecutamos el programa y el resultado sería como el la siguiente imagen:



Lo interesante del programa anterior es lo fácil que es entenderlo y lo intuitivo que se vuelve el programa.

La siguiente linea

  ventana.draw(rectangulo);

es como decir: en la ventana dibuja el rectangulo. Draw (dibuja) es un método de RenderWindow (ventana de dibujo) la cual acepta como parámetro un objeto de tipo Rectángulo (RectangleShape) .

Y si queremos que éste rectángulo que hemos creado se ubique en el centro de la pantalla y que su color sea verde,  sólo tenemos que agregar dos instrucciones después de crearlo. Si lo hacemos en nuestro idioma sería algo como esto:

 triangulo.establecerPosicion(70,90) 
 triangulo.establecer_Color_de_Relleno(verde)

pero en SFML se escribe así:

rectangulo.setPosition(70,90);
rectangulo.setFillColor(sf::Color::Green);

Agregue las lineas anteriores después de la linea que define a rectangulo1 y corra el programa. El resultado será el siguiente:



Mas adelante vamos hacer cosas mas interesantes con estas figuras, por lo momentos nos interesa entender las cosas básicas de SFML y al mismo tiempo estamos viendo el poder de la Programación Orientada a Objetos (POO), en este caso con el lenguaje C++.

😀Si te gusta nuestro blog suscríbete, coméntalo y comparte.👍
Nuestro equipo estará muy contento y compartirá mas contenido gratuito para tu aprendizaje.😉

En el próximo tema te enseñamos como mover las figuras en pantalla en el siguiente enlace:

https://intelligenciavirtual.blogspot.com/2014/06/mover-formas-simples-en-pantalla-con-c.html


movimiento de figura IntelligenciaVirtual
Como Mover un Figura en Pantalla





Comentarios

Entradas populares de este blog

Mover formas simples en pantalla con C++ y SFML

Como Mover Formas Simples Con el Teclado con C++ y SFML