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:
- Somando dois números com JOptionPane em Java
- Programa que calcula o fatorial e se o número é primo em Java
- Equação do 2° grau em Java
- Calculadora simples em Java
- Calculando montante em regime de juros compostos em uma aplicação financeira em Java.
- IMC em Java
- Somando e subtraindo duas matrizes em Java
- Jogo da Forca em Java
- Calculadora Completa em Java
- Desenhando figuras com o mouse em Java
- Jogo da Memória em Java
Feito no NetBeans-7.1 | Executável |
Feito no NetBeans-7.1 | Executável |