Jeg er igang med at programmere en bot til et spil der hedder superball.
Botten består i at tage et billed, søge efter pixel farven på skærmen(Som er boldens farve) også holde musen på den
Problemet er , det går ikke hurtigt nok, det tager for lang tid at tage billed og søge osv osv
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.Color;
public class testing {
static int width = Toolkit.getDefaultToolkit().getScreenSize().width;
static int height = Toolkit.getDefaultToolkit().getScreenSize().height;
Color col;
Robot robot;
Rectangle scrnrectangle;
public testing(){
col = new Color(25,178,23); // Dette er et nyt objekt af Color klassen, (Bruges til at specifere hvilken farve vi vil have
try {
robot = new Robot();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // dette er et nyt object af klassen robot, så det kan bruges
scrnrectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); // Dette er til selve skærmens omfang
new Thread(new ImageRunner()).start();
}
public static void main(String[] args) throws AWTException{
testing t = new testing();
}
private class ImageRunner implements Runnable{
@Override
public void run() {
while(true){
boolean run = true;
BufferedImage bufferedImage = robot.createScreenCapture(scrnrectangle); // Dette er for at lave et buffered image, som senere bruges til at søge igennem
for(int x = 0 ; x<width/2 ; x++){
for(int y = 0; y <height/2; y++){
int RGB = bufferedImage.getRGB(x, y);
int red = (RGB & 0x00ff0000) >> 16;
int green = (RGB & 0x0000ff00) >> 8;
int blue = RGB & 0x000000ff;
Color pixelcolor = new Color(red,green,blue); // til at lave et nyt objekt der indeholder de nye farver fra "pixlen"
if(pixelcolor.equals(col)){
//Hvad den skal gøre når den specifikke pixel er fundet
// System.out.println("Pixel farve fundet!!" + pixelcolor);
robot.mouseMove(x, y);
run = false;
break;
}
}
if(!run){
break;
}
}
}
}
}
}
Der er al min kode.
Spørgsmålet er så, hvad kan jeg gøre for at det bliver hurtigere
Er der andre måder jeg kan gøre det på ?