Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.82 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.EventQueue;
  4. import java.awt.Graphics;
  5. import java.awt.Polygon;
  6. import java.awt.Toolkit;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9.  
  10. import javax.swing.*;
  11.  
  12.  
  13. public class kolos9 extends JFrame{
  14.  
  15.     MyComponent komponent;
  16.     int MAXN=80;
  17.     int n=0;
  18.     int alfa=61;
  19.     int dalfa=1;
  20.     Timer timer;
  21.     int [] xtab=new int[MAXN];
  22.     int [] ytab=new int[MAXN];
  23.     int D=10;
  24.     class MyComponent extends JComponent{
  25.  
  26.         @Override
  27.         protected void paintComponent(Graphics g) {
  28.             int w=getWidth();
  29.             int h=getHeight();
  30.             int x=0,y=0;
  31.             int r=((w<h)?w:h)*9/20;
  32.             int x0=w/2;
  33.             int y0=h/2;
  34.            
  35.             int xx=(int)Math.round(r*Math.sqrt(2)/2);
  36.             g.drawArc(x0-r, y0-r,2*r , 2*r, 90, 180);
  37.             g.drawLine(x0, y0-r, x0, y0+r);
  38.             g.drawLine(x0, y0, x0+xx, y0+xx);
  39.             g.drawLine(x0, y0, x0+xx, y0-xx);
  40.             g.drawLine(x0+xx, y0-xx, x0+xx, y0+xx);
  41.            
  42.            
  43.             int pole=(int)Math.round(r*Math.PI);
  44.             int l=(int)Math.round(r*Math.sqrt(2.0));
  45.             int b=r;
  46.             int obw =4*b+pole+l;
  47.             int nb=MAXN*b/obw;
  48.             int na=MAXN*pole/obw;
  49.             int nl=(MAXN-4*nb-na);
  50.            
  51.             double kat;
  52.             if(n<nb) {
  53.                 x=x0;
  54.                 y=y0-r*n/nb;
  55.                
  56.             }else if(n<nb+na)
  57.             {
  58.                 kat=Math.PI/2.0-Math.PI*(n-nb)/na;
  59.                 x=(int)Math.round(x0-r*Math.cos(kat));
  60.                 y=(int)Math.round(y0-r*Math.sin(kat));
  61.                
  62.             }
  63.             else if(n<2*nb+na)
  64.             {
  65.                 x=x0;
  66.                 y=y0+r-r*(n-nb-na)/nb;
  67.                
  68.             }
  69.             else if(n<3*nb+na)
  70.             {
  71.                 x=x0+xx*(n-2*nb-na)/nb;
  72.                 y=y0+xx*(n-2*nb-na)/nb;
  73.             }
  74.             else if(n<3*nb+na+nl)
  75.             {
  76.                 x=x0+xx;
  77.                 y=y0+xx-l*(n-3*nb-na)/nl;
  78.             }
  79.             else
  80.             {
  81.                 x=x0+xx-xx*(n-3*nb-na-nl)/nb;
  82.                 y=y0-xx+xx*(n-3*nb-na-nl)/nb;
  83.             }
  84.            
  85.            
  86.            
  87.             g.setColor(Color.RED);
  88.             g.fillOval(x-6, y-6, 12, 12);
  89.             g.setColor(Color.BLACK);
  90.            
  91.            
  92.             super.paintComponent(g);
  93.         }
  94.  
  95.         private int yKart(int y0, int r, double kat) {
  96.             return (int)Math.round(y0+r*Math.sin(kat));
  97.         }
  98.  
  99.         private int xKart(int x0, int r, double kat) {
  100.             return (int)Math.round(x0+r*Math.cos(kat));
  101.         }
  102.        
  103.     }
  104.     public kolos9(String string) {
  105.         super(string);
  106.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  107.         Toolkit kit=Toolkit.getDefaultToolkit();
  108.         Dimension d=kit.getScreenSize();
  109.         setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
  110.         add(komponent=new MyComponent());
  111.         timer=new Timer(20,new ActionListener() {
  112.            
  113.             @Override
  114.             public void actionPerformed(ActionEvent e) {
  115.                 n++;
  116.                 //if(alfa>35) zm=-1;
  117.                 //if(alfa<0) zm=1;
  118.                 //alfa=alfa+zm;
  119.                 alfa++;
  120.                 if(n>=MAXN)
  121.                     n-=MAXN;
  122.                 komponent.repaint();
  123.             }
  124.         });
  125.         timer.start();
  126.         setVisible(true);
  127.     }
  128.  
  129.     public static void main(String[] args) {
  130.        
  131.         EventQueue.invokeLater(new Runnable() {
  132.            
  133.             @Override
  134.             public void run() {
  135.                 new kolos9("Animek 8");
  136.             }
  137.         });
  138.     }
  139.  
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement