C++ e SFML - Aula01

De Aulas

Voltar para Matemática e Física para Jogos

Exemplo 01

O exemplo abaixo cria uma janela em branco com alguns elementos gráficos (linha, círculo, retângulo, polígono). Em tempo, há interação entre o teclado (setas) e uma das figura.

 1#include <SFML/Graphics.hpp>
 2#include <SFML/Audio.hpp>
 3#include <iostream>
 4
 5int main() {
 6    // Inicializacao da biblioteca
 7    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "MFJ - Hello World");
 8    int xCircle = 300;
 9    int yCircle = 300;
10
11    // Gamelooping
12    while (app->IsOpened()) {
13        // Process game input
14        sf::Event* event = new sf::Event();
15        while (app->GetEvent(*event)) {
16            if (event->Type == sf::Event::Closed) {
17                app->Close();
18            }
19        }
20        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
21            return EXIT_SUCCESS;
22        }
23
24        // Simulate Game World
25        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
26        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
27        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
28        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;
29
30        // Render
31        app->Clear(sf::Color(255, 255, 255));
32
33        sf::Shape Line = sf::Shape::Line(10, 10, 100, 50, 3, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
34        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
35        sf::Shape Rect = sf::Shape::Rectangle(400, 400, 420, 430, sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));
36
37        sf::Shape Polygon;
38        Polygon.AddPoint(100, 100,  sf::Color(255, 0, 0),     sf::Color(0, 128, 128));
39        Polygon.AddPoint(150, 200,   sf::Color(255, 85, 85),   sf::Color(0, 128, 128));
40        Polygon.AddPoint(80, 150,  sf::Color(255, 170, 170), sf::Color(0, 128, 128));
41
42        app->Draw(Line);
43        app->Draw(Circle);
44        app->Draw(Rect);
45        app->Draw(Polygon);
46        app->Display();
47    };
48    return EXIT_SUCCESS;
49}

Exercícios

Implemente as seguintes questões:

1. Crie um projeto no Code::Blocks, configure-o e faça rodar o exemplo passado.

2. Crie interação do teclado para com os outros elementos. Faça também os elementos poderem aumentar ou diminuir de tamanho, se deformarem, e outras interações por meio do uso do teclado.

3. Adicione novos elementos gráficos no ambiente. Tente modelar figuras mais complexas pela composição de figuras mais simples.

4. Por meio de recursos da biblioteca SFML, salve a figura em arquivo de imagem gráfica (exemplo: png, jpg, etc.)

5. Faça um novo projeto do zero. Este projeto deve ter as seguintes características:

5.1. Uma tela de 800x600 com fundo branco.
5.2. crie linhas a cada 10cm e de tamanho 5 pixels nas laterais da imagem da imagem, perpendicular ao eixo da lateral.
5.3. Desenhe uma linha no gráfico referente a função de segundo grau
f(x) = 5x - 3, onde a = 5 e b = - 3
5.4. Salve a imagem em um arquivo chamado gráfico.png.