Está en la página 1de 3

Ayuda con las libreras grficas Swing y AWT

Pintado del Tablero y de la Ficha


En principio, el tablero lo podemos implementar dentro de un objeto JPanel

de la librera Swing (import javax.swing.JPanel). ste elemento tiene un mtodo

paint, cuyo prototipo es public void paint(Graphics g), que se invoca cada vez

que queremos pintar dicho elemento de la clase JPanel.

As, podemos crear nuestro tablero de la siguiente manera:

publicclassTableroextendsJPanel
{
privateintalto; //Altodeltablero
privateintancho; //Anchodeltablero
privateintcentro; //Centro(enhorizontal)deltablero

privateintanchoBloque; //indicacuantomidedeanchouncuadradodeunadelaspiezas.
//Seusarparapintartodaslascasillasconesetamao

publicTablero(intancho,intalto)
{
this.ancho=ancho;
this.alto=alto;
this.centro=this.centro/2;

//Elmetodopaintquenosotrossobreescribimos
publicvoidpaint(Graphicsg)
{
pintaTablero(g);


//Aqupodravenirtambinelpintadodelaficha
}

privateGraphicspintaTablero(Graphicsg)
{

for(inty=0;y<this.alto;y++)
{
//Hacemosunrecorridoporfilas,siendoylafila
//correspondiente(eneljuego,de0a24)
for(intx=0;x<this.alto;x++)
{
//Hacemosunrecorridoporcolumnas,siendoxla
//columnacorrespondiente(eneljuego,de0a14)

if(estaVaciaCasilla(x,y))
{
g.setColor(Color.black);
//Lacolocamosanegro,suponiendonegroel
//colordelfondo.Tambinpuedeusarsesi
//seprefiereelblancocomocolordefondo

g.fillRect(x*anchoBloque,y*anchoBloque,
anchoBloque,anchoBloque);
//Pintamoselcuadradocorrespondiente enel
//colordelfondo
}
else
{
g.setColor(obtieneColorCasilla(x,y));
//Colocamoselcoloralquelecorresponda
//aesacasilla,puestoqueesunacasillaque
//estocupada.
//ElmtodoobtieneColorCasilladependerde
//cmosehaimplementadoeltablero

g.fillRect(x*anchoBloque,y*this.anchoBloque,
anchoBloque,anchoBloque);
//Pintamoselcuadradocorrespondiente enel
//colordelacasillacorrespondiente
}
}
returng;
}//Findelmtodo

}//Findelaclase

El pintado de la ficha se realizar de forma similar. As, suponemos que

tenemos una Ficha, que estar formada por cuatro casillas. La tcnica consiste en,

al igual que se ha hecho con el Tablero, buscar las coordenadas en las que est la

Ficha colocada (sus cuatro partes componentes) y dibujar cada una de esas

componentes como si fuesen cuatro rectngulos.


As, podemos pintar la pieza con el siguiente cdigo:

privateGraphicspintaFicha(Graphicsg,Fichaf)
{
Coordenada[]coords=f.obtieneCoordenadas();
//Cargamosenunavariableauxiliarylascoordenadasdelafichaquequeremospintar

for(Coordenadac:cords)
{
g.setColor(f.obtieneColorFicha());
//Colocamoselcoloralquelecorrespondaaesaficha.
//ElmtodoobtieneColorFichadependerdecmoseha
//implementadolaficha

g.fillRect(c.obtieneX()*anchoBloque,c.obtieneY()*anchoBloque,
anchoBloque,anchoBloque)
//Pintamoselcuadradocorrespondiente enelcolor
//delapiezaofichacorrespondiente
}
returng;
}

Si la Ficha la tenemos incluida en el Tablero (es decir, la clase Tablero tiene un

atributo que es Ficha, que indica la ficha que ahora mismo est en juego), entonces lo

normal y fcil es que modifiquemos el mtodo de pintado del Tablero (mtodo paint

de JPanel) para que simultneamente pinte el Tablero y la Pieza. Quedara

aproximadamente de esta manera:

//Elmetodopaintquenosotrossobreescribimos
publicvoidpaint(Graphicsg)
{
pintaTablero(g);

pintaFicha(g,this.f)
//As,feselatributoprivadodeclaradoenlaclaseas:
//Fichaf;
//SehabrtenidoqueincluirenelconstructordeTableroesto:
//f=newFicha();
//EstainvocacindependerdelconstructordeFichaquehayamoscreado

También podría gustarte