# Simulate Mouse movement with Robot

**URL:** <https://discourse.processing.org/t/simulate-mouse-movement-with-robot/34301>\
**Category:** Beginners\
**Created:** [December 26, 2021, 4:53pm UTC](https://discourse.processing.org/t/simulate-mouse-movement-with-robot/34301 "2021-12-26T16:53:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pml](https://avatars.discourse-cdn.com/v4/letter/p/9fc348/32.png) [@pml](https://discourse.processing.org/u/pml)\
**Post date:** [December 26, 2021, 4:53pm UTC](https://discourse.processing.org/t/simulate-mouse-movement-with-robot/34301/1 "2021-12-26T16:53:38Z")

</div>

Hello !

I’m attempting to simulate the movement of my mouse with Robot but it does not work : my mouse just jump between the points but the particles don’t follow it.  
Can you explain me what is wrong with my code ?

import java.awt.AWTException;  
import java.awt.Robot;  
Robot robot;

int x;  
int y;  
float thold = 5;  
float spifac = 1.05;  
int outnum;  
float drag = 0.01;  
int big = 500;  
ball bodies[] = new ball[big];  
float mX;  
float mY;  
int[] mousX={200,100,900,230};  
int[] mousY={200,100,450,300};

void setup() {  
size(900, 450);  
strokeWeight(1);  
fill(255, 255, 255);  
stroke(255, 255, 255, 5);  
background(0, 0, 0);  
smooth();  
for(int i = 0; i \< big; i++) {  
bodies[i] = new ball();  
}  
try  
{  
robot = new Robot();  
robot.setAutoDelay(40);  
}  
catch (AWTException e)  
{  
println(“Robot class not supported by your system!”);  
exit();  
}  
}

void draw() {  
if(keyPressed) {  
saveFrame("Focus " + outnum);  
outnum++;  
}  
if(mousePressed) {  
background(0, 0, 0);

```
mX += 0.3 * (mouseX - mX);
mY += 0.3 * (mouseY - mY);

```

}  
for (int k=0; k\<2;k = k+1) {  
x=mousX[k];  
y=mousY[k];  
robot.delay(1000);  
robot.mouseMove(x, y);  
mX += 0.3 \* (mouseX - mX);  
mY += 0.3 \* (mouseY - mY);  
for(int i = 0; i \< big; i++) {  
bodies[i].render();  
}  
}  
}

class ball {  
float X;  
float Y;  
float Xv;  
float Yv;  
float pX;  
float pY;  
float w;  
ball() {  
X = random(width);  
Y = random(height);  
w = random(1 / thold, thold);  
}  
void render() {  
if(!mousePressed) {  
Xv /= spifac;  
Yv /= spifac;  
}  
Xv += drag \* (mX - X) \* w;  
Yv += drag \* (mY - Y) \* w;  
X += Xv;  
Y += Yv;  
line(X, Y, pX, pY);  
pX = X;  
pY = Y;  
}  
}
