import java.applet.*; import java.awt.*; public class Dragon extends Applet { private int last_x=0; private int last_y=0; private Color current_color=Color.red; private Button clear_button; private Button draw_button; private int xPart=160; private int yPart=160; private int jj; private int step; private int sign=-1; private int curColor; private int[] xAxis=new int[4099]; private int[] yAxis=new int[4099]; private int xDelt; private int yDelt; //init applet public void init(){ //set backgd color this.setBackground(Color.black); //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("Draw the Dragon"); 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.blue); step=4096; xAxis[1] = xPart; xAxis[4097] = 3*xPart; yAxis[1] = xPart; yAxis[4097] = yAxis[1]; g.drawLine(xAxis[1],yAxis[1],xAxis[4097],yAxis[4097]); // begin for(int i=1; i<13;i++){ // set color if(i==1){current_color=Color.green;} if(i==2){current_color=Color.yellow;} if(i==3){current_color=Color.red;} if(i==4){current_color=Color.magenta;} if(i==5){current_color=Color.blue;} if(i==6){current_color=Color.green;} if(i==7){current_color=Color.white;} if(i==8){current_color=Color.yellow;} if(i==9){current_color=Color.green;} if(i==10){current_color=Color.magenta;} if(i==11){current_color=Color.lightGray;} if(i==12){current_color=Color.blue;} g.setColor(current_color); // end set color jj=step/2; for(int ii=1; ii<4097;ii+=step){ xDelt=xAxis[step+ii] - xAxis[ii]; yDelt=yAxis[step+ii] - yAxis[ii]; sign=sign*(-1); xAxis[ii+jj]= xAxis[ii] + (xDelt + yDelt*sign)/2; yAxis[ii+jj]= yAxis[ii] + (yDelt - xDelt*sign)/2; g.drawLine( xAxis[ii], yAxis[ii]+100, xAxis[ii+jj], yAxis[ii+jj]+100); g.drawLine( xAxis[ii+jj], yAxis[ii+jj]+100, xAxis[ii+step], yAxis[ii+step]+100); } //end for ii step =step/2; } // end for i return true; } // Otherwise let the superclass handle it. else return super.action(event, arg); } // end action method } //end Applet