import java.applet.*; import java.awt.*; import java.lang.Math; import java.lang.Object; public class Erscart extends Applet { public class point implements Cloneable{ public int x; public int y; public Object clone(){ //begin clone try{ //begin try return super.clone(); } //end try catch(CloneNotSupportedException e){ // begin catch return null; //if there is a catch } //end catch } //end cloning structure for point } //end point def public class pair implements Cloneable{ public point rt=new point(); public point lt=new point(); public Object clone(){ //begin clone try{ //begin try pair pa=(pair)super.clone(); pa.rt=(point)rt.clone(); pa.lt=(point)lt.clone(); return pa; } catch(CloneNotSupportedException e){ return null; }//end catch } //end cloning structure for pair } //end pair def public class Body implements Cloneable{ public point neck=new point(); public point shoulder=new point(); public point hip=new point(); public pair elbow=new pair(); public pair wrist=new pair(); public pair knee=new pair(); public pair foot=new pair(); public pair head=new pair(); public Object clone(){ //begin clone try{ //begin try Body bo=(Body)super.clone(); bo.neck=(point)neck.clone(); bo.shoulder=(point)shoulder.clone(); bo.hip=(point)hip.clone(); bo.elbow=(pair)elbow.clone(); bo.wrist=(pair)wrist.clone(); bo.knee=(pair)knee.clone(); bo.foot=(pair)foot.clone(); bo.head=(pair)head.clone(); return bo; } //end try catch(CloneNotSupportedException e){ return null; }//end catch } //end cloning structure for body } // end Body def private int i; private int top; private int topr; private int last_x=0; private int last_y=0; private int neckHite = 50; private int shoulderHite = 60; private int hipHite = 100; private int footing = 140; private int hipX = 50; private int headX=75; private int headY; private int shoulderX = 70; private int neckX = 75; private int leg = 30; private int eneckx; private int eshoulderx; private Color current_color=Color.black; private Button clear_button; private Button draw_button; public pair pa=new pair(); public Body s=new Body(); public Body er=new Body(); public Body bo=new Body(); private double pie=3.14159265359; private double skip = 1.0; //to skip = 1/2 private double angmult = 1.2; private double ivart; private double elbart; private double elbalt; private double kneeart; private double kneealt; private double angrt; private double anglt; private double ivalt; //init applet public void init(){ //set backgd color this.setBackground(Color.white); //create a button clear_button=new Button("Clear"); clear_button.setForeground(Color.black); clear_button.setBackground(Color.lightGray); this.add(clear_button); //create a button draw_button=new Button("Man Running"); draw_button.setForeground(Color.black); draw_button.setBackground(Color.lightGray); this.add(draw_button); } //end init applet //called when mouse click public boolean mouseDown(Event e, int x, int y){ last_x=x; last_y=y; return true; } //called when mouse moves public boolean mouseDrag(Event e, int x, int y){ Graphics g=this.getGraphics(); g.setColor(current_color); g.drawLine(last_x,last_y,x,y); last_x=x; last_y=y; return true; } //user clicks button or chooses a color public boolean action(Event event, Object arg){ if(event.target==clear_button){ Graphics g=this.getGraphics(); Rectangle r=this.bounds(); g.setColor(this.getBackground()); g.fillRect(r.x,r.y,r.width,r.height); return true; } //end clear // in case of click else if(event.target==draw_button){ Graphics g=this.getGraphics(); g.setColor(Color.black); // begin graphics routine top=10; topr=26; for(i=1; i < 296; i++){ // begin for top++; if(top>32){top=1;} topr++; if(topr>32){topr=1;} s.neck.x=neckX + i; s.neck.y=neckHite; s.shoulder.x=shoulderX + i; s.shoulder.y=shoulderHite; s.hip.x=hipX + i; s.hip.y=hipHite; s.head.rt.x =neckX +i -10; s.head.rt.y =neckHite-20; s.head.lt.x =20; s.head.lt.y =20; //calc new angles ivalt=(pie)*i/10.0; ivart=ivalt + 1.5*skip*pie; if(top>16){ elbart=0.25*pie + pie*((top/32.0) -0.5); elbalt=0.75*pie - pie*((top/32.0) -0.5); anglt=1.5*pie - 1.5*pie*(top/32.0); if(top>24){ kneealt=pie - 3.0*pie*((top/32.0) - 0.75); } //end if top >24 else{ kneeart=0.75*pie + 0.25*pie*(top/32.0); } // else 1616 else{ elbart=0.75*pie - pie*(top/32.0); elbalt=0.25*pie + pie*(top/32.0); anglt=1.5*pie*(top/32.0); kneealt=0.25*pie + pie*(top/32.0); } // else top <=16 if(topr>16){ angrt=1.5*pie - 1.5*pie*(topr/32.0); if(topr>24){kneeart=pie -3.0*pie*((topr/32.0) - 0.75);} // end if topr>24 else{kneeart=0.75*pie + 0.25*pie*(topr/32.0);} } // end if topr >16 else{ angrt=1.5*pie*(topr/32.0); kneeart=0.25*pie + pie*(topr/32.0); } //end else topr<=16 elbart=elbart*angmult; elbalt=elbalt*angmult; // angles for each limb have been calculated s.knee.lt.x=(s.hip.x + (int)(leg*Math.cos(anglt))); s.knee.lt.y=(s.hip.y + (int)(leg*Math.sin(anglt))); s.knee.rt.x=(s.hip.x + (int)(leg*Math.cos(angrt))); s.knee.rt.y=(s.hip.y + (int)(leg*Math.sin(angrt))); s.foot.lt.x=(s.knee.lt.x + (int)(leg*Math.cos(kneealt))); s.foot.lt.y=(s.knee.lt.y + (int)(leg*Math.sin(kneealt))); s.foot.rt.x=(s.knee.rt.x + (int)(leg*Math.cos(kneeart))); s.foot.rt.y=(s.knee.rt.y + (int)(leg*Math.sin(kneeart))); s.elbow.lt.x=(int)(s.shoulder.x + (leg*Math.cos(elbalt))); s.elbow.lt.y=(int)(s.shoulder.y + (leg*Math.sin(elbalt))); s.elbow.rt.x=(int)(s.shoulder.x + (leg*Math.cos(elbart))); s.elbow.rt.y=(int)(s.shoulder.y + (leg*Math.sin(elbart))); s.wrist.lt.x=(int)(s.elbow.lt.x + (0.7*leg*Math.cos(2.0*elbalt - pie))); s.wrist.lt.y=(int)(s.elbow.lt.y + (0.7*leg*Math.sin(2.0*elbalt - pie))); s.wrist.rt.x=(int)(s.elbow.rt.x + 0.7*leg*Math.cos(elbart - 0.5*pie)); s.wrist.rt.y=(int)(s.elbow.rt.y + 0.7*leg*Math.sin(elbart -0.5*pie)); headX=headX+1; //begin draw man g.setColor(Color.black); g.drawArc(s.head.rt.x,s.head.rt.y,s.head.lt.x,s.head.lt.y,0,360); g.drawLine(s.neck.x,s.neck.y,s.shoulder.x,s.shoulder.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.hip.x,s.hip.y); g.drawLine(s.hip.x,s.hip.y,s.knee.lt.x,s.knee.lt.y); g.drawLine(s.knee.lt.x,s.knee.lt.y,s.foot.lt.x,s.foot.lt.y); g.drawLine(s.hip.x,s.hip.y,s.knee.rt.x,s.knee.rt.y); g.drawLine(s.knee.rt.x,s.knee.rt.y,s.foot.rt.x,s.foot.rt.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.elbow.lt.x,s.elbow.lt.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.elbow.rt.x,s.elbow.rt.y); g.drawLine(s.elbow.rt.x,s.elbow.rt.y,s.wrist.rt.x,s.wrist.rt.y); g.drawLine(s.elbow.lt.x,s.elbow.lt.y,s.wrist.lt.x,s.wrist.lt.y); // end draw man // begin erase g.setColor(Color.white); g.drawArc(s.head.rt.x-1,s.head.rt.y,s.head.lt.x,s.head.lt.y,0,360); g.drawLine(er.neck.x,er.neck.y,er.shoulder.x,er.shoulder.y); g.drawLine(er.shoulder.x,er.shoulder.y,er.hip.x,er.hip.y); g.drawLine(er.hip.x,er.hip.y,er.knee.lt.x,er.knee.lt.y); g.drawLine(er.knee.lt.x,er.knee.lt.y,er.foot.lt.x,er.foot.lt.y); g.drawLine(er.hip.x,er.hip.y,er.knee.rt.x,er.knee.rt.y); g.drawLine(er.knee.rt.x,er.knee.rt.y,er.foot.rt.x,er.foot.rt.y); g.drawLine(er.shoulder.x,er.shoulder.y,er.elbow.lt.x,er.elbow.lt.y); g.drawLine(er.shoulder.x,er.shoulder.y,er.elbow.rt.x,er.elbow.rt.y); g.drawLine(er.elbow.rt.x,er.elbow.rt.y,er.wrist.rt.x,er.wrist.rt.y); g.drawLine(er.elbow.lt.x,er.elbow.lt.y,er.wrist.lt.x,er.wrist.lt.y); // end erase //begin draw man g.setColor(Color.black); g.drawArc(s.head.rt.x,s.head.rt.y,s.head.lt.x,s.head.lt.y,0,360); g.drawLine(s.neck.x,s.neck.y,s.shoulder.x,s.shoulder.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.hip.x,s.hip.y); g.drawLine(s.hip.x,s.hip.y,s.knee.lt.x,s.knee.lt.y); g.drawLine(s.knee.lt.x,s.knee.lt.y,s.foot.lt.x,s.foot.lt.y); g.drawLine(s.hip.x,s.hip.y,s.knee.rt.x,s.knee.rt.y); g.drawLine(s.knee.rt.x,s.knee.rt.y,s.foot.rt.x,s.foot.rt.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.elbow.lt.x,s.elbow.lt.y); g.drawLine(s.shoulder.x,s.shoulder.y,s.elbow.rt.x,s.elbow.rt.y); g.drawLine(s.elbow.rt.x,s.elbow.rt.y,s.wrist.rt.x,s.wrist.rt.y); g.drawLine(s.elbow.lt.x,s.elbow.lt.y,s.wrist.lt.x,s.wrist.lt.y); // end draw man er=(Body)s.clone(); //begin pause for(int j=1; j<10000;j++){int tempore=j;} //end pause } // end for i // end graphics routine return true; } // end draw button // Otherwise let the superclass handle it. else return super.action(event, arg); } // end action method } //end Applet