I am trying to generate a random color(between 4 colors) for each cell in a grid. I have managed to do so but it keeps redrawing itself over the outline of the grid and other elements of the grid. How can I make it so that the colors only draw once?, while my other elements keeps on drawing themselves? Here is the code I currently have:
import java.awt.*;
import java.util.Random;
public class Cell extends Rectangle {
private Random random;
public Cell(int x, int y) {
super(x, y, 35, 35);
}
public void paint(Graphics g, Boolean highlighted) {
int row;
int col;
for (row=0; row < 20 ; row++ ) {
for (col =0; col <20 ; col++) {
x=col * 35;
y=row * 35;
SurfaceType(g);
}
}
g.setColor(Color.BLACK);
g.drawRect(x, y, 35, 35);
if (highlighted) {
g.setColor(Color.LIGHT_GRAY);
g.fillRect(x, y, 35, 35);
} else {
g.setColor(Color.DARK_GRAY);
g.fillRect(x, y, 35, 35);
}
}
@Override
public boolean contains(Point target){
if (target == null)
return false;
return super.contains(target);
}
public void SurfaceType(Graphics g) {
random= new Random();
int randomNumber = random.nextInt( 5);
switch (randomNumber) {
case 1: // dirt
g.setColor(new Color(102,51,0));
g.fillRect(x,y,34,34);
break;
case 2: //grass
g.setColor(new Color(102,153,0));
g.fillRect(x,y,34,34);
break;
case 3: //tree
g.setColor(new Color(0,102,0));
g.fillRect(x,y,34,34);
break;
case 4: //rock
g.setColor(new Color(182,182,182));
g.fillRect(x,y,34,34);
break;
}
}
}
This image shows what the grid looks like when I take out the code that randomizes the color out.
And this one shows with that part of code included:
Aucun commentaire:
Enregistrer un commentaire