Modify a text file: $/solarbam.pde
$/solarbam.pde
//// solarbam = KEY for CST-112 FINAL EXAM: Planet class, Button class. // boolean bam=true; int many=8; int numbuttons=5; Button[] b= new Button[numbuttons]; String bname[]= { "size", "moons", "hours", "distance", "quit" }; float buttonX=220, buttonY=400; Planet[] yn = new Planet[8]; String[] namelist= { "Mercury", "Venus", "Terra", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" }; int mercury=0, venus=1, earth=2, mars=3, jupiter=4, saturn=5, uranus=6, neptune=7; float[] orbitlist= { 0.387, 0.723, 1, 1.52, 5.20, 9.58, 19.20, 30.05, 39.48 }; // Orbital distance (AU) float[] sizelist= { 0.25, 0.95, 1, 0.45, 10, 7, 5, 5 }; // Multiple of Earth diameter. float[] rholist= { 5.427, 5.243, 5.514, 3.340, 3.933, 1.326, 0.687, 1.271, 1.638, 2.095 }; // Density. float[] spinlist= { 58.8, -244, 1, 27.4, 1.03, 0.415, 0.445, -0.720, 0.673, 6.41 }; float[] gravlist= { 3.7, 8.9, 9.8, 1.6, 3.7, 23.1, 9.0, 8.7, 11.0, 0.7 }; //Gravity (m/s2) int[] moonlist= { 0, 0, 1, 2, 67, 62, 27, 14, 5 }; // Moons boolean[] ringlist= { false, false, false, false, true, true, true, false }; void setup() { size( 640, 480 ); yn[0]= new Planet( 1, namelist[0] ); yn[0].size= 0.25; // yn[1]= new Planet( 2, namelist[1] ); yn[1].size= 0.95; // yn[2]= new Planet( 3, namelist[2] ); yn[2].size= 1; yn[2].rho= 6; yn[2].moons= 1; // yn[3]= new Planet( 4, namelist[3] ); yn[3].size= 0.45; yn[3].moons= 2; yn[4]= new Planet( 5, namelist[4] ); yn[5]= new Planet( 6, namelist[5] ); yn[6]= new Planet( 7, namelist[6] ); yn[7]= new Planet( 8, namelist[7] ); //// ++++ REPLACE THE ABOVE LINES WITH A LOOP & ADD SOME NEW CONSTRUCTORS.. ++++ //// Buttons //// float x=buttonX, y=buttonY; b[0]= new Button(); b[0].x= buttonX+80; b[0].name= "size"; for (int j=0; j
0) text( moons, x+20, y+next*line++ ); fill(r, g, b); // // // Circle in column x, use orbit for y value. float xx= x + 20; float yy= y+next*line++; stroke( r, g, b ); float yyy= yy + + orbit*20; line( xx, yy, xx, yyy ); float diameter= (float) Math.log(10*size) * 10; ellipse( xx, yyy, diameter, diameter ); if (ring) { stroke( r, g, b ); noFill(); ellipse( xx, yyy, 1.5*diameter, 0.5*diameter ); } } float volume() { //// Volume is pi r-cubed. //// double radius= size/2; double d= Math.PI * Math.pow( radius, 3 ); return (float) d; } float mass() { //// mass is volume times density. //// return rho * volume(); } } void sortSize( Planet[] a, int many ) { for (int m=many; m>1; --m) { // Move biggest to end, then shrink array. int w= wSize( a, m ); swap( a, m-1, w ); } } int wSize( Planet[] a, int m ) { int w=0; for (int j=1; j
= a[w].size) w=j; } return w; } void swap( Planet a[], int j, int k) { Planet tmp= a[j]; a[j]= a[k]; a[k]= tmp; } void sortDistance( Planet[] a, int many ) { for (int m=many; m>1; --m) { // Move biggest to end, then shrink array. int w= wDistance( a, m ); swap( a, m-1, w ); } } int wDistance( Planet[] a, int m ) { int w=0; for (int j=1; j
= a[w].distance) w=j; } return w; } //// ++++ BAM CODE: REMOVE LATER! void sortMoons( Planet[] a, int many ) { for (int m=many; m>1; --m) { // Move biggest to end, then shrink array. int w= wMoons( a, m ); swap( a, m-1, w ); } } int wMoons( Planet[] a, int m ) { int w=0; for (int j=1; j
= a[w].moons) w=j; } // If this one is bigger, change w to point to it. return w; } void sortHours( Planet[] a, int many ) { for (int m=many; m>1; --m) swap( a, m-1, wHours( a, m ) ); // Move biggest to end, then shrink array. } int wHours( Planet[] a, int m ) { int w=0; for (int j=1; j
= a[w].spin) w=j; // If this one is bigger, change w to point to it. return w; }