@Override
	public void paint(Graphics g) {
		if (state == GameState.Running) {
			// background goes on bottom
			g.drawImage(background, bg1.getBgX(), bg1.getBgY(), this);
			g.drawImage(background, bg2.getBgX(), bg2.getBgY(), this);
			// then Rachel's bullets
			ArrayList<Bullet> rachelBullets = rachel.getBullets();
			for (int i = 0; i < rachelBullets.size(); i++) {
				Bullet b = (Bullet) rachelBullets.get(i);
				g.setColor(Color.decode("AAAAAA"));
				g.fillOval(b.getX(), b.getY(), 15, 15);
			}
			// then Aisha's bullets
			ArrayList<Bullet> aishaBullets = getAisha().getBullets();
			for (int i = 0; i < aishaBullets.size(); i++) {
				Bullet b = (Bullet) aishaBullets.get(i);
				g.drawImage(aishaBullet, b.getX(), b.getY(), this);
			}
			// then Aisha
			g.drawImage(aisha_animate.getImage(), getAisha().getCenterX() - 30,
					getAisha().getCenterY() - 60, this);
			// then JIDF
			for (int i = 0; i < idf.size(); i++) {
				JIDF IDF = (JIDF) idf.get(i);
				g.drawImage(jidf, IDF.getCenterX() - 13, IDF.getCenterY() - 29,
						this);
				ArrayList<Bullet> bullets = IDF.getBullets();
				for (int j = 0; j < bullets.size(); j++) {
					Bullet b = (Bullet) bullets.get(j);
					g.drawImage(IDFBullet, b.getX(), b.getY(), this);
				}
			}
			// then Rachel
			g.drawImage(rachel_animate.getImage(), rachel.getCenterX() - 50,
					rachel.getCenterY() - 68, this);
			// draw score
			g.setFont(font);
			g.setColor(Color.WHITE);
			g.drawString("Score: ", 500, 30);
			g.drawString(Integer.toString(score), 575, 30);
			// draw health
			g.drawString("Health: ", 500, 60);
			int healthStartX = 575;
			for (int i = 0; i < getAisha().getCurrentHealth(); i++) {
				g.drawImage(aishaHealth, healthStartX, 48, this);
				healthStartX += 25;
			}
			healthStartX = 575;
			// draw Spell
			g.drawString("Spell: ", 500, 90);
			for (int i = 0; i < getAisha().getCurrentSpell(); i++) {
				g.drawImage(aishaSpell, healthStartX, 78, this);
				healthStartX += 25;
			}
		} else if (state == GameState.Dead) {
			g.setColor(Color.BLACK);
			g.fillRect(0, 0, 800, 700);
			g.setColor(Color.WHITE);
			g.drawString("Dead", 360, 350);
		}
	}