Witam, mam za zadanie napisać aplet, który narysuje pewien rysunek a następnie po kliknięciu w obszar wykona akcję. (na rysunku jest mi. człowiek, który kiedy kliknie się mu na głowę ma sprawić, że przybiegnie do niego pies i słońce zacznie się przesuwać.
Poniżej zamieszczam kod, który udało mi się napisać, ale tego kliknięcia nie mogę za nic zrobić:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class klasa extends Applet implements MouseListener
{
int x,y;
public void init()
{
addMouseListener(this);
}
public void paint(Graphics g)
{
Color fioletowy = new Color(150,0,100);
Color szary = new Color(190,190,190);
boolean promien = true;
Image pies = getImage(getDocumentBase(),"pies.gif");
Image drzewom = getImage(getDocumentBase(),"drzewom.jpg");
Image drzewod = getImage(getDocumentBase(),"drzewod.jpg");
// niebo
g.setColor(new Color(0,128,255));
g.fillRect(0,0,1000,315);
//trawa
g.setColor(new Color(28,80,0));
g.fillRect(0,315,1000,285);
//droga
int tabdrx[] = {480,555,685,295,480};
int tabdry[] = {315,315,600,600,315};
g.setColor(new Color(90,90,90));
g.fillPolygon(tabdrx,tabdry,(tabdrx.length)-1);
//czlowiek
g.setColor(Color.black);
g.fillOval(511,334,14,14);
g.drawLine(518,345,518,373);
g.drawLine(518,353,527,362);
g.drawLine(518,353,510,362);
g.drawLine(518,373,527,384);
g.drawLine(518,373,510,384);
//drzewa
int tabdx[] = {625,650,635,650,635,650,600,615,600,615,600,625};
int tabdy[] = {290,325,325,350,350,375,375,350,350,325,325,290};
g.setColor(new Color(54,151,1));
g.fillPolygon(tabdx,tabdy,(tabdx.length)-1);
g.setColor(new Color(128,64,0));
g.fillRect(620,375,14,10);
g.drawImage(drzewom,650,390,this);
g.drawImage(drzewod,785,430,this);
for(int i=0; i<600; i+=5)
{
//blok
g.setColor(szary);
g.fillRect(145,145,170,325);
int tabbx[] = {187,353,353,315,315,145,187};
int tabby[] = {99,99,423,469,145,145,99};
g.setColor(new Color(117,117,117));
g.fillPolygon(tabbx,tabby,(tabbx.length)-1);
//drzwi
g.setColor(fioletowy);
g.fillRect(205,395,50,75);
//okna
g.setColor(new Color(3,171,161));
g.fillRect(165,165,55,100);
g.fillRect(240,165,55,100);
g.fillRect(165,280,55,100);
g.fillRect(240,280,55,100);
//slonce
g.setColor(new Color(255,255-(i/3),0));
g.fillOval(817-i,46+(i/4),40,40);
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{}
if(promien == true)
{
//promien1
g.drawLine(839-i,7+(i/4),839-i,36+(i/4));
g.drawLine(868-i,68+(i/4),897-i,68+(i/4));
g.drawLine(839-i,98+(i/4),839-i,127+(i/4));
g.drawLine(778-i,68+(i/4),807-i,68+(i/4));
promien = false;
} else {
//promien2
g.drawLine(839-i,7+(i/4),839-i,26+(i/4));
g.drawLine(878-i,68+(i/4),897-i,68+(i/4));
g.drawLine(839-i,108+(i/4),839-i,127+(i/4));
g.drawLine(778-i,68+(i/4),797-i,68+(i/4));
promien = true;
}
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{}
g.setColor(new Color(0,128,255));
g.fillOval(817-i,46+(i/4),40,40);
g.drawLine(839-i,7+(i/4),839-i,36+(i/4));
g.drawLine(868-i,68+(i/4),897-i,68+(i/4));
g.drawLine(839-i,98+(i/4),839-i,127+(i/4));
g.drawLine(778-i,68+(i/4),807-i,68+(i/4));
//pies
g.setColor(new Color(90,90,90));
g.fillRect(501,502-(i/5),47,85);
g.drawImage(pies,503,504-(i/5),this);
}
}
public void mouseClicked(MouseEvent e)
{
x = e.getX();
y = e.getY();
if(x>511 && x<525 && y>324 && y<338)
{
repaint();
}
}
public void mousePressed(MouseEvent e)
{}
public void mouseReleased(MouseEvent e)
{}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
}
Jeśli ktoś mógłby poprawić ten kod, ewentualnie wyjaśnić jak to zrobić byłbym wdzięczny :)