Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. //Damian Dyas L1 zad nr 9
  2. package test;
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.EventQueue;
  6. import java.awt.Graphics;
  7. import java.awt.Toolkit;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10.  
  11. import javax.swing.*;
  12.  
  13.  
  14. public class Kolos extends JFrame{
  15.  
  16. MyComponent komponent;
  17. int MAXN=200;
  18. int n=0;
  19. Timer timer;
  20. int alfa = 0;
  21.  
  22. class MyComponent extends JComponent{
  23.  
  24. @Override
  25. protected void paintComponent(Graphics g) {
  26. int w=getWidth();
  27. int h=getHeight();
  28. int x=0,y=0;
  29. int x0=w/2;
  30. int y0=h/2;
  31. int R=((w<h)?w:h)*9/20;
  32.  
  33.  
  34. g.drawArc(x0-R, y0-R, 2*R, 2*R, 90-alfa, 180);
  35.  
  36. int x1=xKart(x0,R/2,Math.toRadians(alfa-90));
  37. int y1=yKart(y0,R/2,Math.toRadians(alfa-90));
  38. g.drawArc(x1-R/2, y1-R/2, R, R, -90-alfa, 180);
  39.  
  40. int x2=xKart(x0,R,Math.toRadians(alfa+90));
  41. int y2=yKart(y0,R,Math.toRadians(alfa+90));
  42. g.drawLine(x0, y0, x2, y2);
  43.  
  44. int Obw = (int) Math.round(Math.PI*R+Math.PI*R/2+R);
  45. int na = (int)Math.round(MAXN*Math.PI*R/Obw);
  46. int nb = (int)Math.round((MAXN*Math.PI*R/2)/Obw);
  47. int nc = MAXN-na-nb;
  48. if(n<na) {
  49. double kat = Math.PI/2+Math.PI*n/na+Math.toRadians(alfa);
  50. x=(int)Math.round(x0+R*Math.cos(kat));
  51. y=(int)Math.round(y0+R*Math.sin(kat));
  52. }else if(n<na+nb) {
  53. double kat = Math.PI/2+Math.PI*(n-na)/nb+Math.toRadians(alfa);
  54. x=(int)Math.round(x1-(R/2)*Math.cos(kat));
  55. y=(int)Math.round(y1-(R/2)*Math.sin(kat));
  56. }else {
  57. x=x0+(x2-x0)*(n-na-nb)/nc;
  58. y=y0+(y2-y0)*(n-na-nb)/nc;
  59. }
  60.  
  61. g.setColor(Color.RED);
  62. g.fillOval(x-6, y-6, 12, 12);
  63. g.setColor(Color.BLACK);
  64. super.paintComponent(g);
  65. }
  66. private int xKart(int x0, int r, double kat) {
  67. return (int)Math.round(x0+r*Math.cos(kat));
  68. }
  69. private int yKart(int y0, int r, double kat) {
  70. return (int)Math.round(y0+r*Math.sin(kat));
  71. }
  72.  
  73. }
  74. public Kolos(String string) {
  75. super(string);
  76. setDefaultCloseOperation(EXIT_ON_CLOSE);
  77. Toolkit kit=Toolkit.getDefaultToolkit();
  78. Dimension d=kit.getScreenSize();
  79. setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
  80. add(komponent=new MyComponent());
  81. timer=new Timer(20,new ActionListener() {
  82.  
  83. @Override
  84. public void actionPerformed(ActionEvent e) {
  85. n++;
  86. if(n>=MAXN)
  87. n-=MAXN;
  88. alfa++;
  89. komponent.repaint();
  90. }
  91. });
  92. timer.start();
  93. setVisible(true);
  94. }
  95.  
  96. public static void main(String[] args) {
  97. EventQueue.invokeLater(new Runnable() {
  98.  
  99. @Override
  100. public void run() {
  101. new Kolos("Kolos");
  102. }
  103. });
  104. }
  105.  
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement