import java.applet.*; import java.awt.*; import java.awt.event.*; public class f_maze extends Applet implements Runnable{ Thread th = null; Image os; Graphics og; int td[][][] = new int[5][13][13]; int mx,my,x0,y0,x1,y1; int wd,sw; Button mk; public void init(){ os = createImage(450,450); og = os.getGraphics(); c_maze(); setLayout(new BorderLayout()); Panel pan = new Panel(); pan.setLayout(new FlowLayout()); pan.add(mk = new Button(" make ")); add("South",pan); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ x0 = e.getX(); y0 = e.getY(); repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e){ x1 = e.getX(); y1 = e.getY(); if((x1-x0) > 15){ if(td[0][my][mx+1] != 1)mx ++; x0 = x0 + 15; }else if((x1-x0) < -15){ if(td[0][my][mx-1] != 1)mx --; x0 = x0 - 15; }else if((y1-y0) > 15){ if(td[0][my+1][mx] != 1)my ++; y0 = y0 + 15; }else if((y1-y0) < -15){ if(td[0][my-1][mx] != 1)my --; y0 = y0 - 15; } repaint(); } } ); mk.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ c_maze();; repaint(); } }); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,450,450); for(int i1 = 0;i1 < 13;i1 ++){ for(int i2 = 0;i2 < 13;i2 ++){ if(td[1][i2][i1]==1)w_draw(i1*15+20,i2*15+20); if(td[2][i2][i1]==1)w_draw(i1*15+235,i2*15+20); if(td[3][i2][i1]==1)w_draw(i1*15+20,i2*15+235); if(td[4][i2][i1]==1)w_draw(i1*15+235,i2*15+235); } } og.setColor(Color.blue); og.fillOval(mx*15+20,my*15+20,15,15); og.fillOval(mx*15+235,my*15+20,15,15); og.fillOval(mx*15+20,my*15+235,15,15); og.fillOval(mx*15+235,my*15+235,15,15); og.setColor(Color.red); og.setFont(new Font("",Font.BOLD,15)); og.drawString("G",167+20,178+20); og.drawString("G",167+235,178+20); og.drawString("G",167+20,178+235); og.drawString("G",167+235,178+235); if((mx == 11)&&(my == 11)){ og.setFont(new Font("",Font.BOLD,54)); og.setColor(Color.black); og.drawString("GOAL !!",152,252); og.setColor(Color.red); og.drawString("GOAL !!",150,250); } g.drawImage(os,0,0,this); } public void c_maze(){ mx = 1 ; my = 1 ; for(int i1 = 0;i1 < 13;i1 ++){ for(int i2 = 0;i2 < 13;i2 ++){ for(int tn = 0;tn < 5;tn ++){ td[tn][i2][i1] = 0; } if((i1%2 == 0)&&(i2%2 == 0))td[0][i2][i1] = 1; if((i1 == 0)||(i1 == 12)||(i2 == 0)||(i2 == 12)){ for(int tn = 0;tn < 5;tn ++){ td[tn][i2][i1] = 1; } } } } for(int m1 = 1;m1 < 6;m1 ++){ wd = (int)(4*Math.random()); switch(wd){ case 0 : td[0][m1*2][2-1] = 1 ; break ; case 1 : td[0][m1*2-1][2] = 1 ; break ; case 2 : td[0][m1*2][2+1] = 1 ; break ; case 3 : td[0][m1*2+1][2] = 1 ; break ; } } for(int mx = 2;mx < 6;mx ++){ for(int my = 1;my < 6;my ++){ sw = 0; while(sw == 0){ wd = (int)(3*Math.random()); switch(wd){ case 0 : if(td[0][my*2-1][mx*2] != 1){td[0][my*2-1][mx*2] = 1 ; sw = 1 ;} ; break ; case 1 : if(td[0][my*2][mx*2+1] != 1){td[0][my*2][mx*2+1] = 1 ; sw = 1 ;} ; break ; case 2 : if(td[0][my*2+1][mx*2] != 1){td[0][my*2+1][mx*2] = 1 ; sw = 1 ;} ; break ; } } } } for(int mx = 1;mx < 12;mx ++){ for(int my = 1;my < 12;my ++){ if(td[0][my][mx] == 1){ wd = (int)(4*Math.random()); td[wd+1][my][mx] = 1; wd = (int)(4*Math.random()); td[wd+1][my][mx] = 1; } } } } public void w_draw(int dx,int dy){ og.setColor(new Color(218,165,32)); og.fillRect(dx,dy,15,15); og.setColor(new Color(139,0,0)); og.drawLine(dx,dy,dx+14,dy); og.drawLine(dx,dy+7,dx+14,dy+7); og.drawLine(dx,dy+15,dx+14,dy+15); og.drawLine(dx+7,dy,dx+7,dy+7); og.drawLine(dx,dy+7,dx,dy+15); } public void start(){ if(th == null){ th = new Thread(this); th.start(); } } public void stop(){ th = null; } public void run(){ while(th != null){ try{ Thread.sleep(100); } catch (InterruptedException e){ } } } public void update( Graphics g ){ paint( g ) ; } }