codice:
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
if(bersagli==null)
bersagli = new ArrayList<Bersaglio>();
else
disegna(g2);
g2.setColor(new Color(22,43,86));
}
public void disegna(Graphics2D g2){
for(int i=0; i<bersagli.size(); i++){
((Bersaglio)bersagli.get(i)).disegna(g2);
}
}
//METODI MOUSE LISTENER
public void mouseMoved(MouseEvent e){ }
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
for(int i=0; i<bersagli.size(); i++){
if (ElementiDaRimuovere == null)
ElementiDaRimuovere = new ArrayList<Bersaglio>();
if(bersagli.get(i).cerchio5.contains(x, y) ){
Punti += 50;
Obiettivi += 1;
Colpiti += 1;
Player.setPoints(Player.getPoints()+50);
ElementiDaRimuovere.add(bersagli.get(i));
myDati.refreshDati();
} else if (bersagli.get(i).cerchio4.contains(x,y)){
Punti += 40;
Player.setPoints(Player.getPoints()+40);
Obiettivi += 1;
Colpiti += 1;
ElementiDaRimuovere.add(bersagli.get(i));
myDati.refreshDati();
} else if (bersagli.get(i).cerchio3.contains(x,y)){
Punti += 30;
Player.setPoints(Player.getPoints()+30);
Obiettivi += 1;
Colpiti += 1;
ElementiDaRimuovere.add(bersagli.get(i));
myDati.refreshDati();
} else if (bersagli.get(i).cerchio2.contains(x,y)){
Punti += 20;
Player.setPoints(Player.getPoints()+20);
Obiettivi +=1 ;
Colpiti += 1;
ElementiDaRimuovere.add(bersagli.get(i));
myDati.refreshDati();
} else if (bersagli.get(i).cerchio1.contains(x,y)){
Punti += 10;
Player.setPoints(Player.getPoints()+10);
Obiettivi += 1;
Colpiti += 1;
ElementiDaRimuovere.add(bersagli.get(i));
myDati.refreshDati();
}
if (ElementiDaRimuovere != null){
for(int j=0; j<ElementiDaRimuovere.size(); j++){
bersagli.remove(ElementiDaRimuovere.get(j));
}
ElementiDaRimuovere.clear(); // "pulisco" l'array dalle cose da rimuovere
}
}
}
public void mouseReleased(MouseEvent e){ }
public void mouseClicked(MouseEvent e){ }
public void mouseEntered(MouseEvent e){ }
public void mouseDragged(MouseEvent e) { }
public void mouseExited(MouseEvent e){ }
}
class DatiPanel extends JPanel{
private JLabel StageLabel, ObiettiviLabel, PuntiLabel;
public int getStage() { return Stage; }
public int getObiettivi() { return Obiettivi; }
public int getPunti() { return Punti; }
public void setStage(int value) { Stage = value; }
public void setObiettivi(int value) { Obiettivi = value; }
public void setPunti(int value) { Punti = value; }
public void refreshDati(){
StageLabel.setText("Stage:\t"+Stage);
ObiettiviLabel.setText("Obiettivi:\t"+Obiettivi+" /10");
PuntiLabel.setText("Punti:\t"+Punti);
}
public DatiPanel(int Stage, int Obiettivi, int Punti){
StageLabel = new JLabel("Stage:\t"+Stage);
ObiettiviLabel = new JLabel("Obiettivi:\t"+Obiettivi+" /10");
PuntiLabel = new JLabel("Punti:\t"+Punti);
add(StageLabel);
add(ObiettiviLabel);
add(PuntiLabel);
}
}
}
class Bersaglio{
Ellipse2D.Double cerchio1, cerchio2, cerchio3, cerchio4, cerchio5;
double raggio;
double G;
Point2D centro;
Color cBersaglioRosso, cBersaglioBianco;
Vector2 direzione;
double speed;
public Bersaglio(double x, double y){
centro = new Point2D.Double(x, y);
cBersaglioRosso = new Color(210, 0 ,5); //Colore circonferenza rossa
cBersaglioBianco = new Color(255,255,255); //Colore circonferenza bianca
direzione = new Vector2(0,0);
speed = 0;
G = 40;
raggio = G;
cerchio1 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (4*G)/5;
cerchio2 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (3*G)/5;
cerchio3 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (2*G)/5;
cerchio4 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = G/5;
cerchio5 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
}
public void disegna(Graphics2D figura){
figura.setColor(cBersaglioRosso);
figura.fill(cerchio1);
figura.setColor(cBersaglioBianco);
figura.fill(cerchio2);
figura.setColor(cBersaglioRosso);
figura.fill(cerchio3);
figura.setColor(cBersaglioBianco);
figura.fill(cerchio4);
figura.setColor(cBersaglioRosso);
figura.fill(cerchio5);
}
public void setSpeed(double s) {speed = s; }
public double getSpeed() { return speed; }
public void setCentro(Point2D centroNew) { centro = centroNew; }
public Point2D getCentro() { return centro; }
public void setDirection(Vector2 v) {direzione = v; }
public void setDirection(double dx, double dy) { direzione = new Vector2(dx,dy); direzione.normalize(); }
public Vector2 getDirection() { return direzione; }
public void move(){
double raggio = G;
centro = new Point2D.Double(centro.getX()+(direzione.getX()*speed), centro.getY()+(direzione.getY()*speed) );
cerchio1.setFrame( centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (4*G)/5;
cerchio2.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (3*G)/5;
cerchio3.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = (2*G)/5;
cerchio4.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
raggio = G/5;
cerchio5.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
}
public void directTo(Point2D p){
direzione = new Vector2( p.getX() - centro.getX(), p.getY() - centro.getY() );
direzione.normalize();
}
}
class Vector2{
private double x,y;
public Vector2(double a, double b){
x = a;
y = b;
}
public double getX() {return x; }
public void setX(double a) { x = a; }
public double getY() {return y; }
public void setY(double b) { y = b; }
public double length(){
return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
}
public void normalize(){
double l = length();
x = x/l;
y = y/l;
}
}
class Giocatore{
private int Stage;
private int Obiettivi;
private int Points;
private String Nome;
Giocatore(){
this("",1,0,0);
}
Giocatore(String newNome, int newStage, int newObiettivi, int newPoints){
setNome(newNome);
setStage(newStage);
setObiettivi(newObiettivi);
setPoints(newPoints);
}
public void setNome(String newNome){ Nome = newNome; }
public void setStage(int newStage){ Stage = newStage; }
public void setObiettivi(int newObiettivi){ Obiettivi = newObiettivi; }
public void setPoints(int newPoints) { Points = newPoints; }
public String getNome() { return Nome; }
public int getStage() { return Stage; }
public int getObiettivi() { return Obiettivi; }
public int getPoints() { return Points; }
}