Changed Many things (Added randomnes slider, Added Updater)

This commit is contained in:
mrbesen 2017-04-07 09:21:52 +02:00
parent e973dfc108
commit 1483658935
4 changed files with 121 additions and 77 deletions

View File

@ -28,9 +28,7 @@ public class Clicker implements Runnable{
private boolean autoplay; private boolean autoplay;
private boolean doubleplayout = true; private boolean doubleplayout = true;
private int truppenwait = 180; private int truppenwait = 180;
private int randomness = 15;
public Clicker() {
}
private void sleep( int ms) { private void sleep( int ms) {
if(skipbattle) if(skipbattle)
@ -121,13 +119,13 @@ public class Clicker implements Runnable{
modifier = 1.5f; modifier = 1.5f;
// eingestellter wert (0.1 sec) ggf. durch 2 teilen vergangene zeit abziehen (zeit fürs setztem der letzten truppen) // eingestellter wert (0.1 sec) ggf. durch 2 teilen vergangene zeit abziehen (zeit fürs setztem der letzten truppen)
int waittime = ( (int) (((truppenwait * 100) / modifier) - (System.currentTimeMillis()- lastwait)) );//how long to wait? int waittime = ( (int) (((truppenwait * 100) / modifier) - (System.currentTimeMillis()- lastwait)) );//how long to wait?
Main.get().ui.info("Waiting for: " + waittime);
while (waittime > 1500 & !skipbattle) {//check for the ok-button every 3 seconds while (waittime > 1500 & !skipbattle) {//check for the ok-button every 3 seconds
long startwait = System.currentTimeMillis();//record needed time long startwait = System.currentTimeMillis();//record needed time
if(checkOK(end, rob)) {//check if(checkOK(end, rob)) {//check
okcount ++;//ok button detected okcount ++;//ok button detected
if(okcount >= okcountmin) { if(okcount >= okcountmin) {
Main.get().ui.info("OK-button detected!"); Main.get().ui.info("OK-button detected!");
System.out.println("OK-Button-detected!");
skipbattle = true; skipbattle = true;
break; break;
} }
@ -167,9 +165,9 @@ public class Clicker implements Runnable{
clickL(rob, cardslots[card]);//click on the card slot clickL(rob, cardslots[card]);//click on the card slot
sleep(450);//lets Teamviewer transmit the data to the phone and let the phone some time zto sumbit the data to supercell. sleep(450);//lets Teamviewer transmit the data to the phone and let the phone some time zto sumbit the data to supercell.
if(playout != null)//a specified playout spot if(playout != null)//a specified playout spot
clickL(rob, playout);//click on the playout location clickL(rob, playout.add(new Point(randomness)));//click on the playout location
else else
clickL(rob, battle);//non specified playout spot (the battle start button is a good position to play out cards) clickL(rob, battle.add(new Point(randomness)));//non specified playout spot (the battle start button is a good position to play out cards)
} }
} }
@ -221,6 +219,10 @@ public class Clicker implements Runnable{
autoplay = a; autoplay = a;
} }
public void setRandmones(int rand) {
randomness = rand;
}
public boolean bothset() { public boolean bothset() {
return (end != null & battle != null); return (end != null & battle != null);
} }

View File

@ -1,5 +1,7 @@
package mrbesen.cr.auto.clicker; package mrbesen.cr.auto.clicker;
import java.util.Random;
public class Point { public class Point {
int x = 0, y = 0; int x = 0, y = 0;
@ -21,4 +23,14 @@ public class Point {
public Point add(int x, int y) { public Point add(int x, int y) {
return new Point(this.x+x, this.y+y); return new Point(this.x+x, this.y+y);
} }
public Point(int random) {
Random rand = new Random();
x = rand.nextInt(random) - (random/2);
y = rand.nextInt(random) - (random/2);
}
public Point add(Point a) {
return new Point(a.x+x, a.y+y);
}
} }

View File

@ -29,6 +29,7 @@ public class PosSelector implements Runnable {
ui.bot.set(ui.bot.getMouse(), num);//get and save the position ui.bot.set(ui.bot.getMouse(), num);//get and save the position
ui.info("Position saved!"); ui.info("Position saved!");
green(); green();
ui.setPositionDone();
} }
public void green() { public void green() {

View File

@ -20,51 +20,61 @@ import javax.swing.JSlider;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
public class UI implements ActionListener, ChangeListener{ import com.sun.istack.internal.Nullable;
JFrame frame = new JFrame("Clash Royale Bot · by MrBesen");; public class UI implements ActionListener {
JPanel root = new JPanel(); private boolean isSelectionRunning = false; //true if an selection Thread is working,
JPanel top = new JPanel();
JPanel bottom = new JPanel(); private JFrame frame = new JFrame("Clash Royale Bot · by MrBesen");;
private JPanel root = new JPanel();
private JPanel top = new JPanel();
private JPanel bottom = new JPanel();
//JPanel slider = new JPanel(); //JPanel slider = new JPanel();
JMenuBar menubar = new JMenuBar(); private JMenuBar menubar = new JMenuBar();
JMenu file_ = new JMenu("File"); private JMenu file_ = new JMenu("File");
JMenuItem load = new JMenuItem(); private JMenuItem load = new JMenuItem();
JMenuItem save = new JMenuItem(); private JMenuItem save = new JMenuItem();
JCheckBox autoplay = new JCheckBox("AutoPlay");
JCheckBox doubleplace = new JCheckBox("DoublePlace");
PosSelector[] posselctors = { private AutoPlayBox autoplay = new AutoPlayBox();
private JCheckBox doubleplace = new JCheckBox("DoublePlace");
private PosSelector[] posselctors = {
new PosSelector(this, "Battle",true, 4), new PosSelector(this, "Battle",true, 4),
new PosSelector(this, "End Battle",true, 5), new PosSelector(this, "End Battle",true, 5),
new PosSelector(this, "Card1",false, 0), new PosSelector(this, "Card1",false, 0),
new PosSelector(this, "Card2",false, 1), new PosSelector(this, "Card2",false, 1),
new PosSelector(this, "Card3",false, 2), new PosSelector(this, "Card3",false, 2),
new PosSelector(this, "Card4", false, 3), new PosSelector(this, "Card4", false, 3),
new PosSelector(this, "Playout", false, 6)//, new PosSelector(this, "Playout", false, 6)
//new PosSelector(this, "Top Left", false, 7)
}; };
JButton skip = new JButton("SKIP"); // the button, to skip waiting private JButton skip = new JButton("SKIP"); // the button, to skip waiting
JButton start = new JButton("START"); private JButton start = new JButton("START");
JButton exit = new JButton("EXIT"); private JButton exit = new JButton("EXIT");
JLabel info = new JLabel("Define positions, to start."); private JLabel info = new JLabel("Define positions, to start.");
//JSlider truppenwait = new JSlider(JSlider.HORIZONTAL, 1, 300, 180); private Slider[] slider = {
//JLabel wait = new JLabel("Waittime between playouts: 18.0"); new Slider("Waittime: ","s", 1,300,180,-1, null, new Updater() {
@Override
Slider[] slider = { public void update(int nummber) {
new Slider("Waittime: ","s", 1,300,180,-1, this, false), bot.setWait(nummber);
new Slider("Radius of Placement: ","px",0,40,15,0,this,false) }
}, false),
new Slider("Radius of Placement: ","px",0,40,15,0, null, new Updater() {
@Override
public void update(int nummber) {
bot.setRandmones(nummber);
}
},false)
}; };
Clicker bot = new Clicker(); Clicker bot = new Clicker();
File file = new File(".profile"); private File file = new File(".profile");
public UI() { public UI() {
Main.get().ui = this; Main.get().ui = this;
@ -87,38 +97,30 @@ public class UI implements ActionListener, ChangeListener{
doubleplace.setSelected(true); doubleplace.setSelected(true);
doubleplace.setEnabled(false); doubleplace.setEnabled(false);
// slider[0].setEnabled(false);
skip.addActionListener(this); skip.addActionListener(this);
start.addActionListener(this); start.addActionListener(this);
exit.addActionListener(this); exit.addActionListener(this);
autoplay.addActionListener(this);
doubleplace.addActionListener(this); doubleplace.addActionListener(this);
//truppenwait.addChangeListener(this);
for(PosSelector poss : posselctors) { for(PosSelector poss : posselctors) {
top.add(poss.button); top.add(poss.button);
} }
bottom.add(start); bottom.add(start);
bottom.add(skip); bottom.add(skip);
bottom.add(exit); bottom.add(exit);
bottom.add(autoplay); bottom.add(autoplay);
bottom.add(doubleplace); bottom.add(doubleplace);
bottom.add(info); bottom.add(info);
//slider.add(truppenwait);
//slider.add(wait);
root.add(top); root.add(top);
root.add(bottom); root.add(bottom);
// root.add(slider);
for(Slider s : slider) { for(Slider s : slider) {
root.add(s); root.add(s);
} }
frame.add(root); frame.add(root);
frame.setVisible(true); frame.setVisible(true);
@ -133,7 +135,8 @@ public class UI implements ActionListener, ChangeListener{
//check for the Posselectors //check for the Posselectors
for(PosSelector poss : posselctors) { for(PosSelector poss : posselctors) {
if(poss.button.equals(srcb)) { if(poss.button.equals(srcb)) {
new Thread(poss, "PositionSelector").start(); if(!isSelectionRunning)
new Thread(poss, "PositionSelector").start();
break; break;
} }
} }
@ -166,7 +169,7 @@ public class UI implements ActionListener, ChangeListener{
} }
} else if(src instanceof JCheckBox) { } else if(src instanceof JCheckBox) {
JCheckBox srcb = (JCheckBox) src; JCheckBox srcb = (JCheckBox) src;
if(srcb.equals(autoplay)) { /* if(srcb.equals(autoplay)) {
bot.setAutoPlay(srcb.isSelected()); bot.setAutoPlay(srcb.isSelected());
if(srcb.isSelected()) { if(srcb.isSelected()) {
slider[0].setEnabled(true); slider[0].setEnabled(true);
@ -175,7 +178,8 @@ public class UI implements ActionListener, ChangeListener{
slider[0].setEnabled(false); slider[0].setEnabled(false);
doubleplace.setEnabled(false); doubleplace.setEnabled(false);
} }
} else if(srcb.equals(doubleplace)) { } else */
if(srcb.equals(doubleplace)) {
bot.setDoublePlay(srcb.isSelected()); bot.setDoublePlay(srcb.isSelected());
if(srcb.isSelected()) {//*2 if(srcb.isSelected()) {//*2
slider[0].setValue(slider[0].getValue()*2); slider[0].setValue(slider[0].getValue()*2);
@ -186,17 +190,6 @@ public class UI implements ActionListener, ChangeListener{
} }
} }
@Override
public void stateChanged(ChangeEvent e) {
Object o = e.getSource();
if(o instanceof JSlider) {
JSlider slider = (JSlider) o;
if(slider.equals(this.slider[0])) {
bot.setWait(slider.getValue());
}
}
}
private void load(boolean info) { private void load(boolean info) {
if(file.exists()) { if(file.exists()) {
try { try {
@ -205,20 +198,20 @@ public class UI implements ActionListener, ChangeListener{
String split[] = s.nextLine().split(" ",2); String split[] = s.nextLine().split(" ",2);
if(!split[1].equals("null")) { if(!split[1].equals("null")) {
int num = Integer.parseInt(split[0]); int num = Integer.parseInt(split[0]);
if(num > 100) { if(num > 100) {//special settings (slider / checkboxes)
if(num == 101) {//truppenwait if(num == 101) {//truppenwait
int wait = Integer.parseInt(split[1]); int wait = Integer.parseInt(split[1]);
slider[0].setValue(wait); slider[0].setValue(wait);
} else if(num == 102) { // double playout } else if(num == 102) { // double playout
boolean dp = Boolean.parseBoolean(split[1]); boolean dp = Boolean.parseBoolean(split[1]);
if(dp) { if(dp)
autoplay.setSelected(true); autoplay.setSelected(true);
doubleplace.setEnabled(true);
slider[0].setEnabled(true);
}
doubleplace.setSelected(dp); doubleplace.setSelected(dp);
bot.setDoublePlay(dp);
} else if(num == 103) {
slider[1].setValue(Integer.parseInt(split[1]));
} }
} else } else //standard Point Obj.
bot.set(new Point(split[1]), num); bot.set(new Point(split[1]), num);
} }
} }
@ -242,7 +235,7 @@ public class UI implements ActionListener, ChangeListener{
file.createNewFile(); file.createNewFile();
FileWriter fw = new FileWriter(file); FileWriter fw = new FileWriter(file);
fw.write(bot.serialize()+"\n101 "+ slider[0].getValue() + "\n102 " + doubleplace.isSelected()); fw.write(bot.serialize()+"\n101 "+ slider[0].getValue() + "\n102 " + doubleplace.isSelected()+"\n103" + slider[1].getValue());
fw.flush(); fw.flush();
fw.close(); fw.close();
@ -269,12 +262,48 @@ public class UI implements ActionListener, ChangeListener{
info.setText(a); info.setText(a);
} }
public void setPositionDone() {
isSelectionRunning = false;
}
public interface Updater {
public void update(int nummber);
}
public class AutoPlayBox extends JCheckBox implements ActionListener {//AutoPlayCheck Box (Extra Object because some updateing problems occour)
private static final long serialVersionUID = 8957130982898848436L;
public AutoPlayBox() {
super("AutoPlay");
addActionListener(this);
}
@Override
public void setSelected(boolean b) {
super.setSelected(b);
update(b);
}
public void update(boolean b) {
doubleplace.setEnabled(b);
slider[0].setEnabled(b);
slider[1].setEnabled(b);
bot.setAutoPlay(b);
}
@Override
public void actionPerformed(ActionEvent e) {
update(this.isSelected());
}
}
public class Slider extends JPanel implements ChangeListener{ public class Slider extends JPanel implements ChangeListener{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private JSlider slider; private JSlider slider;
private JLabel label; private JLabel label;
private ChangeListener listener; private ChangeListener listener;
private Updater updater;
private String prefix = "", sufix = ""; private String prefix = "", sufix = "";
private int offset; private int offset;
/** /**
@ -285,7 +314,7 @@ public class UI implements ActionListener, ChangeListener{
* @param startvalue inital value * @param startvalue inital value
* @param komma 10^x offset for komma digits * @param komma 10^x offset for komma digits
*/ */
public Slider(String prefix, String sufix, int minvalue, int maxvalue, int startvalue, int komma, ChangeListener cl, boolean enabled) { public Slider(String prefix, String sufix, int minvalue, int maxvalue, int startvalue, int komma, @Nullable ChangeListener cl,@Nullable Updater upd, boolean enabled) {//ChangeListener or Updater could be Null!
slider = new JSlider(minvalue, maxvalue, startvalue); slider = new JSlider(minvalue, maxvalue, startvalue);
slider.addChangeListener(this); slider.addChangeListener(this);
if(prefix != null) if(prefix != null)
@ -298,13 +327,14 @@ public class UI implements ActionListener, ChangeListener{
add(slider); add(slider);
add(label); add(label);
listener = cl; listener = cl;
updater = upd;
slider.setEnabled(enabled); slider.setEnabled(enabled);
} }
public int getValue() { public int getValue() {
return slider.getValue(); return slider.getValue();
} }
public void setValue(int val) { public void setValue(int val) {
slider.setValue(val); slider.setValue(val);
} }
@ -315,10 +345,6 @@ public class UI implements ActionListener, ChangeListener{
return prefix + (BigDecimal.valueOf(Math.pow(10, offset)).multiply(BigDecimal.valueOf(slider.getValue()))) + sufix; return prefix + (BigDecimal.valueOf(Math.pow(10, offset)).multiply(BigDecimal.valueOf(slider.getValue()))) + sufix;
} }
/*public void setChangeListener(ChangeListener l) { //not required anymore
listener = l;
}*/
@Override @Override
public void setEnabled(boolean enabled) { public void setEnabled(boolean enabled) {
slider.setEnabled(enabled); slider.setEnabled(enabled);
@ -327,7 +353,10 @@ public class UI implements ActionListener, ChangeListener{
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
label.setText(getLabelText());//update info label.setText(getLabelText());//update info
listener.stateChanged(e);//forward Event if(listener != null)
listener.stateChanged(e);//forward Event
if(updater != null)
updater.update(slider.getValue());
} }
} }
} }