Salve a tutti. Dopo 4 giorni di lavoro, ho finito un programmino richiesto dal mio prof. Oggi l'ho presentato a lui, ma mi ha chiesto di sostituire tutti gli array creati con vettori che quindi mi permettono di usare infiniti numeri e la sua grandezza varia in base allo spazio di cui ho bisogno.
Sono davvero stremato e non so da dove cominciare, anche se lui mi ha detto che è molto semplice. Chi mi aiuta? Posto il codice
EllisseNUO1.java
import javax.swing.JApplet;
import java.awt.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.Color;
import java.awt.Shape;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Ellipse2D;
import javax.swing.JOptionPane;
public class EllisseNUO1 extends JApplet{
int n;
int[] x= new int[500];
int[] y= new int[500];
private Ellipse2D.Double ellisseCorrente;
private double inizioX;
private double inizioY;
private Point2D.Double inizio;
Ellipse2D.Double[] ovali= new Ellipse2D.Double[50];
int numEllissi;
int[] contatore=new int[500];
int ampiezza = 2;
public EllisseNUO1() {
String s;
s = JOptionPane.showInputDialog("Quanti punti vuoi disegnare nell'applet?");
n = Integer.parseInt(s);
for(int i=0; i<n;i++)
{
x[i]=(int)(700*Math.random());
y[i]=(int)(500*Math.random());
}
class AscoltaClick extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
inizioX = e.getX();
inizioY = e.getY();
ellisseCorrente = new Ellipse2D.Double(inizioX, inizioY, 0, 0);
repaint();
}
public void mouseReleased(MouseEvent e)
{
int x2 = e.getX();
int y2 = e.getY();
if(inizioX>x2 && inizioY>y2) {
ovali[numEllissi]= new Ellipse2D.Double(x2,y2,inizioX-x2,inizioY-y2);
} else if(inizioX<x2 && inizioY>y2) {
ovali[numEllissi]= new Ellipse2D.Double(inizioX,y2,x2-inizioX,inizioY-y2);
} else if(inizioX>x2 && inizioY<y2) {
ovali[numEllissi]= new Ellipse2D.Double(x2, inizioY,inizioX-x2,y2-inizioY);
} else {
ovali[numEllissi]= new Ellipse2D.Double(inizioX,inizioY,x2-inizioX,y2-inizioY);
}
for(int i=0;i<n;i++){
if(ovali[numEllissi].contains(x[i],y[i])==true)
contatore[i]++;
}
numEllissi++;
// ellisseCorrente = null;
repaint();
}
}
class AscoltaMovimento extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
int x1 = e.getX();
int y1 = e.getY();
if(inizioX>x1 && inizioY>y1) {
ellisseCorrente= new Ellipse2D.Double(x1,y1,inizioX-x1,inizioY-y1);
} else if(inizioX<x1 && inizioY>y1) {
ellisseCorrente= new Ellipse2D.Double(inizioX,y1,x1-inizioX,inizioY-y1);
} else if(inizioX>x1 && inizioY<y1) {
ellisseCorrente= new Ellipse2D.Double(x1, inizioY,inizioX-x1,y1-inizioY);
} else {
ellisseCorrente= new Ellipse2D.Double(inizioX,inizioY,x1-inizioX,y1-inizioY);
}
repaint();
}
}
MouseAdapter ascoltaEventi = new AscoltaClick();
addMouseListener(ascoltaEventi);
MouseMotionAdapter ascoltaMosse = new AscoltaMovimento();
addMouseMotionListener(ascoltaMosse);
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
g2.clearRect(0,0,getWidth(),getHeight());
g.setColor(Color.black);
for(int i=0;i<n;i++)
{
g.fillOval(x[i]-ampiezza/2,y[i]-ampiezza/2, ampiezza, ampiezza);}
if(ellisseCorrente!=null)
g2.draw(ellisseCorrente);
for(int i=0; i<numEllissi; i++)
{
g2.draw(ovali[i]);
}
for(int i=0;i<n;i++)
{
if(contatore[i]!=0){
g.setColor(Color.red);
g.fillOval(x[i]-(ampiezza*contatore[i])/2,y[i]-(ampiezza*contatore[i])/2,ampiezza*contatore[i],ampiezza*contatore[i]);
}
}
}
}
Il tutto viene caricato su un Applet di nome EllisseNUO1.html che ha codice HTML:
<html>
<head>
<title>Darhma Project</title>
</head>
<body bgcolor=<"#FFFFOO">
<h1>Darhma Project - Ellipse and Point</h1>
<center>
<applet code = "EllisseNUO1.class" width="700" height="500"> </applet>
</center>
[/list]
</body>
</html>
Ki mi aiuta? il prof dice che è facilissimo, ma io con i vettori non ho mai avuto a che fare

Rispondi quotando

