Desenhando uma matriz de quadrados

Guj, estou tentando desenhar uma matriz de quadrados na minha tela, mas não vai =/
O quê estou tentando fazer é um jogo estilo Tower Defense.
Eu desenho na tela o cenário e quero mostrar os quadrados para serem as áreas na qual os monstros irão passar e as torres serão construídas.
Mas desenha apenas o primeiro quadrado </3

Segue o código:

package towerDefense;

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 *
 * @author Paulo Lopes
 * @since 1.0
 */
public final class Fase1 extends JPanel
{
    private Image grama;
    private int largura, altura;
    private BlocosFases[][] blocos;
    
    /**
     * 
     * @param largura largura da tela.
     * @param altura  altura da tela.
     */
    
    public Fase1(int largura, int altura)
    {
        ImageIcon icone = new ImageIcon("imagens/fase1.jpg");
        icone.setImage(icone.getImage().getScaledInstance(largura, altura, Image.SCALE_SMOOTH));
        grama = icone.getImage();
        blocos = new BlocosFases[10][15];
        for(int cont =0; cont < blocos.length; cont ++)
        {
            for(int cont2 = 0; cont2 < blocos[0].length; cont2 ++)
            {
                blocos[cont][cont2] = new BlocosFases(largura, altura);
            }
        }
    }
    
    @Override
    public void paintComponent(Graphics graficos)
    {
        graficos.drawImage(grama, largura, altura, null);
        for(int cont =0; cont < blocos.length; cont ++)
        {
            for(int cont2 = 0; cont2 < blocos.length; cont2 ++)
            {
                blocos[cont][cont2].pintarBlocos(graficos);
            }
        }
        
    }
}

A Classe que cria os quadrados é essa (coisa simples):

package towerDefense;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;

/**
 *
 * @author Paulo Lopes
 * @since 1.0
 */
public class BlocosFases extends Rectangle
{
    private final int larguraRetangulo, alturaRetangulo;
    
    /**
     * 
     * @param largura Largura da tela.
     * @param altura Altura da tela.
     */
    public BlocosFases(int largura, int altura)
    {
        larguraRetangulo = largura /15; //15 blocos em largura.
        alturaRetangulo = altura / 10; // 10 blocos em altura.
    }
    
    /**
     * 
     * @param g Classe abstrata para desenhos em tela.
     */
    public void pintarBlocos(Graphics g)
    {
        Graphics2D grafico = (Graphics2D) g;
        grafico.drawRect(x, y, larguraRetangulo, alturaRetangulo);
    }
}

Alguma ideia?
Agradeço de antemão.
Paulo.

Não analisei seu código a fundo, mas um dos problemas pode estar na tipagem utilizada. As larguras e alturas estão todas como inteiro, então algumas contas terão pouca precisão. Tente mudar para double pra ver se muda alguma coisa.

Posso tentar, mas a construção de um retângulo não é com inteiros?

http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html#Rectangle(int, int, int, int)

Valeu!

Como exemplo tenho isso aqui desenhando diretamente no Graphics2D

	private void drawGrid(Graphics2D g2d) {
		g2d.setColor(Color.WHITE);
		g2d.setComposite(AlphaComposite.SrcOver.derive(0.42f));
		
		int width = cols() * TILE_SIZE;
		for(int i = 0; i < rows(); i++)
			g2d.drawLine(0, i * TILE_SIZE, width, i * TILE_SIZE);
		
		int height = rows() * TILE_SIZE;
		for(int i = 0; i < cols(); i++)
			g2d.drawLine(i * TILE_SIZE, 0, i * TILE_SIZE, height);
		
		g2d.setComposite(AlphaComposite.SrcOver.derive(0.88f));
		for(int i = 0; i < rows(); i++)
			for(int j = 0; j < cols(); j++)
				g2d.drawString(i+":"+j, j * TILE_SIZE, i * TILE_SIZE);
		
		g2d.setComposite(AlphaComposite.SrcOver.derive(1f));
	}

Como exemplo de um Tower Defense você pode ver o meu http://github.com/MarkyVasconcelos/TDGame

fui ver seu tower defense, mas não tem um jar, mais simples coisa assim… to sem IDE aberta, e tem que montar o projeto todo, me parece ser do eclipse, sempre dá rolo com o netbeans…

veja meu jogo de 7 erros, crio tudo como uma matriz…

http://www.4shared.com/file/px0TKitm/JOGODOS7ERROS.html

qualquer coisa questione mais do código no caso…