Advertisement
MaxiBarometer

Good Code

Dec 14th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.06 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.awt.image.WritableRenderedImage;
  5. import java.util.ArrayList;
  6. import java.util.ConcurrentModificationException;
  7. import java.util.List;
  8.  
  9. public class Dong implements ActionListener
  10. {
  11.     private final List<Window> windows = new ArrayList<>();
  12.     boolean allClosed = false;
  13.     Dong dong = this;
  14.     boolean cracked = false;
  15.     static final String code = "yesdaddy";
  16.     static int progress = -1;
  17.  
  18.     Dong() throws InterruptedException
  19.     {
  20.         new Window();
  21.         while (true)
  22.         {
  23.             if (!cracked)
  24.             {
  25.                 Point mousePos = MouseInfo.getPointerInfo().getLocation();
  26.                 int mx = mousePos.x;
  27.                 int my = mousePos.y;
  28.                 try
  29.                 {
  30.                     for (Window window : windows)
  31.                     {
  32.                         int w = window.getWidth();
  33.                         int h = window.getHeight();
  34.                         int x = window.getX() + w / 2;
  35.                         int y = window.getY() + h / 2;
  36.                         if (x == mx && y == my)
  37.                             ++x;
  38.                         double dx = x - mx;
  39.                         double dy = y - my;
  40.                         double mag = Math.sqrt(dx * dx + dy * dy);
  41.                         double vx = dx / mag;
  42.                         double vy = dy / mag;
  43.  
  44.                         double t = Double.POSITIVE_INFINITY;
  45.                         double tt = 0;
  46.                         if ((tt = -w / 2.0 / vx) > 0)
  47.                         {
  48.                             if (tt < t)
  49.                                 t = tt;
  50.                         }
  51.                         if ((tt = w / 2.0 / vx) > 0)
  52.                         {
  53.                             if (tt < t)
  54.                                 t = tt;
  55.                         }
  56.                         if ((tt = -h / 2.0 / vy) > 0)
  57.                         {
  58.                             if (tt < t)
  59.                                 t = tt;
  60.                         }
  61.                         if ((tt = h / 2.0 / vy) > 0)
  62.                         {
  63.                             if (tt < t)
  64.                                 t = tt;
  65.                         }
  66.  
  67.                         t += 20;
  68.  
  69.                         if (mag > t)
  70.                             continue;
  71.  
  72.                         double distanceFromEdge = mag - t;
  73.  
  74.                         double displaceX = -vx * distanceFromEdge;
  75.                         double displaceY = -vy * distanceFromEdge;
  76.  
  77.                         window.setLocation((int) (window.getX() + displaceX), (int) (window.getY() + displaceY));
  78.                     }
  79.                 } catch (ConcurrentModificationException ignored)
  80.                 {
  81.  
  82.                 }
  83.             }
  84.             Thread.sleep(10);
  85.         }
  86.     }
  87.  
  88.     @Override public void actionPerformed(ActionEvent e)
  89.     {
  90.         new Window();
  91.         cracked = false;
  92.         progress = -1;
  93.     }
  94.  
  95.     class Window extends JFrame
  96.     {
  97.         static final int w = 250, h = 150;
  98.  
  99.         Window()
  100.         {
  101.             Window relative = windows.isEmpty() ? null : windows.get(windows.size() - 1);
  102.             setTitle("Expand Dong");
  103.             JPanel panel = new JPanel();
  104.             panel.setPreferredSize(new Dimension(w, h));
  105.             setContentPane(panel);
  106.             setResizable(false);
  107.             pack();
  108.             setLocationRelativeTo(relative);
  109.             setLocation(getX() + 20, getY() + 20);
  110.             if (getX() + getWidth() > Toolkit.getDefaultToolkit().getScreenSize().width)
  111.                 setLocation(0, getY());
  112.             if (getY() + getHeight() > Toolkit.getDefaultToolkit().getScreenSize().height)
  113.                 setLocation(getX(), 0);
  114.             windows.add(this);
  115.             Window pointer = this;
  116.             addWindowListener(new WindowAdapter()
  117.             {
  118.                 @Override public void windowClosing(WindowEvent e)
  119.                 {
  120.                     windows.remove(pointer);
  121.                     if (!cracked)
  122.                     {
  123.                         new Window();
  124.                         new Window();
  125.                     }
  126.                     if (windows.isEmpty())
  127.                         System.exit(0);
  128.                 }
  129.             });
  130.  
  131.             KeyAdapter ka = new KeyAdapter()
  132.             {
  133.                 @Override public void keyTyped(KeyEvent e)
  134.                 {
  135.                     if (cracked)
  136.                         return;
  137.                     char c = e.getKeyChar();
  138.                     if (code.toLowerCase().charAt(++progress) != c)
  139.                         progress = -1;
  140.                     if (progress == code.length() - 1)
  141.                         cracked = true;
  142.                 }
  143.             };
  144.  
  145.             addKeyListener(ka);
  146.  
  147.             setLayout(null);
  148.             JButton button = new JButton("OK");
  149.             add(button);
  150.             button.addActionListener(dong);
  151.             button.setBounds(w / 2 - 50, h - 50, 100, 30);
  152.             button.setFocusable(true);
  153.             button.setFocusPainted(true);
  154.             button.requestFocus();
  155.             button.addKeyListener(ka);
  156.             JLabel label = new JLabel("coconut creampies");
  157.             add(label);
  158.             label.setHorizontalAlignment(JLabel.CENTER);
  159.             label.setBounds(w / 2 - 100, 30, 200, 30);
  160.             //setIconImage(new ImageIcon(getClass().getResource("./icon.png")).getImage());
  161.             setVisible(true);
  162.         }
  163.     }
  164.  
  165.     public static void main(String[] args) throws InterruptedException
  166.     {
  167.         Dong dong = new Dong();
  168.         int i = 0;
  169.         while (!dong.allClosed)
  170.             Thread.sleep(10000);
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement