Ellipse array moving

Ciao a tutti :occhiolino:
nuovo imput progetto: sto cercando di far in modo che la ellipse(); si muova nelle mie caselle del’array utilizzando keyPressed() facendo in modo che il mio ipotetico personaggio non esca mai dall’array ne da destra ne da sinistra, io ho utilizzato in passato keyPressed() per un cambio calore ma mai per muoreve qualcosa…sono un pò in difficoltà :pensiero:
Questo è il codice che ho scritto:

float randomNum;
boolean[] contenitore = new boolean [5];

float[] cellPos = {0, 0};  
float[] cellSize = {400/5, 400};  

float xPosition = 0;


color color1 = #2179db;
color color2 = #2621db;

void setup() {
  surface.setTitle("esercizio Array");
  size(400, 400);
  background(127);
  frameRate(1);
}

void draw() {
  for (int i = 0; i <contenitore.length; i++) {
    randomNum = random(100);
    if (randomNum < 50) {
      contenitore [i] = true;
    } else {
      contenitore[i] = false;
    }
    if (contenitore[i])
      fill(color1);
    else
      fill(color2);
    rect(i*80, 150, width/5, 80 );

    stroke(0);
  }

  fill(255);
  ellipseMode(CORNER);
  ellipse(xPosition * cellSize[0], 150, 80, 80); 

  printArrayValues();
}

void printArrayValues() {
  String s = "";
  for (int i=0; i<contenitore.length; i++) {
    s += "[" + i + "]" + contenitore[i] + "\t";
  }
  println(s);
}

void keyPressed() {
  if (keyCode == LEFT) {
    ellipse(xPosition+10 * cellSize[0], 150, 80, 80);
  } else {
    ellipse() = true;
  }
  if (keyCode == RIGHT) {
  }
}

Nella parte del keyPressed() mi esce l’errore quando inserisco ellipse() = true;…questo in teoria per far in modo che si muova in riferimento al true e false(?)
Se qualcuno mi può dare una mano ne sarei grata :lying_face:

Grazie!

1 Like

The function keyPressed is only called briefly. Therefore no use to display the ellipse there.
It is enough to display it in draw().
Instead in keyPressed change the value xPosition which you use in draw for the ellipse.

Warmest regards,

Chrisir

float randomNum;
boolean[] contenitore = new boolean [5];

float[] cellPos = {
  0, 0
};  
float[] cellSize = {
  400/5, 400
};  

int xPosition = 1;

color color1 = #2179db;
color color2 = #2621db;

void setup() {
  size(400, 400);

  surface.setTitle("esercizio Array");

  background(127);
  frameRate(1);
}

void draw() {
  for (int i = 0; i <contenitore.length; i++) {
    randomNum = random(100);
    if (randomNum < 50) {
      contenitore [i] = true;
    } else {
      contenitore[i] = false;
    }
    if (contenitore[i])
      fill(color1);
    else
      fill(color2);
    rect(i*80, 150, width/5, 80 );

    stroke(0);
  }//for

  //--------------
  fill(255);
  ellipseMode(CORNER);
  ellipse(xPosition * cellSize[0], 150, 
    80, 80); 

  //printArrayValues();
}//func 

void printArrayValues() {
  String s = "";
  for (int i=0; i<contenitore.length; i++) {
    s += "[" + i + "]" + contenitore[i] + "\t";
  }
  println(s);
}

void keyPressed() {
  if (keyCode == LEFT) {   // <<<<<<<<<<<----------------------
    xPosition -= 1;
  } else if (keyCode == RIGHT) { // ----->>>>>>>>
    xPosition += 1;
  }

  //  CHECK
  if  (xPosition<0) {
    xPosition=0;
  }////if
  //
}//func
//
2 Likes

Grazie, sei sempre molto gentile e disponibile, ti ringrazio per darmi sempre direttive giuste e per sostenermi ti sono davvero riconoscente.
Grazie mille :smiling_face_with_three_hearts: :heart_eyes:

Saluti!

2 Likes