Professor Kit Romano's Web Site
Site Index About Me Welcome Definition of Program Variable Types Understanding Memory Declaring Variables Simple Commands Concatenation and Strings Sleep-Threads-Try Catch Campus Scenes Pictures Java simplified Application Shell Styles Reading Data From File Overview of Applets Excellent Graphics Applet Online Reference Nested if statements Arrays Sorting Arrays Using Strings Functions Top 20 Replies First program 211 Important Class Example JAVA in SDK Environment Understanding OOP OOP simple example Recursion example Example of Inheritance and use of JTextArea
*** Web Related ********** Build Student Web Page ? What is FTP Download WS ftp95 Download Java Plug In Applets from jbuilder to sdk Practice Problems
Programming Examples
// SOLAR_SYSTEM APPLET by Kenneth Woelkers
import java.awt.*; import javax.swing.*; import java.math.*; public class solar_system extends JApplet { private int speed=2; private int number_of_planets=99; private int max_comets=10; private int[] point =new int[2]; private int[] e=new int[2]; private int[] OC={1024/2,700/2}; private double PI=Math.PI; private double[] a_ANGLE = new double[number_of_planets]; private double[] c_angle1=new double[max_comets]; private double[] c_angle2=new double[max_comets]; private double[][] m_angle=new double[10][10]; private boolean first; private int[] spaceship_point={0,100}; private Image a; public void paint(Graphics g) { Dimension d = getSize(); checkOffscreenImage(); Graphics offG = a.getGraphics(); offG.setColor(getBackground()); offG.fillRect(0, 0, 500, 500); paintOffscreen(a.getGraphics()); g.drawImage(a, 0, 0, null); try{Thread.sleep(100);} catch(Exception e){} repaint(); } public void mplanet(int n, int R, int PS, Color c, boolean clockwise, Graphics g) { circle(point,R, n); g.setColor(c); g.fillOval(point[0]-(PS/2),point[1]-(PS/2),PS,PS); g.drawOval(OC[0]-R,OC[1]-R,R*2,R*2); if(clockwise) a_ANGLE[n] += 2*PI/(R/1); else a_ANGLE[n] -= 2*PI/(R/1); } public void circle(int[] point, int radius, int n) { point[0]=(int)(radius * Math.cos(a_ANGLE[n]))+OC[0]; point[1]=OC[1]-(int)(radius * Math.sin(a_ANGLE[n])); } public void moon(int planet, int orbit_radius, int mn, int osize, int msize, boolean m_clockwise, Graphics g) { double Q; if(m_clockwise) Q=a_ANGLE[planet]-(2*PI/(orbit_radius/1)); else Q=a_ANGLE[planet]+(2*PI/(orbit_radius/1)); int x=(int)(orbit_radius*Math.cos( Q ))+OC[0]; int y=OC[1]-(int)(orbit_radius*Math.sin( Q )); int x2=(int)(osize*Math.cos(m_angle[planet][mn]))+x; int y2=y-(int)(osize*Math.sin(m_angle[planet][mn])); g.setColor(Color.black); g.fillOval(x2-msize/2,y2-msize/2,msize,msize); //black circle if(m_clockwise) m_angle[planet][mn]+=2*PI/(osize/1); else m_angle[planet][mn]-=2*PI/(osize/1); } public void dcomet(int xcomet, int ycomet, int radius, int radius2, int OA, int c, Graphics g) { int x1,y1,x2,y2; int x0=0, y0=0; int[] x3=new int[100]; int[] y3=new int[100]; if(c_angle1[c]==0) c_angle1[c]=Math.toRadians(OA); for(int a=0;a<100;a++) { x1=(int)(radius2 * Math.cos(c_angle2[c])); y1=(int)(radius2 * Math.sin(c_angle2[c])); x3[a]=(int)(radius * Math.cos(c_angle1[c]))+xcomet+x1; y3[a]=(int)(radius * Math.sin(c_angle1[c]))+ycomet+y1; c_angle1[c]-=2*PI/(radius); c_angle2[c]+=2*PI/(radius); if(c_angle1[c]<-2*PI) c_angle1[c]+=2*PI; if(c_angle2[c]>2*PI) c_angle2[c]-=2*PI; }//end a_for g.drawPolygon(x3,y3,100); dcometd( xcomet, ycomet, 100, 160, 0, g); }//end m_dcomet public void dcometd(int xcomet, int ycomet, int radius, int radius2, int c, Graphics gg) { int x1,y1,x2,y2; x1=(int)(radius2 * Math.cos(c_angle2[c])); y1=(int)(radius2 * Math.sin(c_angle2[c])); x2=(int)(radius * Math.cos(c_angle1[c]))+xcomet+x1; y2=(int)(radius * Math.sin(c_angle1[c]))+ycomet+y1; c_angle1[c]-=2*PI/(radius); c_angle2[c]+=2*PI/(radius); if(c_angle1[c]<-2*PI) c_angle1[c]+=2*PI; if(c_angle2[c]>2*PI) c_angle2[c]-=2*PI; //draw comet head gg.setColor(Color.BLACK); gg.fillOval(x2-5,y2-5,10,10); cTail(x2,y2,xcomet,gg); }//end m_dcometd private void cTail(int x, int y, int xcomet, Graphics gg) { int XD=x-OC[0]; //DISTANCE X FROM CENTER int YD=y-OC[1]; //DISTANCE Y FROM CENTER double H=Math.sqrt(XD*XD+YD*YD); //HYPOTINUSE double AA=Math.acos(XD/H); //ANGLE double AB=Math.asin(YD/H); //ANGLE int XT=OC[0]+(int)(H*Math.cos(AA)); int YT=OC[1]+(int)(H*Math.sin(AB)); //tail draw int tail_length=(int)(((OC[0]-xcomet)-H)); int length_tail=4; for(int a=0;a<=tail_length;a++) { int xt1=x+(int)(a * Math.cos(AA)); int yt1=y+(int)(a * Math.sin(AB)); gg.setColor(Color.BLACK); gg.fillOval(xt1-(10-a/2)/2, yt1-(10-a/2)/2, 10-a/length_tail, 10-a/length_tail); } } public void spaceShip(int x_speed, int y_speed, Color c, Graphics g) { int ship_size1=50; int ship_size2=20; g.setColor(c); g.fillOval(spaceship_point[0],spaceship_point[1],ship_size1,ship_size2); int px1,py1,px2,py2,px3,py3,px4,py4,px5,py5; px1=spaceship_point[0]+20; py1=spaceship_point[1]+2; px2=spaceship_point[0]+10; py2=spaceship_point[1]-10; px3=spaceship_point[0]-20; py3=spaceship_point[1]-14; px4=spaceship_point[0]+12; py4=spaceship_point[1]-15; px5=spaceship_point[0]+30; py5=spaceship_point[1]-18; for(int a=0;a<10;a++) g.drawLine(px1+a,py1,px2+a,py2); g.fillRect(px3,py3,40,10); g.setColor(Color.RED); g.fillArc(px4,py4,10,10,-90,180); g.setColor(Color.BLUE); for(int a=0;a<10;a++) g.drawLine(px1+a+10,py1,px2+a+30,py2); g.fillOval(px5,py5,50,16); spaceship_point[0]+=x_speed; spaceship_point[1]+=y_speed; g.setColor(Color.RED); if(spaceship_point[0]%50==0) g.drawLine(spaceship_point[0]+60,spaceship_point[1]-15,(int)((Math.random()*500))+1, (int)((Math.random()*500))+1); g.setColor(Color.BLUE); if(spaceship_point[0]>1024 || spaceship_point[1]>768) spaceship_point[0]=0; spaceship_point[1]=100; } private void checkOffscreenImage() { Dimension d = getSize(); if (a == null || a.getWidth(null) != d.width || a.getHeight(null) != d.height) { a = createImage(d.width, d.height); } } public void paintOffscreen(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,1280,1024); //planet number /planet orbit radius /planet size //color /counterclockwise /g mplanet(0, 40, 10, Color.blue, false, g); mplanet(1, 100, 30, Color.green, false, g); mplanet(2, 150, 30, Color.BLUE, true, g); mplanet(6, 150, 20, Color.WHITE, true, g); mplanet(7, 150, 15, Color.magenta, true, g); mplanet(3, 200, 20, Color.red, false, g); mplanet(4, 0, 50, Color.yellow, false, g); mplanet(5, 30, 8, Color.green, false, g); //planet # /planet orbit radius //moon # /moon orbit radius //moon size //OC /g moon(1, 100, 0, 20, 8, false, g); moon(3, 200, 0, 25, 10, false, g); moon(3, 200, 1, 20, 6, false, g); //orbit center x,y //r1 r2 //orbit angle //comet ## //Graphics g dcomet(305, 265, 100, 160, 45, 0, g); spaceShip(10,10,Color.BLUE,g); }//end m_paintoffscreen }