Всем привет. Есть программа которая берёт автоматически точку в заданой области и кликает по ней, и как только движущая точка станет на эти координаты то мы получаем новую точку и так бесконечно.Нужно чтоб когда рандомом было задано координаты движения, можна было б их изменить с помощю нажатия кнопки мыши на новую точку. Подскажте начинающему как добавить MouseListener чтоб переменным xr и yr передавались значения координат нажатия мыши. Код программы: Код | import java.awt.AWTException; import java.awt.Color; import java.awt.Container; import java.awt.Point; import java.awt.Robot; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.event.MouseEvent;
class Zoro{ Robot r; Point pkon; public int getx(){return xr;} public int gety(){return yr;} public int setx(int w){xr=w;return xr;} public int sety(int w){yr=w;return yr;} int k1=0; int k=0; int xr=0;int yr=0; int amin=828;int amax=995;int bmin=599;int bmax=690; public void zoro(){ try { r = new Robot(); } catch (AWTException ex) { } xr=((int)(Math.random()*(amax-amin+1)+amin)); yr=((int)(Math.random()*(bmax-bmin+1)+bmin)); r.mouseMove(xr, yr); r.mousePress(InputEvent.BUTTON1_MASK); r.mouseRelease(InputEvent.BUTTON1_MASK); pkon=new Point(xr,yr); System.out.println(pkon); k++; System.out.println(k); } } class myFrame extends JFrame { int x=0;int y=0; Point poin; Point p; Zoro m= new Zoro(); public myFrame() { setTitle("Test"); JPanel panel = new JPanel(); final JButton bt1 = new JButton("Start"); panel.add(bt1); bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Start"); new Thread(new Runnable() { @Override public void run() { m.zoro(); for(;;){ Color col = new Color(90, 90, 90); for (int i =824; i <= 997; i++) { Color c1 = m.r.getPixelColor(i, 595); if (c1.equals(col)) {x=i;}} for (int j =594; j < 700; j++) { Color c1 = m.r.getPixelColor(823, j); if (c1.equals(col)) {y=j; p=new Point(x,y); if((x==m.getx())&(y==m.gety())/*p.equals(m.pkon)*/) m.zoro(); }} } }}).start(); } }); Container pane = getContentPane(); pane.add(panel); pack(); } } public class MiniMap { public static void main(String[] args) { myFrame frame = new myFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } }
|
|