Advertisement
daniv1

Untitled

Apr 24th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.43 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.*;
  3. import java.awt.Graphics;
  4. import javax.swing.JFrame;
  5. import javax.swing.JPanel;
  6.  
  7. public class Animation {
  8.  
  9.     JFrame frame;            
  10.     Figura figura;
  11.  
  12.     private int oneX = 200;
  13.     private int oneY = 200;
  14.  
  15.     private int dX = 1;
  16.     private int dY = 1;
  17.    
  18.     public static void main(String[] args)
  19.     {
  20.         new Animation().go();
  21.     }
  22.  
  23.     private void go()
  24.     {
  25.         frame = new JFrame("Test");
  26.         figura = new Figura();
  27.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         frame.setResizable(false);
  29.         frame.setSize(1900, 1000);
  30.         frame.add(figura);
  31.         frame.setVisible(true);
  32.         moveIt();
  33.        
  34.     }
  35.  
  36.     class Figura extends JPanel
  37.     {    
  38.         public void paintComponent(Graphics g)
  39.         {
  40.        
  41.             int xPoints[] = new int [360];
  42.            
  43.             int yPoints[] = new int[360];
  44.           int y = 0;
  45.             for(int i = 0; i < 180 ;  i++ )
  46.                
  47.             {    
  48.  
  49.                 xPoints[i] = (int) (Math.cos(Math.toRadians(i + 180 )) * 50) + oneX;        
  50.                 yPoints[i] = (int) (Math.sin(Math.toRadians(i + 180 )) * 50) + oneY;              
  51.  
  52.                
  53.             }
  54.                for(int i = 359; i >= 180 ;  i-- )
  55.                
  56.             {    
  57.                 y++;
  58.                 xPoints[i] = (int) (Math.cos(Math.toRadians(y+ 180 )) * 40) + oneX ;        
  59.                 yPoints[i] = (int) (Math.sin(Math.toRadians(y + 180 )) * 40) + oneY ;              
  60.  
  61.                
  62.             }
  63.             g.setColor(Color.orange);
  64.             g.fillPolygon(xPoints, yPoints, xPoints.length);
  65.            
  66.            
  67.       int xPoints1[] = new int [360];
  68.            
  69.             int yPoints1[] = new int[360];
  70.           int y1 = 0;
  71.             for(int i = 0; i < 180 ;  i++ )
  72.                
  73.             {    
  74.  
  75.                 xPoints1[i] = (int) (Math.cos(Math.toRadians(i  )) * 50) + oneX - 40;        
  76.                 yPoints1[i] = (int) (Math.sin(Math.toRadians(i  )) * 50) + oneY  - 25;              
  77.  
  78.                
  79.             }
  80.              for(int i = 359; i >= 180 ;  i-- )
  81.                
  82.             {    
  83.                y1++;
  84.                 xPoints1[i] = (int) (Math.cos(Math.toRadians(y1)) * 40) + oneX - 40 ;        
  85.                 yPoints1[i] = (int) (Math.sin(Math.toRadians(y1  )) * 40) + oneY - 25 ;              
  86.  
  87.                
  88.            }
  89.             g.setColor(Color.orange);
  90.             g.fillPolygon(xPoints1, yPoints1, xPoints1.length);
  91.         }
  92.     }
  93.  
  94.     private void moveIt()
  95.     {
  96.         while (true)
  97.         {
  98.            
  99.          
  100.             oneX +=dX;
  101.             if ( oneX + dX < 700) {
  102.                 oneY = (int) (50 * Math.cos(Math.toRadians((oneX +dX))))+ 200;
  103.             }
  104.            
  105.            
  106.             //TODO change magical number
  107.             if (oneX + dX >=700  ) {
  108.                 oneY = (int) (100 * Math.cos(Math.toRadians((oneX +dX))))+ 200;
  109.             }
  110.             if (oneX + dX < 0 || oneX + dX > 1500) {
  111.                 dX = -dX;
  112.             }
  113.             try
  114.             {
  115.                 Thread.sleep(1);
  116.             }
  117.             catch (Exception e)
  118.             {
  119.                 e.printStackTrace();
  120.             }
  121.             frame.repaint();
  122.         }
  123.     }
  124.    
  125.     //тут можна дописати новий метод
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement