Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - WATACHI_WA

Páginas: [1]
1
No se si esto sobrá aquí o no, ya que aquí solo se programa, pero incluyo aquí el manual del programador por si le quieres hechar un vistazo y darme tu opinion, lo tengo que entregar todo el miércoles, y te agradecería si me das una valoración por que así sé si entendí o no bien los atributos, clases, métodos, de tu proyecto

PD: no me deja incluir el manual, asiq comparto el enlace por si le quieres hechar un ojo, te lo agradecería
https://drive.google.com/file/d/1PoRSjIy3hFF_8yvtqlJy2PPEZLZPCk8T/view?usp=sharing

2
Bueno pues como me vi muy bloqueado, con su permiso continue en su propio proyecto, le he añadido 4 tonterías y lo comparto por aquí para q evalues que tal las tonterías que le he metido, gracias nuevamente por la ayuda q me has brindado por que sin ella no hubiese sido posible ya que has hecho tu TODO,

PD: Ahora me toca la documentación que jamás la he hecho asi que voy a indagar sobre como estructurarla, adjunto en zip el proyecto, un saludo gran compañero


Clase Boton

Código: [Seleccionar]
package mm_jb;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.border.BevelBorder;

public class Boton extends JButton implements ActionListener{

private int valor;

public Boton(int valor) {
this.valor = valor;
setPreferredSize(new Dimension(30, 30));
setFocusPainted(false);
cambiarColor();
addActionListener(this);
}

public int getValor() {return valor;
}

public void rotarValor() {if (valor == 6)
valor = 1; //Comienza de nuevo en 1
else
valor++;
cambiarColor();
}

public void cambiarColor() {
switch (valor) {
case 1:setBackground(Color.RED);break;
case 2:setBackground(Color.BLUE);break;
case 3:setBackground(Color.GREEN);break;
case 4:setBackground(Color.YELLOW);break;
case 5:setBackground(Color.ORANGE);break;
case 6:setBackground(Color.WHITE);
}
}

@Override
public void actionPerformed(ActionEvent e) { rotarValor(); }

}


Clase Combinacion

Código: [Seleccionar]
package mm_jb;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Combinacion {
    public int [] combinacion;
    public int intentos;
    public int muertos;
    public int heridos;
    public int resp;
    public boolean resuelto;
    public String resultado;
    public final String msjTitulo = "MASTERMIND BY JB";
    public final String msjGanar = "Enhorabuena, ¡ GANASTE ! ";
    public String msjIntentos = "UPS!, HAS GASTADO LOS 10 INTENTOS";
    public String msjRepetir = "¿PROBAMOS DE NUEVO?";
   
    public Combinacion(){
        combinacion = new int[4];
        generaCombinacion();
        //Le meto al constructor el metodo
        intentos = 0;
        resuelto = false;
        //Con esto controlo los intentos;
    }
   
    public void generaCombinacion() {
        for (int i = 0; i < combinacion.length; i++) {
            combinacion[i] = (int) ((Math.random()*6)+1);
            System.out.print(combinacion[i] + " ,");
        }
        System.out.println();
    }
   
    public String evaluar (Integer [] colores){
        muertos = 0;
        heridos = 0;
        //Cada vez que evaluo, hago una copia
        Integer [] copia = new Integer [4] ;
        //Hago una copia con integer, por que así valores encontrados, sustituidos por -1
        for (int i = 0; i < 4; i++){
            copia[i] = combinacion [i];
        }
       
        //Busco muertos
        for (int i = 0; i < 4; i++){
            if (colores[i] == copia [i]){
                //Mismo color y misma posicion
                muertos++;
                //Pongo a null, por que no se deben consultar mas
                colores[i]=-1;
                copia[i]=-1;
            }
        }
        //Si encuentra 4 muertos, el juego está resuelto
        if (muertos == 4){
            resuelto = true;
            JOptionPane.showMessageDialog(null, msjGanar, msjTitulo, JOptionPane.INFORMATION_MESSAGE);
            Respuesta();
        }
        //Caso contrario, habrá que obviar los valores -1 si los hay
        else{
            for (int i=0; i<4;i++){
                if (colores[i]!=-1)//Busco quitando los encontrados{
                    for (int j = 0; j < 4; j++){
                        if (copia[j] != -1)//Busco quitando los encontrados{
                            if (colores[i] == copia[j]){
                                heridos++;
                                //Posiciones eliminadas
                                colores[i] = -1;
                                copia[j] = -1;
                            }
                        }
                    }
                }
            }
        }
        //Contabilizamos intentos
        intentos++;
                      //DEVUELVO RESULTADO
        resultado = muertos +  " Muertos - " + heridos + " Heridos";
        return resultado;
       }
   
    public void Resultado(){
        if (intentos == 10){
            msjRepetir = msjIntentos + "\n" + msjRepetir;
            Respuesta();           
        }
    }
   
    public void Respuesta(){
        resp =JOptionPane.showConfirmDialog(null, msjRepetir, msjTitulo, JOptionPane.YES_NO_OPTION);
            switch (resp) {
                case 0:
                    new MasterMind();
                    break;
                case 1:
                    System.exit(0);
                    break;
                default:
                    System.exit(0);
                    break;
            }
    }
   
}


Clase Mastermind

Código: [Seleccionar]
package mm_jb;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MasterMind extends JFrame implements ActionListener
{
   
    Combinacion combinacion;

    public MasterMind() {
        combinacion = new Combinacion();
        JPanel panelesBotones = new JPanel();
        panelesBotones.setLayout(new BoxLayout(panelesBotones, BoxLayout.Y_AXIS));
        //Layout simple que me permite colocar los elementos en forma vertical ;)
        for (int i = 0; i < 10; i++)
        {//Con esto replico el panelColores que contiene los 3 paneles, 10 veces
            panelesBotones.add(new PanelColores(combinacion));
            add(panelesBotones);
        }

       
       
        setTitle("MasterMind by JB");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        //setSize(500, 600);
        setLocationRelativeTo(null);
        setVisible(true);
    }
   
    @Override
    public void actionPerformed(ActionEvent e) {
        //
    }
   
    public static void main(String[] args) {
new MasterMind();               
}

   
}


Clase PanelColores

Código: [Seleccionar]
package mm_jb;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PanelColores extends JPanel
{
    private Boton [] botones;
    JButton btnComprobar;
    JTextField txtResultado;
   
    Combinacion combinacion;
    //PANEL PRINCIPAL
    public PanelColores(Combinacion c) {
        //Añado como referencia un objeto Combinacion
        //Cada panel se evalua por sí solo
        //Añadimos los 3 paneles
        add(new PanelBotones());
        add(new PanelComprobar());
        add(new PanelResultado());
        combinacion = c;
    }
   
    class PanelBotones extends JPanel {
        public PanelBotones() {
            //Inicializo array de botones y los añados
            botones = new Boton [4] ;
            for (int i = 0; i < botones.length; i++){
                botones[i] = new Boton(1);
                //Botones con el primer color
                add(botones[i]);
            }
        }
    }
   
    class PanelComprobar extends JPanel
    {
        public PanelComprobar(){
            btnComprobar = new JButton("Comprobar");
            btnComprobar.addActionListener(new AccionComprobar());
            add(btnComprobar);
        }
    }
   
    class PanelResultado extends JPanel{

        public PanelResultado(){
            txtResultado = new JTextField(14);
            txtResultado.setEditable(false);
            add(txtResultado);
        }
       
    }
   
    class AccionComprobar implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            //Deshabilito el boton una vez pulsado
            botonesActivos(false);
            //Creo array con los valores de los botones
            Integer [] valores = new Integer[4];
            for (int i = 0; i < 4; i++) {
                valores[i]= botones[i].getValor();
            }
           
            //Evaluo combinacion y muestro resultado
            txtResultado.setText(combinacion.evaluar(valores));
            combinacion.Resultado();
        }       
    }
    public void botonesActivos(boolean activos) {
btnComprobar.setEnabled(activos);
for (int i = 0; i < botones.length; i++)
botones[i].setEnabled(activos);
}
}


3
Perdona si es una pregunta tonta, pero estoy buscando el significado de una instrucción que tienes puesta, pack(), en tu linea 29 de la clase MasterMind y no entiendo qué hace, por que sin ella no muestra ningún JFrame.

Edit: Vale buceando por el manual me he encontrado que el pack() lo que hace realmente es encargarse del diseño del marco para adaptarse, en vez de que use setSize o setBounds, sería correcta esta definición?
Gracias de antemano por vuestro tiempo siempre

4
Vale, he conseguido por una parte general los números en el vector, y por otra mostrarlos de forma puntual en mi JFrame, pero no se como comparar un vector con el otro, paso el código pero sigo indagando
Código: [Seleccionar]
public class MasterMind extends JFrame{

    public static int muertos,heridos,n1,n2,n3,n4;
    public static int solucion [] = new int [4];
    public static int valores [] = new int [4];
    public static String sol="";
    private static JButton botonC;

public MasterMind() {         
            FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER,20,20);
JPanel panelBotones = new JPanel();
               
               
                //panelBotones.setSize(220,600);
//panel.add(new Boton(0));
                //JPanel panelComprobar = new JPanel();
                //panelComprobar = new JPanel();;
                //panelComprobar.setSize(20, 20);
                panelBotones.setLayout(flowLayout);
                add(panelBotones);
                //CREACION DE BOTONES DE COLORES
                final Boton [] botones = new Boton[4];
                for (int i = 0; i < botones.length; i++) {
                    botones[i] = new Boton(0);
                    panelBotones.add(botones[i]);
                }
                botonC = new JButton ("Comprobar");
                panelBotones.add(botonC);
               
               
               
               
                botonC.addActionListener( new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {

                    for (int i = 0; i < 4; i++) {
                        valores[i]=botones[i].getValor();
                       
                    }
                    JOptionPane.showMessageDialog(rootPane, Arrays.toString(valores));
                   
                }
                });
               
                JLabel jl_muertos = new JLabel("Muertos: " +muertos);
                panelBotones.add(jl_muertos);
               
                JLabel jl_heridos = new JLabel("Heridos: " +heridos);
                panelBotones.add(jl_heridos);
               
                JLabel jl_sol = new JLabel("Solucion: " +sol);
                panelBotones.add(jl_sol);
                //add(panelComprobar);


setTitle("MasterMind JB");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 800);
               
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
/*SwingUtilities.invokeLater(new Runnable() {
           
@Override
public void run() {
new MasterMind();
}
});*/
           
           
            for (int i = 0; i<solucion.length; i++) {
                solucion[i]=(int)(Math.random()*6)+1;
                sol+=solucion[i]+" ";
               
            }
;
           
                    new MasterMind();
       
        }
}

5
Kabuto en primer lugar no se como agradecerte la ayuda que me estás brindando , de verdad, gracias a tu primer mensaje muy bien explicado y con un código muy bien escrito, me he animado a continuar con el tuyo, yo voy pasito a pasito como me dijiste, hay muchos conocimientos que todavía se me escapan , pero aún así, voy a compartir mi código para que veas el avance que he hecho, mi intención ahora sería poder replicar este frame que tengo 10 veces, pero antes de eso me gustaría ya poder conseguir que con el botón comprobar compruebe mis colores con el que se genera aleatoriamente

Código: [Seleccionar]
public class MasterMind extends JFrame{

    int muertos,heridos,n1,n2,n3,n4;
    private JButton botonC;
public MasterMind() {         
            FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER,20,20);
JPanel panelBotones = new JPanel();
                //panelBotones.setSize(220,600);
//panel.add(new Boton(0));
                //JPanel panelComprobar = new JPanel();
                //panelComprobar = new JPanel();;
                //panelComprobar.setSize(20, 20);
                panelBotones.setLayout(flowLayout);
                add(panelBotones);
                //CREACION DE BOTONES DE COLORES
                final Boton [] botones = new Boton[4];
                for (int i = 0; i < botones.length; i++) {
                    botones[i] = new Boton(0);
                    panelBotones.add(botones[i]);
                } 
                botonC = new JButton ("Comprobar");
                panelBotones.add(botonC);
               
               
               
               
                botonC.addActionListener( new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    n1=botones[0].getValor();
                    n2=botones[1].getValor();
                    n3=botones[2].getValor();
                    n4=botones[3].getValor();
                    String resultado = n1+","+n2+","+n3+","+n4+",";
                    JOptionPane.showMessageDialog(rootPane, resultado);
                }
                });
               
               
                JLabel jl_muertos = new JLabel("Muertos: " +muertos);
                panelBotones.add(jl_muertos);
               
                JLabel jl_heridos = new JLabel("Heridos: " +heridos);
                panelBotones.add(jl_heridos);
               
                //add(panelComprobar);


setTitle("MasterMind JB");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 800);
               
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
/*SwingUtilities.invokeLater(new Runnable() {
           
@Override
public void run() {
new MasterMind();
}
});*/
                    new MasterMind();
       
        }
}

Como puedes observar lo que he avanzado es el botón con los dos JLabel, y que al pulsar el boton me muestre por mensaje los valores de esos colores.
Voy a ponerme ahora a generar numeros en un vector de 4 posiciones, sería lo correcto?


PD: Gracias nuevamente por tu tiempo y por tu manera de explicarte, has conseguido por una parte que pueda tratar el ejercicio y por otra animarme a seguir indagando y avanzando, te estoy muy agradecido

6
Buenas a todos, recien llevo poco tiempo programando en java, me estan enseñando a usar javaSwing, y me han pedido este ejercicio, lo que pasa que no se por donde cogerlo, el juego es el mastermind, pero estaba haciendo botones uno a uno, pero leo por ahí hacerlo mejor con un array, alguien me podría ayudar e indicar como comenzar con esto?
Mando el enunciado para que se entienda mejor:
__________________________________________________________________
El mastermind es un juego de tablero que consiste en averiguar una combinación de cuatro colores. El jugador dispondrá de 10 oportunidades para averiguar la combinación, en caso de no averiguarla en estos intentos perderá la partida.

En cada turno el jugador indicará una combinación de cuatro colores y el juego le devolverá el número de MUERTOS y de HERIDOS. Muertos son los colores que ha acertado y que se encuentran en su posición y heridos los que ha acertado pero que no se encuentran en su posición.

Existen 6 posibles colores y pueden repetirse: ROJO, AZUL, VERDE, AMARILLO, NARANJA y BLANCO

Por ejemplo:

El ordenador obtiene la combinación aleatoria: ROJO - NARANJA - AMARILLO - AZUL

    ROJO - ROJO - AZUL - VERDE --> 1 Muerto 1 Herido
    NARANJA - ROJO - VERDE - VERDE --> 0 Muertos 2 Heridos
    ROJO - VERDE - NARANJA - AMARILLO --> 1 Muerto 2 Heridos
    AZUL - AMARILLO - ROJO - NARANJA --> 0 Muertos 4 Heridos
    ROJO - NARANJA - AMARILLO - AZUL --> 4 Muertos 0 Heridos

GANASTE
________________________________________________________________
Al comenzar la partida el ordenador deberá crear de forma aleatoria una combinación de cuatro colores. No importa que se repitan.

Deberás utilizar la función random de Math, para generar un número de 1 a 6. Asociando a cada uno de los números un color. Por ejemplo:

ROJO - 1

AZUL - 2

VERDE - 3

AMARILLO - 4

NARANJA - 5

BLANCO - 6

De esta forma la comprobación la realizarás comprobando cada uno de los números de la combinación.

La combinación no debe mostrarse nunca, a no ser que el jugador haya ganado o que haya agotado todas las posibilidades y por tanto haya perdido. En ese caso se mostrará la combinación oculta.
_____________________________________________________________________

No quiero que me hagan el ejercicio, pero estoy impotente por que no se como comenzar :(


Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".