Tengo que crear un juego que se basará en un tablero rectangular de casillas
donde cada casilla podra tener asignado un cuadrado o pieza de un color. Inicialmente el tablero se rellenara aleatoriamente con una serie de piezas.
Mas o menos como se muestra aqui[URL="http://prntscr.com/5qcrme"]http://prntscr.com/5qcrme[/URL]
tengo dos archivos:
Código:
De momento tan solo he sido capaz de pintar cuadrados, lineas y poco mas.import javax.swing.JFrame; import java.awt.Graphics;Código:y el tablero import java.awt.Color; import java.util.Random; //genera el random import java.awt.Graphics; import java.awt.Font; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Tablero extends JPanel { //Aquí irían los atributos necesarios //Constructores Tablero() { //El constructor debe tener los parámetros oportunos //para inicializar el tablero y el juego // Añadimos el 'escuchador' de ratón addMouseListener(new MouseHandler()); } //Métodos de la clase que implementan el juego: básicamente hacer una //jugada, dibujar el estado del tablero y comprobar si la partida se acabó //Método paint public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); //Verticales g.drawLine(110, 15, 110, 315); g.drawLine(160, 15, 160, 315); g.drawLine(210, 15, 210, 315); g.drawLine(260, 15, 260, 315); g.drawLine(310, 15, 310, 315); g.drawLine(360, 15, 360, 315); g.drawLine(410, 15, 410, 315); //Horizontales g.drawLine(110, 15, 410, 15); g.drawLine(110, 65, 410, 65); g.drawLine(110, 115, 410, 115); g.drawLine(110, 165, 410, 165); g.drawLine(110, 215, 410, 215); g.drawLine(110, 265, 410, 265); g.drawLine(110, 315, 410, 315); //Numeros filas g.setFont(new Font("SansSerif", Font.PLAIN, 45)); g.setColor(Color.black); g.drawString("1",40,60); g.drawString("2",40,110); g.drawString("3",40,160); g.drawString("4",40,210); g.drawString("5",40,260); g.drawString("6",40,310); //Numeros columnas g.drawString("6",370,365); g.drawString("5",320,365); g.drawString("4",270,365); g.drawString("3",220,365); g.drawString("2",170,365); g.drawString("1",120,365); //Puntos g.setFont(new Font("SansSerif", Font.PLAIN, 18)); g.drawString("Puntos: ", 126, 402); //CUADRADO g.setColor(Color.red); g.fillRect(111,16, 49, 49); Cuadrado c = new Cuadrado(); c.setX(161); c.setY(16); g.setColor(Color.blue); g.fillRect(161,16, 49, 49); //Aquí iría el código para pintar el estado del tablero } public void paintComponent1(Graphics g){ super.paintComponent(g); //prueba } //Clase cuadrado private class Cuadrado{ private int x; private int y; private char color; public void setX(int xx){ xx = x; } public void setY(int yy){ yy = y; } public int getX(){ return x; } public int getY(){ return y; } public double setColor(){ double numero_color = Math.random()*6; if(numero_color<=3.0){color = 'r';}; if(numero_color>3.0 && numero_color<=4.5){color = 'b';}; if(numero_color>4.5 && numero_color<6){color = 'g';}; return numero_color; } public char getColor(){ return color; } /** Random rand = new Random(); float r = rand.nextFloat(); float g = rand.nextFloat(); float b = rand.nextFloat();*/ } //Clase privada para capturar los eventos del ratón private class MouseHandler extends MouseAdapter { public void mouseClicked (MouseEvent e) { //Mostramos un diálogo con la posición del ratón //para ver un ejemplo de cómo se obtienen las coordenadas //donde se produjo el click JOptionPane.showMessageDialog(null, String.format("Ratón %d,%d \n",e.getX(),e.getY())); //Aquí irían las instrucciones para comprobar si el //click del ratón se produjo en una posición correcta //y hacer la jugada correspondiente //Se pueden llamar a los métodos públicos de la clase //Seguramente habrá que repintar el tablero si se realizó //una jugada válida repaint(); } } }public class TestTablero { public static void main(String[] args) { Tablero t = new Tablero(); JFrame app = new JFrame("Tablero"); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setBounds(0, 0, 440, 470); app.add(t); app.setVisible(true); } }
Tengo esto para generar colores aleatorios:
Código:
Estoy un poco perdio y no se como seguir para poder aplicar esos colores que se generan aleatorios a mi cudrado y como generar posiciones aleatorias a mis cuadrados.public double setColor(){ double numero_color = Math.random()*6; if(numero_color<=3.0){color = 'r';}; if(numero_color>3.0 && numero_color<=4.5){color = 'b';}; if(numero_color>4.5 && numero_color<6){color = 'g';}; return numero_color; } public char getColor(){ return color; }
Un saludo y gracias