Ignore:
Timestamp:
Apr 13, 2010, 8:02:46 AM (15 years ago)
Author:
Rick van der Zwet
Message:
  • Failsave switch for mouse moving
  • Clicking optional
File:
1 edited

Legend:

Unmodified
Added
Removed
  • java-automator/src/nl/rickvanderzwet/farmville/Automator.java

    r101 r107  
    88import java.awt.AWTException;
    99import java.awt.Color;
     10import java.awt.Point;
    1011import java.awt.PointerInfo;
    1112import java.awt.Robot;
     
    2526        private static Robot bot = null;
    2627        private static Random randomGenerator = null;
     28        static boolean mouseClickEnabled = false;
     29
    2730       
    2831        private static void pressMouse() throws InterruptedException {
    29                 bot.mousePress(InputEvent.BUTTON1_MASK);
    30                 // Constant values are tricky, computers can only do that
    31                 Thread.sleep(100 + randomGenerator.nextInt(250));
    32                 bot.mouseRelease(InputEvent.BUTTON1_MASK);
     32                if (mouseClickEnabled) {
     33                        bot.mousePress(InputEvent.BUTTON1_MASK);
     34                        // Constant values are tricky, computers can only do that
     35                        Thread.sleep(100 + randomGenerator.nextInt(250));
     36                        bot.mouseRelease(InputEvent.BUTTON1_MASK);
     37                }
    3338               
    3439        }
     
    4045        private static void moveMouse(Direction direction, Integer sleep_msec) throws InterruptedException {
    4146                /* Relocate to next field */
    42                 PointerInfo pointer = MouseInfo.getPointerInfo();
    43                
    44                 Integer XMOVE = 24;
     47                Point mouse = MouseInfo.getPointerInfo().getLocation();
     48                Integer XMOVE = 22;
    4549                Integer YMOVE = 11;
    4650               
    47                 Integer x = pointer.getLocation().x;
    48                 Integer y = pointer.getLocation().y;
    49                
     51                Point newLocation = mouse;
    5052                switch (direction) {
    5153                        case UP:
    52                         bot.mouseMove(x - XMOVE, y - YMOVE);
     54                                newLocation.x -= XMOVE;
     55                                newLocation.y -= YMOVE;
    5356                        break;
    5457                        case DOWN:
    55                         bot.mouseMove(x + XMOVE, y + YMOVE);
     58                                newLocation.x += XMOVE;
     59                                newLocation.y += YMOVE;
    5660                        break;
    5761                        case LEFT:
    58                         bot.mouseMove(x - XMOVE, y + YMOVE);
     62                                newLocation.x -= XMOVE;
     63                                newLocation.y += YMOVE;
    5964                        break;
    6065                        case RIGHT:
    61                         bot.mouseMove(x + XMOVE, y - YMOVE);
     66                                newLocation.x += XMOVE;
     67                                newLocation.y -= YMOVE;
    6268                        break;
    6369                }
     70                bot.mouseMove(newLocation.x, newLocation.y);
    6471                Thread.sleep(sleep_msec);
     72               
     73                mouse = MouseInfo.getPointerInfo().getLocation();
     74                if (newLocation.x != mouse.x || newLocation.y != mouse.y) {
     75                        System.out.println("Forced exit, mouse moved externally");
     76                        System.exit(1);
     77                }
     78
    6579        }
    6680       
     
    7589                        bot = new Robot();
    7690                        PointerInfo pointer = null;
     91                        Point mouse = null;
    7792                    randomGenerator = new Random();
    7893                        // Allow time to focus Firefox window
    7994                        Thread.sleep(3000);
    8095
    81                         int x = 0 ,y = 0;
    8296                        /*
    8397                        bot.mouseMove(500, 500);
     
    88102                       
    89103                        /* Constants */
    90                         Boolean press_mouse = true;
    91                         Integer farm_size_y = 9;
     104                        Integer farm_size_y = 1;
    92105                        Integer farm_size_x = 22;
    93106                        /* 0 = up, 1 = down, 2 = left, 3 = right */
    94107                       
    95                     if (press_mouse) {
    96                         pressMouse();
    97                     }
     108                    pressMouse();
    98109                   
    99110                    Direction direction = Direction.UP;
     
    103114                        for (int j = 0; j < farm_size_x; j++) {
    104115                                pointer = MouseInfo.getPointerInfo();
    105 
    106                                 x = pointer.getLocation().x;
    107                                 y = pointer.getLocation().y;
    108                                 System.out.println("x: " + x + ", y: " + y);
     116                                        mouse = pointer.getLocation();
     117                                System.out.println("x: " + mouse.x + ", y: " + mouse.y);
    109118
    110119
    111120                                /* Too difficult, try larger parts */
    112                                 Color p = bot.getPixelColor(x, y);     
     121                                Color p = bot.getPixelColor(mouse.x, mouse.y); 
    113122                                System.out.println("Pixel color R:" + p.getRed() + ",G:" +
    114123                                                p.getGreen() + ",B:" + p.getBlue());
    115124                               
    116                                 if (press_mouse) {
    117                                         pressMouse();
    118                                 }
     125                                pressMouse();
    119126                                moveMouse(direction);
    120127                        }
     
    137144
    138145        }
    139 
    140 
    141 
    142146}
    143147
Note: See TracChangeset for help on using the changeset viewer.