package ge.edu.freeuni.sdp.snake.view.swing.screen; import ge.edu.freeuni.sdp.snake.model.Size; import ge.edu.freeuni.sdp.snake.presenter.CellContent; import ge.edu.freeuni.sdp.snake.presenter.CellPosition; import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JPanel; @SuppressWarnings("serial") public abstract class Screen extends JPanel { protected ArrayList<ArrayList<CellContent>> grid; protected int width; protected int height; protected int cellSize; public Screen(Size size, int cellSize) { width = size.getWidth(); height = size.getHeight(); this.setCellSize(cellSize); grid = new ArrayList<ArrayList<CellContent>>(); for (int i = 0; i < width; i++) { ArrayList<CellContent> row = new ArrayList<>(); for (int j = 0; j < height; j++) row.add(null); grid.add(row); } } public void update(CellPosition position, CellContent content) { grid.get(position.x).set(position.y, content); } public void getContent(CellPosition position) { grid.get(position.x).get(position.y); } public int getCellSize() { return cellSize; } public void setCellSize(int cellSize) { this.cellSize = cellSize; } @Override public abstract void paint(Graphics graphics); }