Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.EventQueue;
- import java.awt.Graphics;
- import java.awt.Polygon;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.*;
- public class kolos8 extends JFrame{
- MyComponent komponent;
- int MAXN=80;
- int n=0;
- int alfa=61;
- int dalfa=1;
- Timer timer;
- int [] xtab=new int[MAXN];
- int [] ytab=new int[MAXN];
- int D=10;
- class MyComponent extends JComponent{
- @Override
- protected void paintComponent(Graphics g) {
- int w=getWidth();
- int h=getHeight();
- int x=0,y=0;
- int r=((w<h)?w:h)*9/20;
- int x0=w/2;
- int y0=h/2;
- int xsE=(int)Math.round(x0+r/2*Math.cos(Math.toRadians(alfa)));
- int ysE=(int)Math.round(y0+r/2*Math.sin(Math.toRadians(alfa)));
- g.drawArc(xsE-r/2, ysE-r/2, r,r, 180-alfa, -180);
- int xsW=(int)Math.round(x0-r/2*Math.cos(Math.toRadians(alfa)));
- int ysW=(int)Math.round(y0-r/2*Math.sin(Math.toRadians(alfa)));
- g.drawArc(xsW-r/2, ysW-r/2, r,r, 180-alfa, -180);
- int xp=xKart(x0,r,Math.toRadians(alfa));
- int yp=yKart(y0,r,Math.toRadians(alfa));
- int xd=xKart(x0,r,Math.toRadians(alfa+90));
- int yd=yKart(y0,r,Math.toRadians(alfa+90));
- int xc=xKart(x0,r,Math.toRadians(alfa+180));
- int yc=yKart(y0,r,Math.toRadians(alfa+180));
- g.drawLine(xp, yp, xd, yd);
- g.drawLine(xd, yd, xc, yc);
- int b=(int)Math.round(r*Math.sqrt(2.0));
- int c=(int)Math.round(r/2*Math.PI/2.0);
- int obw=2*b+2*c;
- int nc=MAXN*c/obw;
- int nb=(MAXN-2*nc)/2;
- if(n<nc){
- double kat=Math.PI*n/nc+Math.toRadians(alfa);
- x=(int)Math.round(xsE-r/2*Math.cos(kat));
- y=(int)Math.round(ysE-r/2*Math.sin(kat));
- }
- else if(n<nc+nb){
- x=xp+(xd-xp)*(n-nc)/nb;
- y=yp+(yd-yp)*(n-nc)/nb;
- }else if(n<nc+2*nb){
- x=xd+(xc-xd)*(n-nc-nb)/nb;
- y=yd+(yc-yd)*(n-nc-nb)/nb;
- }else {
- double kat=0+Math.PI*(n-nc-nb-nb)/nc+Math.toRadians(alfa);
- x=(int)Math.round(xsW-r/2*Math.cos(kat));
- y=(int)Math.round(ysW-r/2*Math.sin(kat));
- }
- g.setColor(Color.RED);
- g.fillOval(x-6, y-6, 12, 12);
- g.setColor(Color.BLACK);
- super.paintComponent(g);
- }
- private int yKart(int y0, int r, double kat) {
- return (int)Math.round(y0+r*Math.sin(kat));
- }
- private int xKart(int x0, int r, double kat) {
- return (int)Math.round(x0+r*Math.cos(kat));
- }
- }
- public kolos8(String string) {
- super(string);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- Toolkit kit=Toolkit.getDefaultToolkit();
- Dimension d=kit.getScreenSize();
- setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
- add(komponent=new MyComponent());
- timer=new Timer(20,new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- n++;
- //if(alfa>35) zm=-1;
- //if(alfa<0) zm=1;
- //alfa=alfa+zm;
- alfa++;
- if(n>=MAXN)
- n-=MAXN;
- komponent.repaint();
- }
- });
- timer.start();
- setVisible(true);
- }
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- @Override
- public void run() {
- new kolos8("Animek 8");
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement