package graphicsElements; import javax.swing.JComponent; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.*; import gameElements.Grid; public class GridComponent extends JComponent implements MouseListener { private Grid grid; private int unitSize; /** * * @param n the size of the grid */ public GridComponent(Grid g, int s) { this.addMouseListener(this); grid = g; unitSize = s; } /** * paints the component in a frame */ public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; Rectangle2D.Double r; Ellipse2D.Double e = new Ellipse2D.Double(); for (int i = 0; i < this.grid.getSize(); i++) { for (int j = 0; j < this.grid.getSize(); j++) { r = new Rectangle2D.Double(i * this.unitSize, j * this.unitSize, this.unitSize, this.unitSize); g2.setColor(Color.GRAY); g2.draw(r); //test to see which cells have been manipulated //System.out.println("(" + i + ", " + j + ") = " + grid.isOccupied(i, j)); //if is occupied, fill in cell if(grid.isOccupied(i, j)) { e.setFrame(r.x + (this.unitSize / 5), r.y + (this.unitSize / 5), 3 * (this.unitSize / 5), 3 * (this.unitSize / 5)); g2.setColor(Color.RED); g2.fill(e); } } } } public Grid getGrid() { return this.grid; } public void setBoxSize(int s) { this.unitSize = s; this.repaint(); } public void mouseExited(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) { this.grid.changeState(Math.round((e.getY() / this.unitSize)), Math.round((e.getX() / this.unitSize))); this.repaint(); } }