Sabatina da Multiplicação em Java

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;


public class MultiplicadorGrafico extends JFrame {
    
    
    /*
     * Este é um Software Educacional destinado
     * a estudantes do Ensino básico e Fundamental,
     * e a pessoas que se dedicam a resolução de
     * contas mentalmente.
     */
    
    
    
    // Instânciando um objeto da classe Random.
    Random RandomNumber = new Random();
    
    
    final int NívelDeDificuldadeMáximo = 10;
    final int NívelDeDificuldadeMínimo = 1;
    
    
    int Multiplicando;
    int Multiplicador;
        
    
    
    
    public MultiplicadorGrafico() {
        super("Testando aprendizagem");
        
        /*
         * http://programjm.blogspot.com.br/
         * @Autor: João Matheus Santos Assis
        */
        
        
        // Construtor da classe MultiplicadorGrafico.
        initComponents();
    }
    
    
    
    
    // Método com os componentes de inicialização.
    private void initComponents() {
        
        
        setLayout(new FlowLayout());
        
        
        /* 
         * Instanciando classe interna responsável por
         * tratar os Eventos.
         */
        ButtonHandler handler = new ButtonHandler();
        PanelNível = new JPanel();
        
        
        
        // Propriedades do ButtonDiminirNível.
        ButtonDiminirNível = new JButton();
        ButtonDiminirNível.setText("-");
        ButtonDiminirNível.setToolTipText("Diminuir Nível de Dificuldade");
        ButtonDiminirNível.setEnabled(false);
        ButtonDiminirNível.addActionListener(handler);
        PanelNível.add(ButtonDiminirNível);
        
        
        
        // Propriedades do ButtonAumentarNível.
        ButtonAumentarNível = new JButton();
        ButtonAumentarNível.setText("+");
        ButtonAumentarNível.setToolTipText("Aumentar Nível de Dificuldade");
        ButtonAumentarNível.addActionListener(handler);
        PanelNível.add(ButtonAumentarNível);
        
        
        add(PanelNível, BorderLayout.NORTH);
        
        
        PanelCentral = new JPanel();
        
        
        // Propriedades do LabelVisualizadorDeNível.
        LabelVisualizadorDeNível = new JLabel();
        LabelVisualizadorDeNível.setFont(new 
                Font("Serif" , Font.PLAIN , 16)
        );
        LabelVisualizadorDeNível.setText("Nível: 1");
        PanelNível.add(LabelVisualizadorDeNível);
        
        
        
        // Propriedades do LabelPergunta.
        LabelPergunta = new JLabel(); 
        LabelPergunta.setFont(new 
                Font("Serif" , Font.BOLD , 16)
        );
        PanelCentral.add(LabelPergunta);
        
        
        
        // Propriedades do TextFieldResposta.
        TextFieldResposta = new JTextField();
        TextFieldResposta.setColumns(8);
        PanelCentral.add(TextFieldResposta);
        
        
        
        // Propriedades do ButtonPróximo.
        ButtonPróximo = new JButton();
        ButtonPróximo.setText("Gerar Novos Números");
        ButtonPróximo.setMnemonic('N');
        ButtonPróximo.addActionListener(handler);
        PanelCentral.add(ButtonPróximo);
        
        
        
        // Propriedades do ButtonConfirmar.
        ButtonConfirmar = new JButton();
        ButtonConfirmar.setText("Confirmar");
        ButtonConfirmar.setSelected(true);
        getRootPane().setDefaultButton(ButtonConfirmar);
        ButtonConfirmar.addActionListener(handler);
        PanelCentral.add(ButtonConfirmar);
        
        
        
        // Definindo o tamanho que o JPanel deve assumir.
        PanelCentral.setPreferredSize(new Dimension(280,80));
        /* 
         * Criando as Bordas do JPanel e definindo a cor 
         * da linha como preta.
         */
        PanelCentral.setBorder(
                BorderFactory.createLineBorder(Color.BLACK)
        );
        add(PanelCentral, BorderLayout.CENTER);
        
        
        
        /*
         * Chamando o Método ObterXY enviando o valor 1,
         * que representa o NívelDeDificuldade.
         */
        ObterXY(1);
          
    }
    
    
    
    
    
    // Classe Interna que trata os Eventos.
    private class ButtonHandler implements ActionListener {
        
       private int NívelDeDificuldade = 1;

        @Override
        public void actionPerformed(ActionEvent event ) {
            
            
            /* 
             * A variável NívelDeDificuldade só poderá ser 
             * decrementada se seu valor for maior ou igual a 2.
             */
            if (NívelDeDificuldade > NívelDeDificuldadeMínimo) {
                if (event.getSource() == ButtonDiminirNível) {
                    NívelDeDificuldade--;
                    ObterXY(NívelDeDificuldade);
                }
            }
            
            
            
            /* 
             * A variável NívelDeDificuldade só poderá ser 
             * incrementada se seu valor for menor ou igual a 9.
             */
            if (NívelDeDificuldade < NívelDeDificuldadeMáximo) {
                if (event.getSource() == ButtonAumentarNível) {
                    NívelDeDificuldade++;
                    ObterXY(NívelDeDificuldade);
                }
            }
            
            
            
            /* 
             * O ButtonPróximo será responsável por gerar 
             * novos números à serem multiplicados.
             */
            if (event.getSource() == ButtonPróximo) {
                ObterXY(NívelDeDificuldade);
            }
            
            
            
            /* 
             * Método responsável por desabilitar os 
             * botões quando for necessário.
             */
            DesabilitarButton(NívelDeDificuldade);
            
            
            
            /*
             * O usuário quando tiver certeza do resultado da 
             * multiplicação deverá clicar no ButtonConfirmar
             * e se o resultado estiver correto exibirá uma 
             * mensagem parabenizando o usuário jogador, caso
             * o contrário uma mensagem motivante.
             */
            if (event.getSource() == ButtonConfirmar) {
                
                if (TextFieldResposta.getText().equals
                        (String.valueOf(Multiplicando * Multiplicador)) ) {
                    
                    JOptionPane.showMessageDialog(MultiplicadorGrafico.this,
                            "Parabéns, Você Acertou!\n" +
                            Multiplicando + " X " + Multiplicador +
                            " = " + Multiplicando * Multiplicador, 
                            "Conseguiu..." ,
                            JOptionPane.INFORMATION_MESSAGE);
                    
                } else {
                    
                    JOptionPane.showMessageDialog(MultiplicadorGrafico.this
                            "Não foi dessa vez..., Tente Novamente",
                            "Perdeu..." ,
                            JOptionPane.INFORMATION_MESSAGE);
                }
            }
            
            
            
            // Exibindo o NívelDeDificuldade.
            LabelVisualizadorDeNível.setText("Nível: " + NívelDeDificuldade);
                
        }
    }
    
    
    
    
     
    public void ObterXY(int NívelDeDificuldade){
        
        // Criando e definindo o valor da variável ValorDeDeslocamentoX.
        int ValorDeDeslocamentoX = 1 + ((NívelDeDificuldade - 1) * 10);
        
        
        /* 
         * O método nextInt é chamado passando por parâmetro 
         * o número (n) 10 e retornará um valor entre 
         * 0 (inclusive) e n-1 = 10 - 1 = 9 (inclusive).
         * O valor retornado será acrescido do ValorDeDeslocamentoX.
         */
        Multiplicando = ValorDeDeslocamentoX + RandomNumber.nextInt(10);
        
        
        int ValorDeDeslocamentoY = (NívelDeDificuldade-1)*10;
        Multiplicador = ValorDeDeslocamentoY  + RandomNumber.nextInt(10);
        
        
        // Exibindo a Questão Multiplicativa.
        LabelPergunta.setText(
                "Quanto é " + Multiplicando + " X " + Multiplicador + " ?"
        );
        
    }
    
    
    
    
    
    public void DesabilitarButton(int NívelDeDificuldade) {
        
        /* 
         * Se o valor da variável NívelDeDificuldade 
         * for 1 o ButtonDiminirNível ficará inativado.
         */
        if (NívelDeDificuldade > NívelDeDificuldadeMínimo)
            ButtonDiminirNível.setEnabled(true);
        else
            ButtonDiminirNível.setEnabled(false);
                
        
        /* 
         * Se o valor da variável NívelDeDificuldade 
         * for 10 o ButtonAumentarNível ficará inativado.
         */
        if (NívelDeDificuldade < NívelDeDificuldadeMáximo)
            ButtonAumentarNível.setEnabled(true);
        else
            ButtonAumentarNível.setEnabled(false);
         
    }
     
    
    
    
    // Método Principal.
    public static void main(String [] args) {
        
        MultiplicadorGrafico Multiplicador = new MultiplicadorGrafico();
        
        // Adicionando propriedades do JFrame.
        Multiplicador.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Multiplicador.setSize(320,200);
        Multiplicador.setVisible(true);
        Multiplicador.setResizable(false);
        Multiplicador.setLocationRelativeTo(null);
        
    }
    
    
    
    
    // Componentes Gráficos utilizados.
    private JPanel PanelNível;
        private JButton ButtonDiminirNível;
        private JButton ButtonAumentarNível;
    
    private JPanel PanelCentral;
        private JLabel  LabelVisualizadorDeNível;
        private JLabel  LabelPergunta; 
        private JTextField TextFieldResposta;
    
    private JButton ButtonPróximo;
    private JButton ButtonConfirmar;
    
    
}




Palavras-Chaves: Exame, Prova, Avaliação, Questionário, Inquisição, Arguição, Argumentação, Nível, Multiplicando, Multiplicador, Números Aleatórios, Componentes Gráficos, JFrame, JPanel, JButton, JLabel, JTextField,  JOptionPane, Matemática, Multiplicação, Operações Numéricas, Mensagens de Alerta, Software Educacional, Interface Gráfica, Tecnologia, Linguagem de Programação, Java.




Artigos relacionados em Java:




Feito no NetBeans-7.1 | Executável



Feito no NetBeans-7.1 | Executável