Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.16 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 kolos8 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 xsE=(int)Math.round(x0+r/2*Math.cos(Math.toRadians(alfa)));
  36.             int ysE=(int)Math.round(y0+r/2*Math.sin(Math.toRadians(alfa)));
  37.             g.drawArc(xsE-r/2, ysE-r/2, r,r, 180-alfa, -180);
  38.  
  39.             int xsW=(int)Math.round(x0-r/2*Math.cos(Math.toRadians(alfa)));
  40.             int ysW=(int)Math.round(y0-r/2*Math.sin(Math.toRadians(alfa)));
  41.             g.drawArc(xsW-r/2, ysW-r/2, r,r, 180-alfa, -180);
  42.            
  43.             int xp=xKart(x0,r,Math.toRadians(alfa));
  44.             int yp=yKart(y0,r,Math.toRadians(alfa));
  45.             int xd=xKart(x0,r,Math.toRadians(alfa+90));
  46.             int yd=yKart(y0,r,Math.toRadians(alfa+90));
  47.             int xc=xKart(x0,r,Math.toRadians(alfa+180));
  48.             int yc=yKart(y0,r,Math.toRadians(alfa+180));
  49.             g.drawLine(xp, yp, xd, yd);
  50.             g.drawLine(xd, yd, xc, yc);
  51.             int b=(int)Math.round(r*Math.sqrt(2.0));
  52.             int c=(int)Math.round(r/2*Math.PI/2.0);
  53.             int obw=2*b+2*c;
  54.             int nc=MAXN*c/obw;
  55.             int nb=(MAXN-2*nc)/2;
  56.             if(n<nc){
  57.                 double kat=Math.PI*n/nc+Math.toRadians(alfa);
  58.                 x=(int)Math.round(xsE-r/2*Math.cos(kat));
  59.                 y=(int)Math.round(ysE-r/2*Math.sin(kat));  
  60.             }
  61.            
  62.             else if(n<nc+nb){
  63.                 x=xp+(xd-xp)*(n-nc)/nb;
  64.                 y=yp+(yd-yp)*(n-nc)/nb;
  65.             }else if(n<nc+2*nb){
  66.                 x=xd+(xc-xd)*(n-nc-nb)/nb;
  67.                 y=yd+(yc-yd)*(n-nc-nb)/nb;
  68.             }else {
  69.                 double kat=0+Math.PI*(n-nc-nb-nb)/nc+Math.toRadians(alfa);
  70.                 x=(int)Math.round(xsW-r/2*Math.cos(kat));
  71.                 y=(int)Math.round(ysW-r/2*Math.sin(kat));  
  72.             }
  73.            
  74.             g.setColor(Color.RED);
  75.             g.fillOval(x-6, y-6, 12, 12);
  76.             g.setColor(Color.BLACK);
  77.            
  78.            
  79.             super.paintComponent(g);
  80.         }
  81.  
  82.         private int yKart(int y0, int r, double kat) {
  83.             return (int)Math.round(y0+r*Math.sin(kat));
  84.         }
  85.  
  86.         private int xKart(int x0, int r, double kat) {
  87.             return (int)Math.round(x0+r*Math.cos(kat));
  88.         }
  89.        
  90.     }
  91.     public kolos8(String string) {
  92.         super(string);
  93.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  94.         Toolkit kit=Toolkit.getDefaultToolkit();
  95.         Dimension d=kit.getScreenSize();
  96.         setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
  97.         add(komponent=new MyComponent());
  98.         timer=new Timer(20,new ActionListener() {
  99.            
  100.             @Override
  101.             public void actionPerformed(ActionEvent e) {
  102.                 n++;
  103.                 //if(alfa>35) zm=-1;
  104.                 //if(alfa<0) zm=1;
  105.                 //alfa=alfa+zm;
  106.                 alfa++;
  107.                 if(n>=MAXN)
  108.                     n-=MAXN;
  109.                 komponent.repaint();
  110.             }
  111.         });
  112.         timer.start();
  113.         setVisible(true);
  114.     }
  115.  
  116.     public static void main(String[] args) {
  117.         EventQueue.invokeLater(new Runnable() {
  118.            
  119.             @Override
  120.             public void run() {
  121.                 new kolos8("Animek 8");
  122.             }
  123.         });
  124.     }
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement