Problems with conditionals and cicle for
in
Programming Questions
•
2 years ago
Hi, I'm from Argentina and i'm new in the forum. I'm just starting with Processing.
Sorry for my english.
Here is my problem:
I have this conditional
void tocandoHermanitos() {
if (tocandoHnos==true) {
tocandoHnos = !tocandoHnos;
cantPal= cantPal + 1;
println(cantPal);
}
}
when tocandoHnos is true i want to add a value to "cantPal"... my problem is that "tocandoHnos" is always true because the circles keep toghether, so cantPal is always adding new values. (line 202)
- Palabra p1[];
- int cantCir;
- void setup() {
- size (800, 600);
- ellipseMode(CENTER);
- cantCir=8;
- p1 = new Palabra[ cantCir ];
- for ( int i=0 ; i<p1.length ; i++ ) {
- p1[0] = new Palabra( 0);
- p1[1] = new Palabra( 1);
- p1[2] = new Palabra( 0);
- p1[3] = new Palabra( 1);
- p1[4] = new Palabra( 0);
- p1[5] = new Palabra( 1);
- p1[6] = new Palabra( 0);
- p1[7] = new Palabra( 1);
- }
- }
- void draw() {
- background(255);
- for ( int i=0 ; i<p1.length ; i++ ) {
- for ( int j=0 ; j<p1.length ; j++ ) {
- if ( i!=j) p1[i].choquePalabras( j, p1);
- }
- }
- for ( int i=0 ; i<p1.length ; i++ ) {
- p1[i].queCirc();
- p1[i].mover( );
- p1[i].tocandoHermanitos ();
- }
- }
- void mousePressed() {
- for ( int i=0 ; i<p1.length ; i++ ) {
- p1[i].apretar();
- }
- }
- void mouseReleased() {
- for ( int i=0 ; i<p1.length ; i++ ) {
- p1[i].toq();
- }
- }
- class Palabra {
- float x, y, velocidad, radio, alfa, direccion, dx, dy, lado, contador ;
- int cod, cantPal, pj;////////////////////////////////////////////////////////////////////////////////se define
- String palabra;
- boolean estaTocado =false;
- boolean tocandoEnemi =false;
- boolean tocandoHnos =false;
- boolean estaCambiado =false;
- boolean tocado =false;
- Palabra hermanos [];
- Palabra(int cod_) {
- cod=cod_;
- alfa=70;
- x= random (50, width-50);
- y= random (50, height-50);
- lado=20;
- cantPal=0;///////////////////////////////////////////////////////////////////////////////su valor
- contador=50;
- //PARAMETROS MOVIMIENTO
- velocidad=0;
- direccion=random (radians (360));
- dx = velocidad * cos( direccion );
- dy = velocidad * sin( direccion );
- }
- ////PARAMETROS/////////////////////////////
- //CIRCULO
- void queCirc() {
- ellipseMode(CENTER);
- noStroke();
- if (cod==1) {
- fill(255, 0, 0, alfa );
- }
- if (cod==0) {
- fill(0, 0, 255, alfa );
- }
- ellipse(x, y-5, lado, lado);
- }
- /////
- void apretar () {
- float distDelMouse= dist( mouseX, mouseY, x, y );
- if (mouseButton == LEFT && distDelMouse < lado/2 /*&& cantPal => 2 */) {///////////////////////////////mientras sea menor o igual que 2 se activa
- estaTocado=!estaTocado;
- }
- if ( mouseButton == RIGHT && distDelMouse < lado/2 ) {
- estaCambiado= !estaCambiado;
- }
- }
- void mover () {
- if (y+lado/2>height-20 || y-lado/2<20 ) {
- dy = dy * -1;
- }
- if ( x+lado/2>width-20 || x-lado/2<20 ) {
- dx = dx * -1;
- }
- x = x + dx;
- y = y + dy;
- /////EstaTOCADO
- if (estaTocado==true ) {
- x=mouseX;
- y=mouseY;
- lado=200;
- alfa=90;
- }
- else {
- lado= 20;
- estaTocado=false;
- alfa=70;
- }
- if (estaCambiado==true && cod==0) {
- cod=1;
- estaCambiado=false;
- }
- if (estaCambiado==true && cod==1) {
- cod=0;
- estaCambiado=false;
- }
- }
- void toq () {
- float distDelMouse= dist( mouseX, mouseY, x, y );
- if (mouseButton == LEFT && distDelMouse < lado/2 && estaTocado==false) {
- tocado=true;
- }
- else {
- tocado=false;
- }
- }
- ////////////////////// CHOQUE ENTRE PALABRASSSSSSSSSSSSSSS
- void choquePalabras ( int pj_, Palabra pOtro [] ) {
- pj=pj_;
- hermanos = new Palabra[pj];
- for (int i=0 ; i<hermanos.length ; i++) {
- hermanos[i] = pOtro [pj_];
- float distLimite = lado/2 + hermanos[i].lado/2;
- ////////////////////////////ENEMIS//////////////////////////////
- if ( hermanos[i].x-x < distLimite+10 && x-hermanos[i].x < distLimite+10 &&
- hermanos[i].y-y < distLimite+10 && y-hermanos[i].y < distLimite+10
- && tocandoEnemi==false && hermanos[i].cod == cod ) {
- tocandoEnemi=true;
- velocidad=15;
- float angulo = atan2( hermanos[i].y-y, hermanos[i].x-x );
- direccion = angulo+PI;
- dx = velocidad * cos( direccion );
- dy = velocidad * sin( direccion );
- }
- else if (tocandoEnemi==true) {
- contador--;
- if (contador==0) {
- velocidad=0;
- dx=0;
- dy=0;
- tocandoEnemi=!tocandoEnemi;
- contador=50;
- }
- }
- //////////////////////TOCADO MIENTRAS ESTA SELECCIONADO///////////////////
- if ( hermanos[i].x-x < distLimite && x-hermanos[i].x < distLimite &&
- hermanos[i].y-y < distLimite && y-hermanos[i].y < distLimite &&
- estaTocado==true && hermanos[i].cod != cod && tocado == false) {
- tocandoHnos=true; ////////////////////////////////////////////////////////////////////////////tocandoHnos is true, //so cantPal can be ejecuted.
- if (x<hermanos[i].x) {
- hermanos[i].x= x+distLimite/2;
- }
- else if (x>hermanos[i].x) {
- hermanos[i].x= x-distLimite/2;
- }
- if (y<hermanos[i].y) {
- hermanos[i].y= y+distLimite/2;
- }
- else if (y>hermanos[i].y) {
- hermanos[i].y= y-distLimite/2;
- }
- }
- ///////////////////// mientras esta deselecc //////////////////////////////
- if (hermanos[i].x-x < 100 && x-hermanos[i].x < 100 &&
- hermanos[i].y-y < 100 && y-hermanos[i].y < 100 &&
- tocado == true && estaTocado == false && hermanos[i].cod != cod ) {
- if (x<hermanos[i].x) {
- hermanos[i].x=x+distLimite;
- hermanos[i].y=y;
- }
- if (x>hermanos[i].x) {
- hermanos[i].x=x-distLimite;
- hermanos[i].y=y;
- }
- }
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- void tocandoHermanitos() {
- if (tocandoHnos==true) {
- tocandoHnos = !tocandoHnos;
- cantPal= cantPal + 1;
- println(cantPal);
- }
- }
- }
1