代碼簡單,完全是算法的總結和線程
package sun;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/****@author huyongjian Oracle(Compus Solution Group)* @Date 2013-7-22* @version 2.0* @since JDK1.6(建議)Copy Right Information COMPUS SOLUTION GROUPIDE:Eclipseclass:SolarSystem 太陽系運動軌跡*/
public class SolarSystem extends Frame{double x , x1 = 200,x2 = 200,x3 = 200,x4 = 200,x5 = 200,x6 = 200,x7 = 200,x8 = 200;double y , y1 = 200,y2 = 200,y3 = 200,y4 = 200,y5 = 200,y6 = 200,y7 = 200,y8 = 200;double t = 0,t1 = 0,t2 = 0,t3 = 0,t4 = 0,t5 = 0,t6 = 0,t7 = 0,t8 = 0;private Image offScreenImage = null;void loadFrame(){this.setSize(900,900);this.setLocation(50,50);this.setTitle("太陽系");this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) {System.exit(0);}});this.setVisible(true);
// this.setColor.black);new PaintThread().start();}public void update(Graphics g) {if(offScreenImage == null)offScreenImage = this.createImage(900, 900);Graphics gOff = offScreenImage.getGraphics();Color oldColor = gOff.getColor();gOff.setColor(Color.GREEN);gOff.fillRect(0, 0, 900, 900);gOff.setColor(oldColor);paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}Image sun = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/sun.jpg");Image bg = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/bg.jpg");Image mercury = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Mercury.jpg");Image venus = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Venus.jpg");Image earth = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Earth.jpg");Image mars = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Mars.jpg");Image jupiter = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Jupiter.jpg");Image saturn = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Saturn.jpg");Image uranus = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Uranus.jpg");Image neptune = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/Neptune.jpg");Image moon = Toolkit.getDefaultToolkit().getImage("p_w_picpaths/moon.jpg");public void paint(Graphics g){g.setColor(Color.blue);g.drawImage(bg , 0 , 0 , null);g.drawImage(sun , 435 , 435 , null);g.drawOval(401, 415, 88, 60);g.drawOval(375, 395, 140, 100);g.drawOval(335, 365, 220, 160);g.drawOval(285, 335, 320, 220);g.drawOval(155, 275, 580, 340);g.drawOval(120, 245, 650, 400);g.drawOval(80, 210, 730, 470);g.drawOval(10, 165, 870, 560);t1 = t1 + Math.PI / 8.8; //公轉周期為88天t2 = t2 + Math.PI / 22.5;t3 = t3 + Math.PI / 36.5;t = t + Math.PI / 0.1;t4 = t4 + Math.PI / 68.7;t5 = t5 + Math.PI / 432.9;t6 = t6 + Math.PI / 1076.8;t7 = t7 + Math.PI / 3066.0;t8 = t8 + Math.PI / 6015.2;g.drawImage(mercury , (int)x1 ,(int)y1, null);x1 = 440 + 44 * Math.cos(t1);y1 = 440 + 30 * Math.sin(t1);g.drawImage(venus , (int)x2 ,(int)y2, null);x2 = 440 + 70 * Math.cos(t2);y2 = 440 + 50 * Math.sin(t2);g.drawImage(earth , (int)x3 ,(int)y3, null);x3 = 440 + 110 * Math.cos(t3);y3 = 440 + 80 * Math.sin(t3);g.drawImage(moon , (int)x ,(int)y, null);x = x3 + 15 * Math.cos(t1);y = y3 + 15 * Math.sin(t1);g.drawImage(mars , (int)x4 ,(int)y4, null);x4 = 440 + 160 * Math.cos(t4);y4 = 440 + 110 * Math.sin(t4);g.drawImage(jupiter , (int)x5 ,(int)y5, null);x5 = 435 + 290 * Math.cos(t5);y5 = 435 + 170 * Math.sin(t5);g.drawImage(saturn , (int)x6 ,(int)y6, null);x6 = 428 + 325 * Math.cos(t6);y6 = 428 + 200 * Math.sin(t6);g.drawImage(uranus , (int)x7 ,(int)y7, null);x7 = 435 + 365 * Math.cos(t7);y7 = 435 + 235 * Math.sin(t7);g.drawImage(neptune , (int)x8 ,(int)y8, null);x8 = 435 + 435 * Math.cos(t8);y8 = 435 + 280 * Math.sin(t8);}public static void main(String[] args){SolarSystem ball = new SolarSystem();ball.loadFrame();}private class PaintThread extends Thread{public void run(){while(true){repaint();try {Thread.sleep(40);} catch (InterruptedException e) {e.printStackTrace();}}}}
}
轉載于:https://blog.51cto.com/1936625305/1282122
總結
以上是生活随笔為你收集整理的用Java编写模仿的太阳系(九星行旋转)--原创的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。