Skip to content
 

Código da aula de máquina de estados (turma quinta)


float x=200,vx=1, y=100, vy = 1;
float xinimigo = 50, yinimigo=70;
int estado = 0;
void setup() {
 size(300,300);
}
void draw() {
 x = x + vx;
 if(estado==0) { // VAGANDO
 vagando();
 if(dist(x,y,xinimigo,yinimigo)<50)
 estado = 1;
 }
 if(estado==1) { // ATACANDO
 atacando();
 if(dist(x,y,xinimigo,yinimigo)<5) {
 estado = 0;
 xinimigo = random(width);
 yinimigo = random(height);
 }
 }
 background(0,0,255);
 fill(0,255,0);
 ellipse(x,y,20,20);
 fill(255,0,0);
 ellipse(xinimigo,yinimigo,20,20);
}
void atacando() {
 y = y + vy;
 if(x<xinimigo) {
 vx = 1;
 } else {
 vx = -1;
 }
 if(y<yinimigo) {
 vy = 1;
 } else {
 vy = -1;
 }
}

void vagando() {
 // Se bater nas laterais, volta!
 if(x>width || x<0) {
 vx = -vx;
 }
}
float x=200,vx=1, y=100, vy = 1;
float xinimigo = 50, yinimigo=70;
int estado = 0;
void setup() {
 size(300,300);
}
void draw() {
 x = x + vx;
 switch(estado) {
 case 0:
 vagando();
 if(dist(x,y,xinimigo,yinimigo)<50)
 estado = 1;
 break;
 case 1:
 atacando();
 if(dist(x,y,xinimigo,yinimigo)<5) {
 estado = 0;
 xinimigo = random(width);
 yinimigo = random(height);
 }
 break;
 }
 background(0,0,255);
 fill(0,255,0);
 ellipse(x,y,20,20);
 fill(255,0,0);
 ellipse(xinimigo,yinimigo,20,20);
}
void atacando() {
 y = y + vy;
 if(x<xinimigo) {
 vx = 1;
 }
 else {
 vx = -1;
 }
 if(y<yinimigo) {
 vy = 1;
 }
 else {
 vy = -1;
 }
}

void vagando() {
 // Se bater nas laterais, volta!
 if(x>width || x<0) {
 vx = -vx;
 }
}

Deixar uma Resposta

Você precisa estar logado para postar um comentário.