import controlP5.*;
ControlP5 gui;
void setup() {
size(200, 200);
gui = new ControlP5(this);
gui.addTextfield("Login")
.setPosition(20, 80)
.setSize(120, 20);
gui.addTextfield("Senha")
.setPosition(20, 130)
.setSize(120, 20);
gui.addBang("ok")
.setPosition(150, 130)
.setSize(30, 20)
.getCaptionLabel()
.align(ControlP5.CENTER, ControlP5.CENTER);
}
void draw() {
}
public void ok() {
String x = gui.get(Textfield.class, "Login").getText();
String y = gui.get(Textfield.class, "Senha").getText();
println(x, y);
ValidarLogin(x, y);
}
void ValidarLogin(String login, String senha) {
if (login.equals("s")==true) {
if (senha.equals("s")==true) {
println("sim");
} else {
println("não1");
}
} else {
println("não2");
}
}
workshop do bruno SMD
Tuesday, May 30, 2017
Bounding Box se refere ao menor retângulo possível para conter todos os elementos possíveis de um conjunto. Nesse caso, cada conjunto vai ser apenas um elemento. O código resultante será:
int bastaoX=250;
int bolaX=10;
int dx=5;
int bolaY=10;
int dy=5;
int bx=150, by=300, tx=100, ty=10;
int fx=250, zy=500;
void setup() {
size(600, 800);
}
void draw() {
background(0);
rect(bastaoX, 580, 100, 10);
rect(bx, by, tx, ty);
rect(fx, zy, tx, ty);
if (keyPressed ==true && keyCode == RIGHT && bastaoX+100<width) {
bastaoX=bastaoX+5;
}
if (keyPressed ==true && keyCode == LEFT && bastaoX>=0) {
bastaoX=bastaoX-5;
}
ellipse(bolaX, bolaY, 20, 20);
bolaX+=dx;
bolaY+=dy;
if (bolaX+10>=590 || bolaX-10<=10) {
dx=-dx;
}
if (bolaY-10<=0) {
dy=-dy;
}
if (bolaY+10>=height) {// || bolaY<=10){
dy=-0;
dx=0;
text("Você perdeu", 300, 400);
}
if ((bolaX+10>=bx && bolaX-10<=bx+tx)) {
if ((bolaY+10>=by && bolaY-10<=by+ty)) {
text("Você venceu", 300, 400);
dx=0;
dy=0;
}
}
if ((bolaX+10>=fx && bolaX-10<=fx+tx)) {
if ((bolaY+10>=zy && bolaY-10<=zy+ty)) {
text("Você venceu", 300, 400);
dx=0;
dy=0;
}
}
if (bolaX-10>=bastaoX && bolaX+10<= bastaoX+100) {
if (bolaY+10>=580 && bolaY-2100<=600) {
dy=-dy;
}
}
}
int bastaoX=250;
int bolaX=10;
int dx=5;
int bolaY=10;
int dy=5;
int bx=150, by=300, tx=100, ty=10;
int fx=250, zy=500;
void setup() {
size(600, 800);
}
void draw() {
background(0);
rect(bastaoX, 580, 100, 10);
rect(bx, by, tx, ty);
rect(fx, zy, tx, ty);
if (keyPressed ==true && keyCode == RIGHT && bastaoX+100<width) {
bastaoX=bastaoX+5;
}
if (keyPressed ==true && keyCode == LEFT && bastaoX>=0) {
bastaoX=bastaoX-5;
}
ellipse(bolaX, bolaY, 20, 20);
bolaX+=dx;
bolaY+=dy;
if (bolaX+10>=590 || bolaX-10<=10) {
dx=-dx;
}
if (bolaY-10<=0) {
dy=-dy;
}
if (bolaY+10>=height) {// || bolaY<=10){
dy=-0;
dx=0;
text("Você perdeu", 300, 400);
}
if ((bolaX+10>=bx && bolaX-10<=bx+tx)) {
if ((bolaY+10>=by && bolaY-10<=by+ty)) {
text("Você venceu", 300, 400);
dx=0;
dy=0;
}
}
if ((bolaX+10>=fx && bolaX-10<=fx+tx)) {
if ((bolaY+10>=zy && bolaY-10<=zy+ty)) {
text("Você venceu", 300, 400);
dx=0;
dy=0;
}
}
if (bolaX-10>=bastaoX && bolaX+10<= bastaoX+100) {
if (bolaY+10>=580 && bolaY-2100<=600) {
dy=-dy;
}
}
}
Monday, May 29, 2017
Primeiro, cria-se um retângulo. Depois, fazendo os cálculos que o losango precisa ter para ficar dentro do retângulo, 53/200 do módulo para a dimensão vertical e 83/200 do módulo para a horizontal. O círculo no final é simples. Acrescentando as cores, o resultado final é, utilizando:
void setup(){
size(800,600);
}
void draw(){
background(255);
BandeiraBrasil(X, Y, M);
}
void BandeiraBrasil(float x, float y, float l){
noStroke();
fill(0,220,0);
rectMode(CENTER);
rect(x,y,l,(l*7/10));
fill(255,255,0);
quad(x, y+(l*53/200), x+(l*83/200), y, x, y-(l*53/200), x-(l*83/200), y);
fill(0,0,255);
ellipse(x,y,(l*7/20), (l*7/20));
}
O rectMode nesse código permite facilitar reduzir o número de cálculos no código, transformando o x e y no centro não apenas do losango e círculo, como também do retângulo.
void setup(){
size(800,600);
}
void draw(){
background(255);
BandeiraBrasil(X, Y, M);
}
void BandeiraBrasil(float x, float y, float l){
noStroke();
fill(0,220,0);
rectMode(CENTER);
rect(x,y,l,(l*7/10));
fill(255,255,0);
quad(x, y+(l*53/200), x+(l*83/200), y, x, y-(l*53/200), x-(l*83/200), y);
fill(0,0,255);
ellipse(x,y,(l*7/20), (l*7/20));
}
O rectMode nesse código permite facilitar reduzir o número de cálculos no código, transformando o x e y no centro não apenas do losango e círculo, como também do retângulo.
Com o código apresentado anteriormente, precisa-se acrescentar outras duas caixas de entrada de dados adicionais para executar a função flor4(). O resultado final deve parecer algo como isso:
import controlP5.*;
ControlP5 gui;
int x,r,y;
void setup() {
size(600, 600);
gui= new ControlP5(this);
gui.addTextfield("PosiçãoX").setPosition(20, 80).setSize(120, 20);
gui.addTextfield("PosiçãoY").setPosition(20, 120).setSize(120, 20);
gui.addTextfield("Raio").setPosition(20, 160).setSize(120, 20);
gui.addBang("ok")
.setPosition(150, 80).setSize(30, 20)
.getCaptionLabel()
.align(ControlP5.CENTER, ControlP5.CENTER);
}
void valor(int x) {
println(x);
}
public void ok() {
x=int(gui.get(Textfield.class, "PosiçãoX").getText());
y=int(gui.get(Textfield.class, "PosiçãoY").getText());
r=int(gui.get(Textfield.class, "Raio").getText());
println(x);
}
void draw() {
flor4(x,y,r);
}
void flor4(int x, int y, int r){
ellipse(x,y,r,r);
ellipse(x,y+r,r,r);
ellipse(x,y-r,r,r);
ellipse(x+r,y,r,r);
ellipse(x-r,y,r,r);
}
import controlP5.*;
ControlP5 gui;
int x,r,y;
void setup() {
size(600, 600);
gui= new ControlP5(this);
gui.addTextfield("PosiçãoX").setPosition(20, 80).setSize(120, 20);
gui.addTextfield("PosiçãoY").setPosition(20, 120).setSize(120, 20);
gui.addTextfield("Raio").setPosition(20, 160).setSize(120, 20);
gui.addBang("ok")
.setPosition(150, 80).setSize(30, 20)
.getCaptionLabel()
.align(ControlP5.CENTER, ControlP5.CENTER);
}
void valor(int x) {
println(x);
}
public void ok() {
x=int(gui.get(Textfield.class, "PosiçãoX").getText());
y=int(gui.get(Textfield.class, "PosiçãoY").getText());
r=int(gui.get(Textfield.class, "Raio").getText());
println(x);
}
void draw() {
flor4(x,y,r);
}
void flor4(int x, int y, int r){
ellipse(x,y,r,r);
ellipse(x,y+r,r,r);
ellipse(x,y-r,r,r);
ellipse(x+r,y,r,r);
ellipse(x-r,y,r,r);
}
O código usado como base para o estudo cria gradientes radiais, isso é, circulos com cores que mudam quanto mais se aproximam ou afastam do centro de maneira uniforme.
int dim;
void setup() {
size(640, 360);
dim = width/2;
background(0);
colorMode(HSB, 360, 100, 100);
noStroke();
ellipseMode(RADIUS);
frameRate(1);
}
void draw() {
background(0);
for (int x = 0; x <= width; x+=dim) {
drawGradient(x, height/2);
}
}
void drawGradient(float x, float y) {
int radius = dim/2;
float h = random(0, 360);
for (int r = radius; r > 0; --r) {
fill(h, 90, 90);
ellipse(x, y, r, r);
h = (h + 1) % 360;
}
}
Esse código cria um circulo e dois semi-círculos na tela, com as cores mudando completamente de maneira randomizada. Mudando o código para:
int dim;
float h;
void setup() {
size(640, 360);
dim = width/4;
background(0);
colorMode(HSB, 360, 100, 100);
noStroke();
ellipseMode(RADIUS);
frameRate(60);
}
void draw() {
background(0);
for (int x = 0; x <= width; x+=dim) {
drawGradient(x, height/4,h);
drawGradient(x, 3*height/4,h);
}
h++;
if(h>360)
h=0;
}
void drawGradient(float x, float y, float h) {
int radius = dim/2;
for (int r = radius; r > 0; --r) {
fill(h, 90, 90);
ellipse(x, y, r, r);
h = (h + 1) % 360;
}
}
Cria-se 4 semi-circulos e 6 seis circulos que mudam a cor gradativamente, com todos os circulos possuindo o mesmo gradiente.
Subscribe to:
Posts (Atom)
