import java.awt.Graphics; import java.util.ArrayList; public class Model { // instance variables private int score; private ArrayList bubbles; // constructor public Model() { score = 0; bubbles = new ArrayList(); } // getters and setters public int getScore() { return score; } /** * @param w * @param h */ public void addBubble(int w, int h) { bubbles.add(new Bubble((int) (w * Math.random()), (int) (h * Math.random()))); } /** * @param dx * @param dy */ public void moveAll(int dx, int dy) { for (int i = 0; i < bubbles.size(); i++) { bubbles.get(i).setX(bubbles.get(i).getX() + dx); bubbles.get(i).setY(bubbles.get(i).getY() + dy); } } /** * clear all bubbles * * @param w * @param h */ public void clearInvisibles(int w, int h) { for (int i = bubbles.size() - 1; i >= 0; i--) { if (!bubbles.get(i).isVisible(w, h)) { bubbles.remove(i); score--; } } } /** * delete bubbles that are hit by the mouse * * @param x * @param y */ public void deleteBubblesAtPoint(int x, int y) { for (int i = bubbles.size() - 1; i >= 0; i--) { if (bubbles.get(i).isIn(x, y)) { bubbles.remove(i); score++; } } } /** * draw all bubbles * * @param g */ public void drawAll(Graphics g) { for (IShape bubble : bubbles) { bubble.draw(g); } } public static void testModel() { Model m = new Model(); System.out.println(m.getScore() == 0); System.out.println(m.bubbles.size() == 0); m.addBubble(100, 100); m.addBubble(100, 100); System.out.println(m.getScore() == 0); System.out.println(m.bubbles.size() == 2); m.clearInvisibles(200, 200); System.out.println(m.getScore() == 0); System.out.println(m.bubbles.size() == 2); m.clearInvisibles(0, 0); System.out.println(m.getScore() == -2); System.out.println(m.bubbles.size() == 0); m.addBubble(100, 100); m.addBubble(100, 100); System.out.println(m.getScore() == -2); System.out.println(m.bubbles.size() == 2); m.moveAll(200, 200); System.out.println(m.getScore() == -2); System.out.println(m.bubbles.size() == 2); m.clearInvisibles(200, 200); System.out.println(m.getScore() == -4); System.out.println(m.bubbles.size() == 0); } }