使用矩阵创建迷宫(JAVA)

使用矩阵创建迷宫(JAVA),java,swing,maze,Java,Swing,Maze,所以我试图用Java制作一个迷宫(没有生成器),但我遇到了一个障碍。我目前的代码将制作一个迷宫,并制作一个jframe,但它不会给它上色。。。有没有办法使着色工作 import java.awt.*; import javax.swing.*; import java.lang.*; public class ayy{ public static void main(String [] args){ JFrame frame = new JF

所以我试图用Java制作一个迷宫(没有生成器),但我遇到了一个障碍。我目前的代码将制作一个迷宫,并制作一个jframe,但它不会给它上色。。。有没有办法使着色工作

    import java.awt.*;
    import javax.swing.*;
    import java.lang.*;

    public class ayy{

    public static void main(String [] args){

    JFrame frame = new JFrame("Maze");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setSize(1000,1000);
    frame.setVisible(true);

    int width = 1;
    int height = 1;

    int [][] map= {
             {0,0,0,0,0,0,0,0,0,0,},
             {0,0,0,0,0,0,0,0,0,0,},
             {2,1,1,1,0,0,0,0,0,0,},
             {0,0,0,1,0,0,0,1,1,2,},
             {0,0,0,1,0,0,0,1,0,0,},
             {0,0,0,1,0,0,0,1,0,0,},
             {0,0,0,1,1,1,1,1,0,0,},
             {0,0,0,0,0,0,0,0,0,0,},
             {0,0,0,0,0,0,0,0,0,0,},
             {0,0,0,0,0,0,0,0,0,0,}
           };

    for(int i=0;i<map.length;i++){
       for(int j=0;j<map.length;j++){
         switch(map[i][j]){
          case 0:
          class rectangle{

       public void paint(Graphics g){
      g.drawRect(1,1,1,1);
      g.setColor(Color.red);
    }  
    }
   break;
  case 1:
  class rectangle2{

       public void paint(Graphics g){
      g.drawRect(1,1,1,1);
      g.setColor(Color.yellow);
    }  
    }       break;
  case 2:
 class rectangle3{

       public void paint(Graphics g){
      g.drawRect(1,1,1,1);
      g.setColor(Color.blue);
    }  
    }       break;
         }
       }  
    }
    }
    }
import java.awt.*;
导入javax.swing.*;
导入java.lang.*;
公共类ayy{
公共静态void main(字符串[]args){
JFrame=新JFrame(“迷宫”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
框架设置尺寸(10001000);
frame.setVisible(true);
整数宽度=1;
整数高度=1;
int[][]映射={
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{2,1,1,1,0,0,0,0,0,0,},
{0,0,0,1,0,0,0,1,1,2,},
{0,0,0,1,0,0,0,1,0,0,},
{0,0,0,1,0,0,0,1,0,0,},
{0,0,0,1,1,1,1,1,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,}
};
对于(inti=0;i1-)不在开关情况下创建类,这不是一个好做法

2-)如果类未继承JComponent,则它将无法重写paint或paintComponent方法,因为它没有这些方法

3-)大写类名称的第一个字母,并使用有意义的名称

4-)按如下方式修改代码:

public class MazeApp extends JFrame {

public static void main(String[] args) {

    JFrame frame = new JFrame("Maze");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setSize(1000, 1000);
    Maze brd = new Maze();
    frame.add(brd);
    frame.setVisible(true);
}
}


class Maze extends JPanel {

public Maze() {
}

protected void paintComponent(Graphics g) {
    int width = 1;
    int height = 1;

    int[][] map = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
            { 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, },
            { 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, },
            { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, },
            { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, },
            { 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, },
            { 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, },
            { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, },
            { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, } };

    for (int i = 0; i < map.length; i++) {
        for (int j = 0; j < map.length; j++) {
            int factori = i * 50;
            int factorj = j * 50;
            switch (map[i][j]) {
            case 0: {
                g.setColor(Color.red);
                g.fillRect(factori, factorj, 2, 2);

            }
                break;
            case 1: {
                g.setColor(Color.yellow);
                g.fillRect(factori, factorj, 2, 2);

            }
                break;
            case 2: {
                g.setColor(Color.blue);
                g.fillRect(factori, factorj, 2, 2);

            }
                break;
            }
        }
    }
}
}
公共类MazeApp扩展JFrame{
公共静态void main(字符串[]args){
JFrame=新JFrame(“迷宫”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
框架。设置尺寸(10001000);
迷宫brd=新迷宫();
帧。添加(brd);
frame.setVisible(true);
}
}
类扩展了JPanel{
公共迷宫(){
}
受保护组件(图形g){
整数宽度=1;
整数高度=1;
int[]map={{0,0,0,0,0,0,0,0,0,0,0,0,},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
{ 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, },
{ 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, },
{ 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, },
{ 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, },
{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, },
{ 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, } };
对于(int i=0;i
是否将矩形添加到框架中?“Swing程序应该覆盖
paintComponent()
而不是覆盖
paint()
”-也考虑检查的方法。谢谢!你的修复是很棒的!但是,SETHORE方法只对外部颜色,而不是内部颜色,所以我要修复……@ cSANto98,这是因为使用<代码> DrRutt < /Cord>代替了代码> FILRCIT< <代码>,我已经更新了。太好了!谢谢你的修复。我快要疯了。想弄明白。