Fórum Jogo da Forca - Animação #481561
05/06/2014
0
Pessoal seguinte fiz este jogo no netbeans: uma tela padrão, jogo e uma classe enforcado. Quando inicio o jogo ele solicita a palavra que pode ser de qualquer tamanho. A medida que ele vai errando vai montando o boneco. Contudo, somente na barra de status é que aparece os erros. Ele simplesmente não chama a animação (classe JPanel enforcado);
Tela Padrão:
Jogo:
Class enforcado (animação):
O que está errado aqui?
Tela Padrão:
public class JTelaPadrao extends javax.swing.JFrame {
/**
* Creates new form JTelaPadrao
*/
public JTelaPadrao() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
JdpTelaPadrao = new javax.swing.JDesktopPane();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jmijogoremoto = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JPopupMenu.Separator();
jMenuItem3 = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
jmisair = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenuItem5 = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JPopupMenu.Separator();
jMenuItem6 = new javax.swing.JMenuItem();
jSeparator4 = new javax.swing.JPopupMenu.Separator();
jMenuItem7 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Jogo da Forca - Cliente/Servidor");
setBackground(new java.awt.Color(204, 204, 255));
setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
setIconImages(null);
setName("JFTelaPadrao"); // NOI18N
getContentPane().setLayout(null);
javax.swing.GroupLayout JdpTelaPadraoLayout = new javax.swing.GroupLayout(JdpTelaPadrao);
JdpTelaPadrao.setLayout(JdpTelaPadraoLayout);
JdpTelaPadraoLayout.setHorizontalGroup(
JdpTelaPadraoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 700, Short.MAX_VALUE)
);
JdpTelaPadraoLayout.setVerticalGroup(
JdpTelaPadraoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 580, Short.MAX_VALUE)
);
getContentPane().add(JdpTelaPadrao);
JdpTelaPadrao.setBounds(0, 0, 700, 580);
jMenu1.setText("Jogo");
jmijogoremoto.setText("Jogo Remoto");
jmijogoremoto.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jmijogoremotoActionPerformed(evt);
}
});
jMenu1.add(jmijogoremoto);
jMenu1.add(jSeparator1);
jMenuItem3.setText("Sobre");
jMenu1.add(jMenuItem3);
jMenu1.add(jSeparator2);
jmisair.setText("Sair");
jmisair.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jmisairActionPerformed(evt);
}
});
jMenu1.add(jmisair);
jMenuBar1.add(jMenu1);
jMenu2.setText("Conexão");
jMenuItem5.setText("Servidor");
jMenu2.add(jMenuItem5);
jMenu2.add(jSeparator3);
jMenuItem6.setText("Cliente");
jMenu2.add(jMenuItem6);
jMenu2.add(jSeparator4);
jMenuItem7.setText("Sair");
jMenu2.add(jMenuItem7);
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
setSize(new java.awt.Dimension(716, 639));
setLocationRelativeTo(null);
}// </editor-fold>
private void jmisairActionPerformed(java.awt.event.ActionEvent evt) {
int i = JOptionPane.showConfirmDialog(null ,"Deseja sair?", "Saída",
JOptionPane.YES_NO_OPTION);
System.out.println("I" + i);
if (i == JOptionPane.YES_OPTION )
{
System.exit(0);
}else
{
System.out.println("NAO FECHA JANELA");
repaint();
}
}
private void jmijogoremotoActionPerformed(java.awt.event.ActionEvent evt) {
Jifjogo obj = new Jifjogo();
JdpTelaPadrao.add(obj);
obj.setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(JTelaPadrao.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(JTelaPadrao.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(JTelaPadrao.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(JTelaPadrao.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JTelaPadrao().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JDesktopPane JdpTelaPadrao;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JMenuItem jMenuItem7;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JPopupMenu.Separator jSeparator3;
private javax.swing.JPopupMenu.Separator jSeparator4;
private javax.swing.JMenuItem jmijogoremoto;
private javax.swing.JMenuItem jmisair;
// End of variables declaration
}
Jogo:
public class Jifjogo extends javax.swing.JInternalFrame {
String lista[]= {" " ,"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"};
int Tamanho_da_Palavra_Misteriosa=0, Letras_Encontradas, Numeros_de_Erros, Campos_Nao_Preenchidos;
int Exibir_Messagem=0;
private JLabel letra[] = new JLabel[12];
private JTextField Text_letra = new JTextField();
private String Palavra_Misteriosa, Palavra_Certa;
private enforcado Painel_de_Animacao = new enforcado();
/**
* Creates new form Jifjogo
*/
public Jifjogo() {
initComponents();
for(int i = 0;i<12;i++)
{
letra[i]= new JLabel("__");
Painel_de_Controle.add(letra[i]);
letra[i].setVisible(false);
letra[i].setFont(new Font("Tahoma",Font.BOLD,30));
}
Geral.add(Painel_de_Animacao);
Geral.add(Painel_de_Controle);
add(Geral);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jtbferramentas = new javax.swing.JToolBar();
jbnovojogo = new javax.swing.JButton();
jSeparator1 = new javax.swing.JToolBar.Separator();
jlescolhaletra = new javax.swing.JLabel();
opcao = new javax.swing.JComboBox();
jSeparator3 = new javax.swing.JToolBar.Separator();
Palavra = new javax.swing.JButton();
jSeparator4 = new javax.swing.JToolBar.Separator();
dicamisteriosa = new javax.swing.JButton();
jSeparator2 = new javax.swing.JToolBar.Separator();
jbsairjogo = new javax.swing.JButton();
jToolBar1 = new javax.swing.JToolBar();
Barra_de_Status = new javax.swing.JLabel();
Geral = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
Painel_de_Controle = new javax.swing.JPanel();
setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
setIconifiable(true);
setResizable(true);
setTitle("Jogo Remoto");
setPreferredSize(new java.awt.Dimension(700, 580));
getContentPane().setLayout(null);
jtbferramentas.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jtbferramentas.setRollover(true);
jtbferramentas.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jbnovojogo.setText("Novo Jogo");
jbnovojogo.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jbnovojogo.setFocusable(false);
jbnovojogo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jbnovojogo.setMaximumSize(new java.awt.Dimension(80, 20));
jbnovojogo.setMinimumSize(new java.awt.Dimension(65, 20));
jbnovojogo.setPreferredSize(new java.awt.Dimension(65, 20));
jbnovojogo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbnovojogoActionPerformed(evt);
}
});
jtbferramentas.add(jbnovojogo);
jSeparator1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jSeparator1.setMaximumSize(new java.awt.Dimension(15, 32767));
jtbferramentas.add(jSeparator1);
jlescolhaletra.setText("Opção de Letras");
jlescolhaletra.setMaximumSize(new java.awt.Dimension(120, 14));
jtbferramentas.add(jlescolhaletra);
opcao.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "A", "B", "C", "D", "F", "E", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }));
opcao.setSelectedIndex(-1);
opcao.setToolTipText("");
opcao.setBorder(javax.swing.BorderFactory.createEtchedBorder());
opcao.setMaximumSize(new java.awt.Dimension(50, 50));
opcao.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
opcaoItemStateChanged(evt);
}
});
opcao.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
opcaoActionPerformed(evt);
}
});
jtbferramentas.add(opcao);
jSeparator3.setMaximumSize(new java.awt.Dimension(15, 32767));
jtbferramentas.add(jSeparator3);
Palavra.setText("Palavra Encontrada");
Palavra.setBorder(javax.swing.BorderFactory.createEtchedBorder());
Palavra.setFocusable(false);
Palavra.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
Palavra.setMaximumSize(new java.awt.Dimension(120, 19));
Palavra.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
Palavra.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PalavraActionPerformed(evt);
}
});
jtbferramentas.add(Palavra);
jSeparator4.setMaximumSize(new java.awt.Dimension(15, 32767));
jtbferramentas.add(jSeparator4);
dicamisteriosa.setText("Dica da Palavra Misteriosa");
dicamisteriosa.setBorder(javax.swing.BorderFactory.createEtchedBorder());
dicamisteriosa.setFocusable(false);
dicamisteriosa.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
dicamisteriosa.setMaximumSize(new java.awt.Dimension(140, 21));
dicamisteriosa.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
dicamisteriosa.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dicamisteriosaActionPerformed(evt);
}
});
jtbferramentas.add(dicamisteriosa);
jSeparator2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jSeparator2.setMaximumSize(new java.awt.Dimension(30, 32767));
jtbferramentas.add(jSeparator2);
jbsairjogo.setText("Sair do Jogo");
jbsairjogo.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jbsairjogo.setFocusable(false);
jbsairjogo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jbsairjogo.setMaximumSize(new java.awt.Dimension(80, 19));
jbsairjogo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jbsairjogo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbsairjogoActionPerformed(evt);
}
});
jtbferramentas.add(jbsairjogo);
getContentPane().add(jtbferramentas);
jtbferramentas.setBounds(0, 0, 670, 26);
jToolBar1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jToolBar1.setRollover(true);
jToolBar1.add(Barra_de_Status);
getContentPane().add(jToolBar1);
jToolBar1.setBounds(0, 520, 700, 30);
Geral.setBorder(javax.swing.BorderFactory.createEtchedBorder());
Geral.setLayout(null);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
Geral.add(jLabel1);
jLabel1.setBounds(300, 240, 340, 20);
Painel_de_Controle.setFont(new java.awt.Font("Tahoma", 1, 48)); // NOI18N
Geral.add(Painel_de_Controle);
Painel_de_Controle.setBounds(220, 60, 370, 60);
getContentPane().add(Geral);
Geral.setBounds(0, 30, 700, 490);
setBounds(0, 0, 700, 580);
}// </editor-fold>
private void jbsairjogoActionPerformed(java.awt.event.ActionEvent evt) {
int i = JOptionPane.showConfirmDialog(null ,"Deseja encerrar o jogo?", "Saída",
JOptionPane.YES_NO_OPTION);
System.out.println("I" + i);
if (i == JOptionPane.YES_OPTION )
{
dispose();
}else
{
System.out.println("NAO FECHA JANELA");
repaint();
}
}
private void jbnovojogoActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource()== jbnovojogo)
{
Exibir_Messagem=0;
Numeros_de_Erros = 0;
Habilitando_Desabilitando_Componentes(false);
for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
letra[i].setVisible(false);
Palavra_Misteriosa = JOptionPane.showInputDialog(Jifjogo.this, "Qual nome deve ser advinhado?");
if(Palavra_Misteriosa != null){
if ((Palavra_Misteriosa.length() > 12) || (Palavra_Misteriosa.length() <= 0))
JOptionPane.showMessageDialog(
Jifjogo.this, "A palavra escolhida deverá ter no mímimo 1 e no máximo 12 caracteres!",
"Menssagem", JOptionPane.PLAIN_MESSAGE);
else{
Habilitando_Desabilitando_Componentes(true);
Tamanho_da_Palavra_Misteriosa = Palavra_Misteriosa.length();
for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i){
letra[i].setVisible(true);
letra[i].setText("__");
}
}
}
}
if (evt.getSource()==Palavra)
{
Palavra_Certa = JOptionPane.showInputDialog(Jifjogo.this, "Qual é a palavra?");
if (Palavra_Certa != null){
Exibir_Messagem=1;
// Caso a palavra digitada estiver correta...
if ((Palavra_Misteriosa.toUpperCase()).equals(Palavra_Certa.toUpperCase())){
// ... será atualizado o campo de exibição (palavra certa irá ser mostrada na tela)
for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
letra[i].setText("" + Palavra_Misteriosa.toUpperCase().charAt(i));
Vencer();
} else Perder();
Habilitando_Desabilitando_Componentes(false);
}
}
}
private void opcaoActionPerformed(java.awt.event.ActionEvent evt) {
}
private void opcaoItemStateChanged(java.awt.event.ItemEvent evt) {
if(evt.getStateChange()==ItemEvent.SELECTED)
{
Text_letra.setText(""+ opcao.getSelectedItem());
Letras_Encontradas = 0;
for(int i = 0;i<Tamanho_da_Palavra_Misteriosa;++i)
{
if (Text_letra.getText().charAt(0) == Palavra_Misteriosa.toUpperCase().charAt(i))
{
letra[i].setText("" + Text_letra.getText().charAt(0));
Letras_Encontradas++;
}
}
Campos_Nao_Preenchidos = 0;
for(int i=0;i<Tamanho_da_Palavra_Misteriosa;++i)
if (letra[i].getText() != "__") Campos_Nao_Preenchidos++;
if ((Campos_Nao_Preenchidos == Tamanho_da_Palavra_Misteriosa) && (Exibir_Messagem==0))
{
Habilitando_Desabilitando_Componentes(false);
Exibir_Messagem = 1;
Vencer();
}else{
/* Caso a letra selecionada pelo Jogador não faça parte da
palavra misteriosa será contabilizado erro*/
if ((Letras_Encontradas == 0) && (Exibir_Messagem==0)){
Numeros_de_Erros++; // Incrementando variável
// Desenhando animação
Painel_de_Animacao.setErro(Numeros_de_Erros);
// Atualizando o número de erros
Barra_de_Status.setText(" Numero de Letra(s) errada(s): " + Numeros_de_Erros);
if (Numeros_de_Erros == 7)
{
Habilitando_Desabilitando_Componentes(false);
Perder();
}
}
}
}
}
private void dicamisteriosaActionPerformed(java.awt.event.ActionEvent evt) {
String dica = null;
dica = JOptionPane.showInputDialog("Qual a dica da Palavra Misteriosa?");
//JOptionPane.showMessageDialog(null, "A dica é: " + dica);
jLabel1.setText(dica);
}
private void PalavraActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == Palavra){
Palavra_Certa = JOptionPane.showInputDialog(Jifjogo.this, "Qual é a palavra?");
if (Palavra_Certa != null){
Exibir_Messagem=1;
// Caso a palavra digitada estiver correta...
if ((Palavra_Misteriosa.toUpperCase()).equals(Palavra_Certa.toUpperCase())){
// ... será atualizado o campo de exibição (palavra certa irá ser mostrada na tela)
for (int i=0; i<Tamanho_da_Palavra_Misteriosa; ++i)
letra[i].setText("" + Palavra_Misteriosa.toUpperCase().charAt(i));
Vencer();
} else Perder();
Habilitando_Desabilitando_Componentes(false);
}
}
}
public void Habilitando_Desabilitando_Componentes(boolean parametro)
{
opcao.setEnabled(parametro);
Text_letra.setEnabled(parametro);
Palavra.setEnabled(parametro);
}
public void Vencer()
{
JOptionPane.showMessageDialog(Jifjogo.this, "Parabéns!!!");
Atualizar();
}
public void Perder()
{
JOptionPane.showMessageDialog(Jifjogo.this, "Você perdeu! \n Tente Novamente!");
Atualizar();
}
public void Atualizar()
{
Painel_de_Animacao.setErro(7);
Text_letra.setText("");
opcao.setSelectedIndex(0);
Barra_de_Status.setText(" Numero de Letra(s) errada(s): 0");
}
// Variables declaration - do not modify
private javax.swing.JLabel Barra_de_Status;
private javax.swing.JPanel Geral;
private javax.swing.JPanel Painel_de_Controle;
private javax.swing.JButton Palavra;
private javax.swing.JButton dicamisteriosa;
private javax.swing.JLabel jLabel1;
private javax.swing.JToolBar.Separator jSeparator1;
private javax.swing.JToolBar.Separator jSeparator2;
private javax.swing.JToolBar.Separator jSeparator3;
private javax.swing.JToolBar.Separator jSeparator4;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JButton jbnovojogo;
private javax.swing.JButton jbsairjogo;
private javax.swing.JLabel jlescolhaletra;
private javax.swing.JToolBar jtbferramentas;
private javax.swing.JComboBox opcao;
// End of variables declaration
}
Class enforcado (animação):
public class enforcado extends JPanel{
private int Erros;
void setErro(int Numeros_de_Erros)
{
Erros = Numeros_de_Erros;
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
setBackground(Color.white);
g.fillRect(20, 20, 110, 10);
g.fillRect(20, 20, 10, 185);
g.fillRect(122, 30, 8, 22);
g.fillRect(10, 195, 30, 10);
if (Erros > 1){
g.fillRect(113, 52, 25, 2);
g.fillRect(122, 80, 8, 7);
g.setColor(Color.white);
g.fillRect(118, 58, 4, 5);
g.fillRect(129, 58, 4, 5);
g.fillRect(121, 70, 9, 4);
g.setColor(Color.black);
}
if (Erros > 2){
g.fillRect(106, 87, 39, 50);
}
if (Erros > 3){
g.fillRect(102, 87, 6, 6);
g.fillRect(98, 93, 12, 6);
g.fillRect(92, 99, 12, 6);
g.fillRect(87, 105, 11, 10);
g.fillRect(92, 115, 12, 6);
g.fillRect(98, 121, 12, 6);
}
if (Erros > 4){
g.fillRect(141, 87, 6, 6);
g.fillRect(142, 93, 12, 6);
g.fillRect(147, 99, 12, 6);
g.fillRect(152, 105, 11, 10);
g.fillRect(147, 115, 12, 6);
g.fillRect(142, 121, 12, 6);
}
if (Erros > 5){
g.fillRect(106, 137, 14, 13);
g.fillRect(106, 150, 10, 10);
g.fillRect(106, 160, 7, 10);
g.fillRect(100, 170, 13, 5);
}
if (Erros > 6){
g.fillRect(131, 137, 14, 13);
g.fillRect(135, 150, 10, 13);
g.fillRect(138, 160, 7, 10);
g.fillRect(138, 170, 13, 5);
}
// Limpa o Panel
if (Erros == 7){
g.clearRect(0,0,250,250);
repaint();
}
}
}
O que está errado aqui?
Carlos Leonel
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)