From 1483658935fa11b6a1d56f73b0dca55696e039b3 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Fri, 7 Apr 2017 09:21:52 +0200 Subject: [PATCH] Changed Many things (Added randomnes slider, Added Updater) --- src/mrbesen/cr/auto/clicker/Clicker.java | 14 +- src/mrbesen/cr/auto/clicker/Point.java | 12 ++ src/mrbesen/cr/auto/clicker/PosSelector.java | 1 + src/mrbesen/cr/auto/clicker/UI.java | 171 +++++++++++-------- 4 files changed, 121 insertions(+), 77 deletions(-) diff --git a/src/mrbesen/cr/auto/clicker/Clicker.java b/src/mrbesen/cr/auto/clicker/Clicker.java index 4f7089c..332145b 100644 --- a/src/mrbesen/cr/auto/clicker/Clicker.java +++ b/src/mrbesen/cr/auto/clicker/Clicker.java @@ -28,9 +28,7 @@ public class Clicker implements Runnable{ private boolean autoplay; private boolean doubleplayout = true; private int truppenwait = 180; - - public Clicker() { - } + private int randomness = 15; private void sleep( int ms) { if(skipbattle) @@ -121,13 +119,13 @@ public class Clicker implements Runnable{ modifier = 1.5f; // 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? + Main.get().ui.info("Waiting for: " + waittime); while (waittime > 1500 & !skipbattle) {//check for the ok-button every 3 seconds long startwait = System.currentTimeMillis();//record needed time if(checkOK(end, rob)) {//check okcount ++;//ok button detected if(okcount >= okcountmin) { Main.get().ui.info("OK-button detected!"); - System.out.println("OK-Button-detected!"); skipbattle = true; break; } @@ -167,9 +165,9 @@ public class Clicker implements Runnable{ 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. 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 - 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; } + public void setRandmones(int rand) { + randomness = rand; + } + public boolean bothset() { return (end != null & battle != null); } diff --git a/src/mrbesen/cr/auto/clicker/Point.java b/src/mrbesen/cr/auto/clicker/Point.java index 045ba19..7da3063 100644 --- a/src/mrbesen/cr/auto/clicker/Point.java +++ b/src/mrbesen/cr/auto/clicker/Point.java @@ -1,5 +1,7 @@ package mrbesen.cr.auto.clicker; +import java.util.Random; + public class Point { int x = 0, y = 0; @@ -21,4 +23,14 @@ public class Point { public Point add(int x, int 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); + } } \ No newline at end of file diff --git a/src/mrbesen/cr/auto/clicker/PosSelector.java b/src/mrbesen/cr/auto/clicker/PosSelector.java index 8455c63..c74796e 100644 --- a/src/mrbesen/cr/auto/clicker/PosSelector.java +++ b/src/mrbesen/cr/auto/clicker/PosSelector.java @@ -29,6 +29,7 @@ public class PosSelector implements Runnable { ui.bot.set(ui.bot.getMouse(), num);//get and save the position ui.info("Position saved!"); green(); + ui.setPositionDone(); } public void green() { diff --git a/src/mrbesen/cr/auto/clicker/UI.java b/src/mrbesen/cr/auto/clicker/UI.java index b9fd6f9..2f1df73 100644 --- a/src/mrbesen/cr/auto/clicker/UI.java +++ b/src/mrbesen/cr/auto/clicker/UI.java @@ -20,51 +20,61 @@ import javax.swing.JSlider; import javax.swing.event.ChangeEvent; 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(); - JPanel top = new JPanel(); - JPanel bottom = new JPanel(); + private boolean isSelectionRunning = false; //true if an selection Thread is working, + + 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(); - JMenuBar menubar = new JMenuBar(); - JMenu file_ = new JMenu("File"); - JMenuItem load = new JMenuItem(); - JMenuItem save = new JMenuItem(); - - JCheckBox autoplay = new JCheckBox("AutoPlay"); - JCheckBox doubleplace = new JCheckBox("DoublePlace"); + private JMenuBar menubar = new JMenuBar(); + private JMenu file_ = new JMenu("File"); + private JMenuItem load = new JMenuItem(); + private JMenuItem save = new JMenuItem(); - 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, "End Battle",true, 5), new PosSelector(this, "Card1",false, 0), new PosSelector(this, "Card2",false, 1), new PosSelector(this, "Card3",false, 2), new PosSelector(this, "Card4", false, 3), - new PosSelector(this, "Playout", false, 6)//, - //new PosSelector(this, "Top Left", false, 7) + new PosSelector(this, "Playout", false, 6) }; - JButton skip = new JButton("SKIP"); // the button, to skip waiting - JButton start = new JButton("START"); - JButton exit = new JButton("EXIT"); + private JButton skip = new JButton("SKIP"); // the button, to skip waiting + private JButton start = new JButton("START"); + 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); - //JLabel wait = new JLabel("Waittime between playouts: 18.0"); - - Slider[] slider = { - new Slider("Waittime: ","s", 1,300,180,-1, this, false), - new Slider("Radius of Placement: ","px",0,40,15,0,this,false) + private Slider[] slider = { + new Slider("Waittime: ","s", 1,300,180,-1, null, new Updater() { + @Override + public void update(int nummber) { + bot.setWait(nummber); + } + }, 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(); - File file = new File(".profile"); + private File file = new File(".profile"); public UI() { Main.get().ui = this; @@ -87,38 +97,30 @@ public class UI implements ActionListener, ChangeListener{ doubleplace.setSelected(true); doubleplace.setEnabled(false); - -// slider[0].setEnabled(false); - + skip.addActionListener(this); start.addActionListener(this); exit.addActionListener(this); - autoplay.addActionListener(this); doubleplace.addActionListener(this); - //truppenwait.addChangeListener(this); - + for(PosSelector poss : posselctors) { top.add(poss.button); } - + bottom.add(start); bottom.add(skip); bottom.add(exit); bottom.add(autoplay); bottom.add(doubleplace); bottom.add(info); - - //slider.add(truppenwait); - //slider.add(wait); - - + root.add(top); root.add(bottom); -// root.add(slider); + for(Slider s : slider) { root.add(s); } - + frame.add(root); frame.setVisible(true); @@ -133,7 +135,8 @@ public class UI implements ActionListener, ChangeListener{ //check for the Posselectors for(PosSelector poss : posselctors) { if(poss.button.equals(srcb)) { - new Thread(poss, "PositionSelector").start(); + if(!isSelectionRunning) + new Thread(poss, "PositionSelector").start(); break; } } @@ -166,7 +169,7 @@ public class UI implements ActionListener, ChangeListener{ } } else if(src instanceof JCheckBox) { JCheckBox srcb = (JCheckBox) src; - if(srcb.equals(autoplay)) { + /* if(srcb.equals(autoplay)) { bot.setAutoPlay(srcb.isSelected()); if(srcb.isSelected()) { slider[0].setEnabled(true); @@ -175,7 +178,8 @@ public class UI implements ActionListener, ChangeListener{ slider[0].setEnabled(false); doubleplace.setEnabled(false); } - } else if(srcb.equals(doubleplace)) { + } else */ + if(srcb.equals(doubleplace)) { bot.setDoublePlay(srcb.isSelected()); if(srcb.isSelected()) {//*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) { if(file.exists()) { try { @@ -205,20 +198,20 @@ public class UI implements ActionListener, ChangeListener{ String split[] = s.nextLine().split(" ",2); if(!split[1].equals("null")) { int num = Integer.parseInt(split[0]); - if(num > 100) { + if(num > 100) {//special settings (slider / checkboxes) if(num == 101) {//truppenwait int wait = Integer.parseInt(split[1]); slider[0].setValue(wait); } else if(num == 102) { // double playout boolean dp = Boolean.parseBoolean(split[1]); - if(dp) { - autoplay.setSelected(true); - doubleplace.setEnabled(true); - slider[0].setEnabled(true); - } + if(dp) + autoplay.setSelected(true); 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); } } @@ -242,7 +235,7 @@ public class UI implements ActionListener, ChangeListener{ file.createNewFile(); 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.close(); @@ -269,12 +262,48 @@ public class UI implements ActionListener, ChangeListener{ 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{ private static final long serialVersionUID = 1L; private JSlider slider; private JLabel label; - + private ChangeListener listener; + private Updater updater; private String prefix = "", sufix = ""; private int offset; /** @@ -285,7 +314,7 @@ public class UI implements ActionListener, ChangeListener{ * @param startvalue inital value * @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.addChangeListener(this); if(prefix != null) @@ -298,13 +327,14 @@ public class UI implements ActionListener, ChangeListener{ add(slider); add(label); listener = cl; + updater = upd; slider.setEnabled(enabled); } public int getValue() { return slider.getValue(); } - + public void setValue(int 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; } - /*public void setChangeListener(ChangeListener l) { //not required anymore - listener = l; - }*/ - @Override public void setEnabled(boolean enabled) { slider.setEnabled(enabled); @@ -327,7 +353,10 @@ public class UI implements ActionListener, ChangeListener{ @Override public void stateChanged(ChangeEvent e) { 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()); } } } \ No newline at end of file