Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
Ajuda com SFML em C++
5 participantes
Página 1 de 1
Ajuda com SFML em C++
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:
Desde ja eu agradeço e peço desculpas se postei no lugar errado
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
Eu uso SFML, mas não entendi o que você quer fazer.
Além disso, área errada.
O tópico será movido.
Até mais!
Além disso, área errada.
O tópico será movido.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Ajuda com SFML em C++
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
Não mexo com SFML, mas seguindo a lógica, seu código parece estar ok. Só encontrei uma coisa curiosa nessa parte:
Dá uma olhada nisso aí, e diga-nos o resultado. Abraços!
- Código:
while (app->GetEvent(*event)) {
if (event->Type == sf::Event::Closed) {
app->Close();
}
}
Dá uma olhada nisso aí, e diga-nos o resultado. Abraços!
Markituh- Games Ranking :
Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
- 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
realmente isso esta certo?
// Gamelooping
while (app->IsOpened()) {
// Process game input
sf::Event* event = new sf::Event();
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));
}
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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
}
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- Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
Entendi, entao no caso para aumentar um poligono, a quantidade de argumentos seria o numero de pontos do poligono?
janrie- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
:/
Na documentação dessa bliblioteca também não fala nada de como aumentar o tamanho das figuras.
janrie- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Ajuda com SFML em C++
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.
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- Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos