We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hi. well first thanks to koogs for the earlier answer, well I continue with the same program an I like to collide the rects that I generate in array, well the rect can move with the mousePressed function and can change orientation whith mouseButton RIGHT, I was seen on other examples how to collide two rects but when I make the rects in array I feel confused runing my code.. because i cant find the form to collide the 16 rects that I generate in array. i wish that when one rect collide with other no move anymore the rects collided or do other stuff change color etc. well here is my processing code.
moveBox[] box=new moveBox[16];//declare de object
void setup() {
size(800, 800);
rectMode(RADIUS);//de esta forma se consigue mover el cuadro desde el centro del mismo.
for (int i=0;i<box.length;i++) {
box[i] =new moveBox(25+i*50, 100, 15, 30);
}
}
void draw() {
background(0);
for (int i=0;i<box.length;i++) {
box[i].display();
box[i].move();
}
}
void mousePressed() {
if (mouseButton == RIGHT) {
for (int i=0;i<box.length;i++) {
box[i].turn();
}
}
}
class moveBox {
int px;//posicion en x
int py;//posicion en y
int wid;//ancho del bloque
int hei;//largo del bloque
int xoffset=0;//es es para que cuando hagamos click en el cuadro lo tome desde ahi y no traslade la cordenada a un punto no deseado antes de mover el mouse
int yoffset=0;
int t;//esto fija solamente la transparencia del objeto
int s;//esto es para colorear la linea de contorno del objeto al moverlo
moveBox(int PX, int PY, int WID, int HEI) {//constructor
px=PX;//parametros que se podran alterar para cada objero
py=PY;//
wid=WID;//ancho
hei=HEI;//largo
}
void display() {//metodo que muestra el objeto en pantalla con los atributos deseados
stroke(s);
strokeJoin(ROUND);
fill(255, 255, 0, t);
rect(px, py, wid, hei);
for(int i=0;i<box.length;i++){
if (rectRectIntersect(box[i].px, box[i].py,box[i].px+box[i].wid, box[i].py+box[i].hei,
box[1].px, box[1].py,box[1].px+box[1].wid, box[1].py+box[1].hei) == true) {
// mouseX=px;
// mouseY=py;
}
}
}
void move() {//metodo para mover el objeto con las condiciones de que solo al estar dentro del cuadro este puede moverse con click
if (mouseButton==LEFT&&(mouseX>px-wid)&&(mouseX<px+wid)&&
(mouseY>py-hei)&&(mouseY<py+hei)) {
px=mouseX-xoffset;//al hacer click la coordenada x de la figura se resta de 0 para evitar movimiento no deseado
py=mouseY-yoffset;// igual pero con y
s=255;
t=100;
}
else {
xoffset=mouseX-px;//al soltar el click, la figura permanece en las coordenadas que el mouse tiene y evita movimiento no deseado
yoffset=mouseY-py;//igual pero con coordenada y
t=250; //cambiar de transparencia a color opaco
s=20;//cambiar el contorno de la figura
}
}
void turn() {
if (mouseButton==RIGHT&&(mouseX>px-wid)&&(mouseX<px+wid)&&
(mouseY>py-hei)&&(mouseY<py+hei)) {
wid=wid+hei;//algoritmo para intercambiar los valores entre wid y hei
hei=wid-hei;
wid=wid-hei;
}
}
boolean rectRectIntersect(float left, float top, float right, float bottom,
float otherLeft, float otherTop, float otherRight, float otherBottom) {
return !(left > otherRight || right < otherLeft || top > otherBottom || bottom < otherTop);
}
}