Reputation: 33
I get this error:
the method pintar() in the type t33.Psicodelia is not applicable for the arguments (int,int,int,int,int,int)
How can I solve this?
I have two classes and the main tab:
Class 1
public class Logica {
Psicodelia miPsicodelia;
public Logica() {
}
public void pintar() {
miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1);
miPsicodelia.kaleidouno(posX, posY, rad, ang, depth, tam1);
}
public void pressed() {
miPsicodelia.pressed();
}
}
Class 2
public class Psicodelia {
private float anguloGrande;
private int numBolas, contador;
public Psicodelia() {
stroke(255);
this.anguloGrande = 0.0;
this.numBolas = 7;
}
public void pintar() {
//fill((int)random(0, 255), (int)random(0, 255), (int)random(0, 255));
fill(255, 255, 0, (int)random(20, 100));
pintar(width/2, height/2, height/4, 0, 0, 1);
anguloGrande += .02; //velocidad de rotacion
}
public void kaleidouno(float posX, float posY, float rad, float ang, int depth, float tam) { //pinteme las bolas en la pos posX, posY, reciba un float de radianes y de angulos, y por ultimo un int de profundidad
if (depth < contador) {
tam=(int)random(0.5, 1.5);
float anguloPeq = TWO_PI/numBolas;
for (int i=0; i < numBolas; i++) {
float nuevoRad = rad/2; //distancia y tamaño de las bolas entre ellas
float nuevoAng = ang + i*anguloPeq - anguloGrande;
float X = cos(nuevoAng)*rad + posX;
float Y = sin(nuevoAng)*rad + posY;
pintar(X, Y, nuevoRad, nuevoAng, depth + 1, 1);
}
}
else if (rad < 2) {
ellipse(posX, posY, 2.0*tam, 2.0*tam);
}
else {
ellipse(posX, posY, rad*2.0, rad*2.0);
}
}
public void pressed() {
contador++;
if (contador >= 3) {
contador--;
}
}
float getPosX () {
return posX ;
}
float getPosY () {
return posY ;
}
}
// and the main tab
Logica miLogica;
//================================================================
void setup() {
size(800,600);
smooth();
miLogica= new Logica();
}
//================================================================
void draw() {
background(0);
miLogica.pintar();
}
//================================================================
void mousePressed() {
miLogica.pressed();
}
//================================================================
Upvotes: 0
Views: 24677
Reputation: 1124
You called the method
Psicodelia miPsicodelia;
miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1);
But your Psicodelia
class only has following pintar
method:
public void pintar();
To call it the way you did you must give the method pintar()
the wished parameter.
For Example:
public void pintar(int a, int b, int c, int d, int e, int f){
// do whatever you want here
}
P.S.: Do you instantiate your miPsicodelia
Object anywhere? If not this will get you a NullPointerException
.
Upvotes: 3
Reputation: 424
Well, unless I miss something, your public void pintar()
method is declared with no parameters, so you can't call it with any. You'd have to declare it with your desired number and types of parameters:
public void pintar(int para1, int para2, int para3, int para4, int para5, int para6)
{
//Do something with the parameters.
}
Upvotes: 1