Duvida na logica de programação no aplicativo Processing!

Olá pessoal! Recentemente vi um programinha para fazer aplicativo chamado PROCESSING.

Um programa leve, versátil e muito poderoso. A IDE e a forma de programar dele é muito parecida com a do arduino o que facilitou bastante para mim. Acontece que estou tendo problemas para usar laços nele (if, for, while). Por exemplo eu escrevo um programa usando o laço "if" e se eu adaptar o programa para usar o laço "while" não funciona.

Vejam, este programa que escrevi faz com que um circulo passe pela tela de um lado para o outro.E funciona perfeito assim:

int x=-45;
void setup() //temm a mesma  função do setup do arduino, só executa uma vez
{

  size(200,200);
  background(0);
}

void draw() //equivalente ao void loop no arduino(laço infinito)

{
  if (x<245)
     {
       background(0);
       ellipse(x,45,80,80);
       delay(10);
       x++;
      }
}

Mas se eu fizer assim, ele não funciona mais, a tela fica só preta(eu acho que deveria funcionar):

int x=-45;
void setup()
{

  size(200,200);
  background(0);
}

void draw( )

{
   while (x<245)
          {
            background(0);
            ellipse(x,45,80,80);
            delay(10);
             x++;
          }
}

outra forma que não funciona e que eu acho que deveria funcionar era usando um laço "for " no setup:

int x=-45;
void setup()
{

  size(200,200);
  background(0);
  for(x=-45; x<245; x++)
      {
        background(0);
        ellipse(x,45,80,80);
       delay(10);
       x++;
      }
}

void draw()

{

}

Seria algum erro de síntase? Bom, desde já agradeço.

Exibições: 468

Responder esta

Respostas a este tópico

Bom dia  Rhaicmer, 

O processing foi desenvolvido principalmente para gerar interfaces gráficas. E pode fazer interface com Arduino. Na verdade, a IDE do  Arduino foi criada baseada no Processing.

https://www.arduino.cc/en/Guide/Introduction

Sugiro que estude a linguagem que é muito interessante. Não a usei ainda, mas já li um bocado sobre ela e gostei. Veja o link com a referência dos comandos e os inúmeros exemplos. 

https://processing.org/reference/

https://processing.org/examples/

https://processing.org/reference/if.html

https://processing.org/reference/while.html

https://processing.org/reference/for.html

Obrigado pelo retorno.

Vou estudar mais, já dei uma olhada e vou olhar mais ainda para ver se algo esta passando despercebido.

Oi RBC, bom dia.

Não tenho certeza, mas analisando o seu exemplo, o que me pareceu foi o seguinte:

A imagem só é formada após terminar de executar uma função de imagem,

Como no segundo caso, o code ficou dentro da função while, a imagem só formou fora da tela de 200x200.

Testei com a tela  "" size(400,400);  "",   e demorou alguns segundos em tela preta.

Quando x ficou maior que 245, o circulo apareceu +- no meio da tela,   coordenada 245.

Teste aí e depois conta pra gente.

Rui

Eu tinha persebido isso, fiz um codigo onde desenho varias linhas horizontais uma abaixo da outra, mesmo dando delay, as linhas só aparecem quando o código sai da função while.

Fiz o teste agora com "size(400,400)" e é como você disse e agora está bem claro o que está acontecendo pois enquanto dentro de um laço as imagens não são atualizadas, mas como reverter isto?(com o laço for o resultado é o mesmo).

Olá gente, olha o que resolveria meu problema seria fazer uma animação simples rodar no void setup()(pode ser uma animação como esta que postei ai). Mas até agora não consegui usar laços como "while" e o "for" que teoricamente resolveria meu problema. E o "if" não da pra usar porque ele só executa uma vez.

Alguem tem uma idéia?

vejam o que eu estou fazendo...Não reparem muito a organização pois ainda nao optimizei o programa

import gifAnimation.*;

Gif loopingGif;
Gif maquina0;
Gif maquina1;
Gif maquina2;
Gif maquina3;
Gif maquina4;
Gif maquina5;
Gif maquina6;
Gif maquina7;
Gif maquina8;
Gif maquina9;
PFont font2;
PFont font1;
PImage perfil;
PImage logo;
PImage painelDevice;
PImage painelNome;
PImage painelMenu;
PImage est00; PImage est01; PImage est02; PImage est03; PImage est04;
PImage est05; PImage est06; PImage est07; PImage est08; PImage est09;
PImage est1;
int ref=1;
int x=0;
int y=265;
int posPainelx=250;
int posPainely=140;

void setup() {
size(1200,700);
frameRate(100);

loopingGif = new Gif(this, "bocca.gif");
maquina0 = new Gif(this, "maquina0.gif");
maquina1 = new Gif(this, "maquina1.gif");
maquina2 = new Gif(this, "maquina2.gif");
maquina3 = new Gif(this, "maquina3.gif");
maquina4 = new Gif(this, "maquina4.gif");
maquina5 = new Gif(this, "maquina5.gif");
maquina6 = new Gif(this, "maquina6.gif");
maquina7 = new Gif(this, "maquina7.gif");
maquina8 = new Gif(this, "maquina8.gif");
maquina9 = new Gif(this, "maquina9.gif");
perfil=loadImage("user.png");
logo=loadImage("iodevice.png");
est1=loadImage("mLigada.png");
est00=loadImage("mDesligada0.png"); est01=loadImage("mDesligada1.png"); est02=loadImage("mDesligada2.png"); est03=loadImage("mDesligada3.png"); est04=loadImage("mDesligada4.png");
est05=loadImage("mDesligada5.png"); est06=loadImage("mDesligada6.png"); est07=loadImage("mDesligada7.png"); est08=loadImage("mDesligada8.png"); est09=loadImage("mDesligada9.png");
painelNome=loadImage("painelS.png");
painelMenu=loadImage("painel.png");
painelDevice=loadImage("painelMaquina.png");
loopingGif.loop();
image(logo,0,0);


}

void draw() {
if(x<1000){
background(0);
image(logo,180,130);
image(loopingGif, 450,300);
x++;}
else{
background(0);
image(painelMenu,10,10);
image(perfil, 14, 20);
font2=loadFont("SegoeUIBlack-30.vlw"); textFont(font2); fill(0);
text("USUÁRIO",68,60);
image(painelNome,250,10);

for( y=265 ;y<1100; y+=180)
{
image(painelDevice,y,140);
image(painelDevice,y,440);
image(maquina0,300,150);
image(est00,270,250);
font1=loadFont("font.vlw"); textFont(font1); fill(0);
text("Máquina ",300,265);
image(maquina1,480,150);
image(est01,450,250);
text("Máquina ",480,265);
image(maquina2,660,150);
image(est02,630,250);
text("Máquina ",660,265);
image(maquina3,840,150);
image(est03,810,250);
text("Máquina ",840,265);
image(maquina4,1020,150);
image(est04,990,250);
text("Máquina ",1020,265);
image(maquina5,300,450);
image(est05,270,550);
text("Máquina ",300,565);
image(maquina6,480,450);
image(est06,450,550);
text("Máquina ",480,565);
image(maquina7,660,450);
image(est07,630,550);
text("Máquina ",660,565);
image(maquina8,840,450);
image(est08,810,550);
text("Máquina ",840,565);
image(maquina9,1020,450);
image(est09,990,550);
text("Máquina ",1020,565);

}
print(mouseX);
print(" ");
println(mouseY);
if(mousePressed)
{
if(mouseX>300 && mouseX<380 && mouseY>150 && mouseY<225)
{
if(ref==0)
{
ref=1;
}
else
{
ref=0;
}
}
if(ref==1)
{
maquina0.loop();
image(est1,270,250);
}
else
{
maquina0.stop();
image(est00,270,250);
}
}



}

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço