We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hi, I am working on a game which has a board of circles (4 circles X 5 circles), like here (Please pay attention just to the circles)
Anybody have a an idea for this? Here is my stating code that I need (adding the new code in the TODO comment):
Main Program
Circle[][] circles;
int cols=4, rows=5;
void setup() {
size(540, 960);
circles=new Circle[cols][rows];
for (int x=0; x<cols; x++) {
for (int y=0; y<rows; y++) {
// TODO: init new circle
//circles[x][y]=new Circle(some x, some y, r);
circles[x][y].setColorFill(color(255, 0, 100));
}
}
}
void draw() {
background(50, 50, 75);
for (int x=0; x<cols; x++) {
for (int y=0; y<rows; y++) {
circles[x][y].show();
}
}
Circle Class
public class Circle {
private float x, y, r;
private color fill;
public Circle(float x, float y, float r) {
this.x=x;
this.y=y;
this.r=r;
}
public void setColorFill(color fill) {
this.fill=fill;
}
public void show() {
noStroke();
fill(fill);
ellipse(x, y, r, r);
}
}
Answers
Select the code. Press ctrl + o to indent your code. Leave a line above and below the code.
And don't put line breaks inside HTML tags.
@Raz -- I'm not sure I understand your question.
You have to initialize the circle before you set its fill color. You already have a commented out line (#11) showing how to initialize the circle. The code gives an error, saying that the initialization line is needed. It is right there -- why don't you add that line?
Was this template and this suggestion provided by someone else, and do you first need to understand how objects are created with the
new
keyword to get what the line is doing?Or is the issue instead that you understand what
new
does, but you don't know how to map values from your loop variables (x=0,1,2,3) onto calling circles that are drawn at screen locations (0,100,200,300 pixels)...? For example, x*100.@jeremydouglass I know, This code will not run! I know how to initialize the object, but as you said, I don't know how to map the values of each variable which will be depend by the screen. The problem is exactly what you have describe as the last problem
Well, start out by trying it manually!:
You can change values and rurun several times to see what works, or you can use Tweak mode to change those values live, and see what each one does.
Once you have values that work for the visual effect you want, consider computing those values on their relationship to the sketch -- for example, the
width
andheight
of the screen.First you will need a square canvas to draw your circle since you have only one r as your radius. Unless if you want to draw ellipse you will need one more argument for another radius.
But you can still do this
Main class:
I used width because it was smaller. So I could compact the circles perfectly. Hope it works.