Ciao ragazzi, ho un po di problemini nella creazione di un labirinto random.
Tralasciando la logica da usare che ovviamente non ancora completo, il disegno che viene fuori non combacia con la matrice che ottengo. Inoltre talvolta viene lanciata un eccezione, divisione per 0 e non capisco perché. Incollo il codice così magari lo provate
E' la prima volta che uso i metodi di Graphics e mi stanno facendo uscire di testa xD

codice:
package jmaze;

/**
 * @author Stefano Loris
 */
public class Start {
    
    public static void main(String[]args) {      
        JFrameMaze maze = new JFrameMaze();
    }
}
codice:
package jmaze;

import java.util.Random;

/**
 * @author Stefano Loris
 */
public class JMaze {

    public int[][] createsMatrix() {

        //La matrice avrà dimensione random compresa tra 0 e 50.
    	int rc;
    	do {
    		rc = (int) (Math.random()*20); 
    	}while((rc % 2) != 0);
        
        //Inizializzo la matrice
        int[][] matrix = new int[rc][rc];
        
        //Creo la matrice
        Random random = new Random();
        
        for(int i=0; i<matrix.length; i++) {
            for(int j=0; j<matrix[0].length; j++) {
                int n = 10;
                int scelta = random.nextInt(n);
                if(scelta >= 5) {
                    matrix[i][j] = 1;
                }
                else {
                    matrix[i][j] = 0;
                }
            }
        }
        
        //Stampo la matrice per fare debug
        for(int i=0; i<matrix.length; i++) {
            for(int j=0; j<matrix[0].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println("");
        }
        
        return matrix;
    }
}
codice:
package jmaze;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author Stefano Loris
 */

public class JFrameMaze extends JFrame {

    private JMaze jmaze;
    private MyJPanel jpanel;
    private int[][] lab;
    
    public JFrameMaze() {
        
        super("JMaze");
        
        jmaze = new JMaze();
        jpanel = new MyJPanel();
        lab = jmaze.createsMatrix();
       
        this.setContentPane(jpanel);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Dimension d = new Dimension(600,600);
        this.setSize(d);
        this.toFront();
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setVisible(true);
    }
    
    private class MyJPanel extends JPanel {
        
        @Override
        public void paintComponent(Graphics g) {
            
            super.paintComponent(g);
            
            Dimension r = getSize();
            int dim = (int)(r.width/lab.length+2); //Dimensione cella
            g.clearRect(0, 0, dim*(lab.length+2), dim*(lab.length+2));
            g.setPaintMode();
            g.setColor(Color.RED);
           
            //Coloro il labirinto
            
            for(int i=0; i<lab.length; i++) {
                for(int j=0; j<lab[0].length; j++) {
                    if(lab[i][j] == 1) {
                        g.setColor(Color.RED);
                        g.fillRect(i*dim,j*dim,dim,dim);
                    }
                    else {
                        g.setColor(Color.WHITE);
                        g.fillRect(i*dim,j*dim,dim,dim);
                    }
                }
            }
            
            //Disegno griglia
            g.setColor(Color.BLACK);
            for (int i = 0; i <= lab.length + 2; i++) {
                
                g.drawLine(i * dim, 0, i * dim, dim * (lab.length + 2));
                
                for (int j = 0; j <= lab[0].length + 2; j++) {
                    g.drawLine(0, j * dim, dim * (lab.length + 2), j * dim);
                }    
            }  
        }
    }
}
Grazie, per qualsiasi aiuto/consiglio

Ps: viene tagliato anche un pezzetto di labirinto sotto..