class invader{ float x,y,originX,originY; int dir=1; float speed, speedIncrement; int yStep; int distanceAllowed = 60; boolean alive = true ; int id = -1; int myTime = 0; int frameInterval = 200; boolean frameOne = true; color c; int incTamX = 0,incTamY=0,masmenosX=1,masmenosY=1,tamMaxX=20,tamMaxY=20,tamMinX=0,tamMinY=0; invader(int _x, int _y, int _id, float _s, float _si, int _ys){ x=originX=_x; y=originY=_y; id = _id; speed = _s; speedIncrement = _si; yStep = _ys; incTamX = int(random(tamMaxX)); incTamY = int(random(tamMaxY)); c = color(int(random(255)),int(random(255)),int(random(255))); } void update(){ if(alive){ move(); drawMe(); } } void move(){ x += speed*dir; //if(id==20){ // println(x+"__"+originX); // println((abs(originX-x)>distanceAllowed)); //println("x="+x+" s+d:"+speed*dir); //} //Si llegamos al punto que hay que cambiar de dirección... if(abs(x-originX)>distanceAllowed){ dir = -dir; y += yStep; speed += speedIncrement; } } void drawMe(){ if(millis() - myTime > frameInterval){ myTime = millis(); frameOne = !frameOne; } if(frameOne){ tint(c); rotateX(0.2); image(invadersFrameOne,x,y,invadersFrameOne.width+incTamX,invadersFrameOne.height+incTamY); } else { tint(c); rotateX(0.2); image(invadersFrameTwo,x,y,invadersFrameTwo.width+incTamX,invadersFrameTwo.height+incTamY); } incTam(); } //GETs y SETs void setX(int _x){ x=_x; } void setY(int _y){ y=_y; } float getX(){ return x; } float getY(){ return y; } void kill(){ alive = false; } boolean isAlive(){ if(alive)return true; else return false; } void incTam(){ incTamX=incTamX+1*masmenosX; incTamY=incTamY+1*masmenosY; if (incTamX > tamMaxX || incTamX < tamMinX) masmenosX=masmenosX*-1; if (incTamY > tamMaxY || incTamY < tamMinY) masmenosY=masmenosY*-1; } }