Ajuda com SFML em C++

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ajuda com SFML em C++

Mensagem por janrie em Ter 04 Set 2012, 22:13

Pessoal, tenho uma duvida, tenho um código em C++ com SFML, desenhei uma figuras na tela e fiz interação com o teclado para movimento das mesmas, mas gostaria de saber como eu faço para fazer cada figura de uma vez aumentar e diminuir de tamanho?
Se alguem puder me ajudar eu agradeço, segue o código:

Código:
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

int main() {
    // Inicializacao da biblioteca
    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;

    // Gamelooping
    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, 3, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(xRect, yRect, x1Rect, y1Rect, sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(x1Polygon, y1Polygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(x2Polygon, y2Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();
    };
    return EXIT_SUCCESS;
}

Desde ja eu agradeço e peço desculpas se postei no lugar errado

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por PedroX em Ter 04 Set 2012, 22:44

Eu uso SFML, mas não entendi o que você quer fazer.
Além disso, área errada.
O tópico será movido.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Ter 04 Set 2012, 22:47

Se executar esse código, ele vai mostrar 4 figuras em um determinado tamanho, gostaria de saber se alguém poderia me ajudar a fazer essas figuras aumentarem de tamanho através de entradas do teclado.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Markituh em Qua 05 Set 2012, 11:54

Não mexo com SFML, mas seguindo a lógica, seu código parece estar ok. Só encontrei uma coisa curiosa nessa parte:

Código:
while (app->GetEvent(*event)) {
    if (event->Type == sf::Event::Closed) {
        app->Close();
    }
}
Ao que parece, seu while vai continuar retornando verdadeiro até que o programa receba um evento de fechamento. Isso fará com que os códigos abaixo do loop não sejam executados. Você pretendia colocar um if para checar tal evento? Na boa, nos tempos que eu estava aprendendo a mexer na WinAPI, existia uma função específica que era chamada num loop while na entry point do programa, com o evento em questão e seus respectivos parâmetros como argumentos; fica bem organizado, e chega até a ser um padrão universal.

Dá uma olhada nisso aí, e diga-nos o resultado. Abraços!

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Qua 05 Set 2012, 11:57

Isso serve para continuar executando o código até que seja pressionado esc para fechar a janela.

Tava querendo uma ajuda para ver como eu faço para aumentar uma determinada figura de tamanho, por exemplo, quando apertasse '+' no teclado a figura aumentava.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Da Galáxia em Qui 06 Set 2012, 13:46

Nunca mechi em SFML, mas vamos pela logica

Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240)

xCircle = posição em x;
yCircle = posição em y;
50 = dimensão do circulo.

Para aumentar ou diminuir a dimensão, no lugar de 50 devera ter uma variavel de controle, ex:

//inicia com tamanho 50, deve ficar fora do laço (bloco de repetição)
int varTamanho = 50;
Circle(xCircle, yCircle, varTamanho, sf::Color(125, 200, 240)

Dentro de um bloco de repetição, faça com que ao precionar uma tecla, incremente a variavel assim:
varTamanho ++; o circulo aumentara.

Da Galáxia

Número de Mensagens : 348
Data de inscrição : 14/01/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Jiraya em Qui 06 Set 2012, 14:03

Código:

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

int main() {
    // Inicializacao da biblioteca
    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;

    // Gamelooping
    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, 3, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(xRect, yRect, x1Rect, y1Rect, sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(x1Polygon, y1Polygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(x2Polygon, y2Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();
    };
    return EXIT_SUCCESS;
}

eu estava olhando seu código quando me vi isso


// Gamelooping
while (app->IsOpened()) {
// Process game input
sf::Event* event = new sf::Event();
realmente isso esta certo?
na minha opnião isso iria criar um memory leak bem fudidex na memoria ram
pois o objeto/class/strcut sf::Event seria criado a todo momento, pois os loops do c++ são extremamente rápidos.

quanto ao problema é como o Da Galaxia disse, basta criar uma variavel para guardar o tamanho do circulo

Código:

float fsize=50;
while(...)
{
if (app->GetInput().IsKeyDown(sf::Key::Space))fsize+=10;
sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, fsize, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
}
tente isso.

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Qui 06 Set 2012, 16:53

A parte de aumentar funcionou perfeitamente cara, valeu.
A questão daquele gamelooping não deu nenhum problema até agora.
Aquele while não sei fazer direito, por que sou muito iniciante ainda em programação.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Qui 06 Set 2012, 17:25

Para o circulo funcionou perfeitamente a modificação do tamanho, mas para o retângulo não está dando certo, pois ele não possui thickness( espessura) em sua linha de comando, procurei na documentação e la também não informa nada sobre como aumentar o tamanho dessas figuras.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Da Galáxia em Qui 06 Set 2012, 19:11

Cara, o retangulo não vai ter espessura, pois é um retangulo e não um cubo.

Para aumentar o retangulo é so fazer como no circulo, todavia possui um argumento a mais, veja.

Rectangle(xRect, yRect, x1Rect, y1Rect)

xRect = posição x
yRect = posição y

x1Rect = largura
y1Rect = altura

Faça como falei no circulo. Mas lembrando que agora podem ser 2 variaveis, uma para a largura e outra para a altura.

Em relação ao loop, como disse na postagem anterior não conheço esta biblioteca. Mas NÃO tem problema, pois, este loop é para dinamizar o jogo, ou seja, tudo ali deve ficar loopado.

Poderia ser assim tambem, veja:

while(! codigo da tecla ESC) { //enquanto NÃO teclar esc.

//codigos
}

Da Galáxia

Número de Mensagens : 348
Data de inscrição : 14/01/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Qui 06 Set 2012, 19:17

Entendi, entao no caso para aumentar um poligono, a quantidade de argumentos seria o numero de pontos do poligono?

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Da Galáxia em Qui 06 Set 2012, 20:47

Veja bem;

digamos que a função que desenha o retangulo seja como segue abaixo:

Rectangle(x1, y1, x2, y2)

A forma de se designar com palavras é assim:
nome da função é Rectangle e possui 4 argumentos ou parametros (x1,y1,x2,y2)

Vc deve conhecer como funciona esta função. Pelo que vi acima, esta função tem mais parametros, pois um (ou 2 não sei) para as cores.

Um retangulo é uma figura bidimensional e NÃO tridimensional(cubo), para se desenhar um retangulo precisa-se para isto de 4 informações (5 no caso da cor), vamos nos ater aos parametros espaciais, então preciso de 4 informação para desenhar um retangulo, veja:

1 - posição x no espaço
2 - posição y no espaço
3 - largura
4 - altura

veja que a função retangulo lhe da esses parametros

retangulo(100, 300, 450, 550)

estarei desenhando o retangulo na posição x = 100 e na posiçao y = 400

a largura sera 450 ou dependendo de como a biblioteca trabalha sera 350 (450 - 100 do inicio x)

a altura sera 550 ou dependendo de como a biblioteca trabalha sera 250 (550 - 300 do inicio y)

Para manipular qualquer parametro faça uma variavel que incremente(++) ou decremente(--) veja:

fora do while declare
int x = 0, y = 0, larg = 100, alt = 100;

dentro do while

x++;
y-=2;
larg+=3;
alt -=2;
retangulo(x, larg, y, alt)

Bringue, teste e vai se acostumano e pegara o jeito.


OBS:
Quando estou falando de x e y no espaço, é o plano cartesiano, x horizontal e y vertical, lembrando que o plano cartesiano no computador o Y é invertido, ou seja, y++ vai descer e y-- vai subir.

Da Galáxia

Número de Mensagens : 348
Data de inscrição : 14/01/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Sex 07 Set 2012, 10:42

Eu não consegui fazer por que aqueles 4 valores sao os dois primeiros o valor x e o valor y do ponto 1 e os outros dois sao o valor do x e do y do ponto 2, faltando assim lugar para definir largura e altura, eu tinha tentado fazer semelhante aos ou dois, mas nao funcionou.
:/

Na documentação dessa bliblioteca também não fala nada de como aumentar o tamanho das figuras.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Da Galáxia em Seg 10 Set 2012, 11:26

Amigo, o x2 é a largura e o y2 é a altura.
A largura é a distancia do x1 ao x2, a altura a distancia de y1 a y2.
Se esta biblioteca segue as regras de todas as outras que conheço, o ponto zero/zero da figura é o primeiro pixel superior esquerdo da figura, entao se eu fizer assim:
retangulo(0, 0, 100, 100 mais parametros de cores), estarei desenhando o retangulo no topo esquerdo da tela (origem 0 x 0) e a figura tera tamanho 100 a direita e 100 pra baixo (largura e altura), formando então um quadrado criado nas coordenadas 0 x 0 com largura e altura 100.

Para aumentar em tempo de execução use variaveis como falei.

Da Galáxia

Número de Mensagens : 348
Data de inscrição : 14/01/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Sex 14 Set 2012, 16:53

Desculpa, é que sou iniciante e pra im ainda sao meio complicadas as logicas, mas finalmente consegui.
Uma outra duvida que tenho, criei uma função pra salvar a tela antes dela ser fechada, só que a imagem que fica salva fica de cabeça para baixo, vou postar o codigo aqui, se alguem puder me ajudar eu agradeço.

Código:
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

void save(sf::RenderWindow *app) {
    sf::Image Screenshot;
    http://Screenshot.Create(800, 600, sf::Color(255,255,255));
    Screenshot.CopyScreen(*app);
    Screenshot.SaveToFile("fotoprojeto.png");
}

int main() {
    // Inicializacao da biblioteca

    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;
    float dCircle = 50;
    float dLine = 3;
    float dRect = 4;
    float dPolygon = 5;
    float d1Polygon = 50;

    // Gamelooping


    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                save(app);
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            save(app);
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Numpad1)) dCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Numpad0)) dCircle--;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::Q)) dLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::E)) dLine--;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::U)) dRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::O)) dRect--;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::Y)) dPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::R)) dPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::Y)) d1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::R)) d1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, dLine, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        http://Line.Rotate(lRotate);
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, dCircle, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(dRect, yRect, x1Rect, dRect,  sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(dPolygon, dPolygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(dPolygon, d1Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();

    };

    return EXIT_SUCCESS;
}

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Conteúdo patrocinado Hoje à(s) 06:16


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum