⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mazedraw.java

📁 这是一个可自动生成迷宫、自动或人工寻找迷宫路径的java程序
💻 JAVA
字号:
package maze;import java.awt.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class MazeDraw extends JLabel implements Drawer {    private Gen_Solve generator;    public void setGenerator(Gen_Solve generator) {        this.generator = generator;    }    public Gen_Solve getGenerator() {        return generator;    }    public void refreshMaze() {        repaint();    }    public void paint(Graphics g) {        if (generator == null) return;        int w = getWidth() - 10;        int h = getHeight() - 10;        int len;        int width = generator.getWidth();        int height = generator.getHeight();        if ((float) w / h < (float) width / height) {            len = w / width;        } else {            len = h / height;        }        w = len * width;        h = len * height;        int left = (getWidth() - w) / 2;        int top = (getHeight() - h) / 2;        g.setColor(Color.white);        g.fillRect(left, top, w, h);        g.setColor(Color.black);        for (int i = 0; i <= width; i++) {            int x = left + i * len;            g.fillRect(x, top, 1, h);        }        for (int i = 0; i <= height; i++) {            int y = top + i * len;            g.fillRect(left, y, w, 1);        }        for (int i = 0; i < width; i++) {            for (int j = 0; j < height; j++) {                int data = generator.getData(i, j);                int bLeft = left + i * len;                int bTop = top + j * len;                if ((data & 0x0F) > 0) {                    g.setColor(Color.white);                    g.fillRect(bLeft + 1, bTop + 1, len - 1, len - 1);                    if ((data & Gen_Solve.NORTH) > 0) {                        g.fillRect(bLeft + 1, bTop, len - 1, 1);                    }                    if ((data & Gen_Solve.WEST) > 0) {                        g.fillRect(bLeft, bTop + 1, 1, len - 1);                    }                    if ((data & Gen_Solve.SOUTH) > 0) {                        g.fillRect(bLeft + 1, bTop + len, len - 1, 1);                    }                    if ((data & Gen_Solve.EAST) > 0){                        g.fillRect(bLeft + len, bTop + 1, 1, len -1);                    }                }                if ((data & Gen_Solve.SOLVE) > 0 || (data & Gen_Solve.WRONG) > 0) {                    int m = len / 2;                    int n = m / 2;                    int t = len - m - n;                    int r = t + n;                    if ((data & Gen_Solve.WRONG) > 0 && (data & Gen_Solve.SOLVE) == 0) {                      if(Gen_Solve.istrack == 1){                          g.setColor(Color.gray);                        }                      else{                          g.setColor(Color.white);                        }                    } else {                        g.setColor(Color.green);                    }                    g.fillRect(bLeft + n, bTop + n, m, m);                   if(Gen_Solve.istrack == 1){                       g.setColor(Color.gray);                     }                   else{                       g.setColor(Color.white);                     }                    if ((data & Gen_Solve.W_NORTH) > 0) {                        g.fillRect(bLeft + n, bTop - t, m, r);                    }                    if ((data & Gen_Solve.W_WEST) > 0) {                        g.fillRect(bLeft - t, bTop + n, r, m);                    }                    if ((data & Gen_Solve.W_SOUTH) > 0) {                        g.fillRect(bLeft + n, bTop + m + n, m, r);                    }                    if ((data & Gen_Solve.W_EAST) > 0) {                        g.fillRect(bLeft + m + n, bTop + n, r, m);                    }                    g.setColor(Color.green);                    if ((data & Gen_Solve.S_NORTH) > 0) {                        g.fillRect(bLeft + n, bTop - t, m, r);                    }                    if ((data & Gen_Solve.S_WEST) > 0) {                        g.fillRect(bLeft - t, bTop + n, r, m);                    }                    if ((data & Gen_Solve.S_SOUTH) > 0) {                        g.fillRect(bLeft + n, bTop + m + n, m, r);                    }                    if ((data & Gen_Solve.S_EAST) > 0) {                        g.fillRect(bLeft + m + n, bTop + n, r, m);                    }                }            }        }        if (generator.getStart() >= 0 ) {            int x = generator.getStart() % generator.getWidth();            int y = generator.getStart() / generator.getWidth();            g.setColor(Color.cyan);            g.fillRect(left + x * len + 1, top + y * len + 1, len - 1, len - 1);            x = generator.getEnd() % generator.getWidth();            y = generator.getEnd() / generator.getWidth();            g.setColor(Color.red);            g.fillRect(left + x * len + 1, top + y * len + 1, len - 1, len - 1);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -