Mais um jogo da velha (o meu)

gotaria de ver oque voces achan disso aqui, tenten ganhar no modo contra a maquina eu mão consegui se algen consegui me avise para eu tentar nelhorar.

desenvolvi no NetBeans sem usar o editor visual

quando estiver 100% disponibiliso os fontes [color=#00aa00]//bem comentados em portuges[/color]

Ae mano…
Seu jogo fico otimo…otimo mesmo…

Eu ganhei…segue imagem em anexo…falow dom!
PARABENS pelo jogo…curti demais…


Tb ganhei

Bom jogo, ficou da hora msm!!!



Parabéns! Seu jogo ficou ótimo. Muito bom mesmo.

pena que só deu para jogar uma vez, pq se me pegam aqui no trabalho já era :smiley:

Só uma dica boba, quando der empate trocar a palavra GANHO por GANHOU. do resto está uma maravilha.

Legal o joguinho, só uma sugestão:

Deixe uma opção fixa na tela se o jogo é de 1 ou 2 jogadores. É chato toda vez que vc for jogar um novo jogo, ter que informar que é contra o computador. Assim se eu for jogar 10 vezes eu informo só 1 vez que o jogo é contra o computador. DO jeito que está hoje eu preciso fazer isso 10 vezes.

Jogo da Velha Pro V0.9 Update 1

  • Boa ideia a que boaglio sugeriu então eu impremetei.

  • Tamben foi feita a coreção gramatical sugerida por klebergf (meu portuges é um lixo tenho que menhorar).

  • Ainda é posivel ganha faciu quando o jogador1 coneça jogando e joga em um dos quatro cantos e a maquina tamben não é invencivel quando ela coneça jogando.

Legal! parabens.

Lembrei que fiz um joguinho assim uma vez: http://javadavelha.dev.java.net

abraços

Jogo da Velha Pro V0.9 Update 2

  • Agora é impossível(impossível mesmo) vencer quando a maquina começa jogando.
    *Foi alterada a forma de mudar o LookAndFeel do Aplicativo, agora o padrão é o usado pelo Sistema Operacional (mão importa qual seja, antes funcionava apenas no Ruindows).
  • Foi corrigido um pequeno bug da versão 0.9_1(Existia uma possibilidade muito remota mas possível da maquina joga onde o jogador1 já tivesse jogado);

Obs: provavelmente será lançada a versão 1.0 final quando eu conseguir implementar sons nos botões se alguém conhecer um bom tutorial fora os da Sun para fazer isso eu ficaria muito grato.

Achei um bug:

Se o computador começa o jogo e vou jogando até ficar assim:

X O O
B X B
O X O

Agora é minha vez, eu jogo e fica assim:

X O O
B X X
O X O

Agora o computador deveria colocar no lugar que falta e acabar com
o jogo, mas ele não faz nada.

Aí eu clico em cima do espaço que falta e fica assim:

X O O
X X X
O X O

E ele ainda fala " O Jogador 1 ganhou", quando na realidade foi empate.

O correto seria assim:

X O O
O X X
O X O

Isso nunca seria empate!

O espaço em branco foi ignorado pelo HTML, eu corrigi no post e coloquei B no lugar.

realmente pasou batido esse detale , chego em casa as 23:30 ,vou postar uma coreção

Jogo da Velha Pro V0.9 Update 2a

apenas foi feito a coreção do probrema citado acima

e é possivel empatar quando a maquiana começa jogando

Meu único jogo da velha que fiz foi em VB, e era multiplayer por socket :oops:

Olá fiz um jogo da velha ebm legal ! ta ai !qualquer duvida é só postar!
import java.awt.;
import java.awt.event.
;

import javax.swing.*;

/**
*/
//public class JogoDaVelha extends JFrame implements ActionListener
{
public JButton [][] botoes = {{null,null,null},{null,null,null},{null,null,null}};
public String jdv = “X”;
public JPanel p;
public int control = 0, control_1 = 0;
public int numLinhas = botoes[0].length;
public int numColunas = numLinhas;
public boolean acabou = false;
public ActionEvent myEvent;
public boolean empate = false;
public JLabel od;
public Container container;

public JMenu jogo, ajuda;
public JMenuItem novo, sair, sobre;
public JMenuBar menu;

public int contLV = 0, contCV = 0, indice = 0;
//public String vencedor = “”;

public JogoDaVelha()
{
container = this.getContentPane();

  setTitle("Jogo Da Velha OBBPULS ++");   
     
  p = new JPanel();   
  p.setLayout(new GridLayout(3,3));   
     
  od = new JLabel(new ImageIcon("OutDoor.jpeg"));      
  container.add(od, BorderLayout.CENTER);

     
  //Configura a GUI. Os menus, e os botões através de um laço, o que economiza linhas de código rsrs.. Paulo Junior  
     
  Toolkit tk = Toolkit.getDefaultToolkit();   
  setIconImage(tk.getImage("iconJDV.jpeg"));

// TROCA A IMAGEM DO JAVA NA BARRA DE TITULO
	Image icon = Toolkit.getDefaultToolkit().getImage("asterisco.gif");
		this.setIconImage(icon);   
     
  menu = new JMenuBar();   
     
  jogo = new JMenu("Jogo");   
     novo = new JMenuItem("Novo Jogo...");   
     novo.addActionListener(this);   
  jogo.add(novo);   
  jogo.addSeparator();   
     sair = new JMenuItem("Sair");   
     sair.addActionListener(this);   
  jogo.add(sair);   
     
  ajuda = new JMenu("Sobre");   
     sobre = new JMenuItem("Sobre o Jogo da Velha OBBPLUS++");   
     sobre.addActionListener(this);   
  ajuda.add(sobre);   
     
     
  menu.add(jogo);   
 // menu.add(ajuda);   
     
  setJMenuBar(menu);   
  
  for(int j = 0; j < numLinhas; j++)   
  {   
     for(int i = 0; i < botoes[j].length; i++)   
     {   
        botoes[j][i] = new JButton("");   
        botoes[j][i].setBackground(Color.white);   
        botoes[j][i].setFont(new Font("Times new Romam",Font.PLAIN, 120));   
        botoes[j][i].setToolTipText("Casa número: " + String.valueOf(i + 1)    
        + " da linha " + String.valueOf(j + 1));   
        botoes[j][i].addActionListener(this);   
        p.add(botoes[j][i]);   
     }   
  }   
     
  setBounds(250,100,560,400);   
  setVisible(true);   
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  setResizable(false);   

}

public void actionPerformed(ActionEvent e)
{
this.myEvent = e;

  if(e.getSource() == novo)   
  {   
     remove(od);   
     setBounds(200,50,650,550);   
     container.add(p,BorderLayout.CENTER);   
     acabou = false;   
     limpar();   
     setVisible(true);   
  }   
  else if(e.getSource() == sair)   
  {   
     System.exit(0);   
  }   
  else if(e.getSource() == sobre)   
  {      
     JOptionPane.showMessageDialog(null,"JOGO DA VELHA");
  }   
  else    
  {      
     configJDV();   
   }   

}
public void configJDV()
{
int cont = 0;

if(!acabou)
{
for(int i = 0; i < botoes.length; i++)
{

     for(int j = 0; j < botoes[i].length; j++)   
     {   
        if(myEvent.getSource() == botoes[i][j])   
        {      
           if(!botoes[i][j].getText().equals(""))   
           {   
              JOptionPane.showMessageDialog(this,"Jogue em outra posição...",   
              "[.:JOGUE EM OUTRO LUGAR!!!:.]",JOptionPane.ERROR_MESSAGE);   
           }   
           else  
           {   
              if(this.jdv == "X")   
              {   
                 this.jdv = "0";   
                 botoes[i][j].setForeground(Color.blue);   
              }   
                 
              else    
              {   
                 this.jdv = "X";   
                 botoes[i][j].setForeground(Color.red);   
              }   
                 
              botoes[i][j].setText(this.jdv);   
              vencedor = this.jdv;   
           }   
        }   
     }   
  }   
        
  /*********************************************************  
   *           VERIFICA LINHAS  
   *********************************************************/  
      
  if(   
     //Verfifica primeira linha   
     botoes[0][0].getText().equals(botoes[0][1].getText()) &&    
     botoes[0][1].getText().equals(botoes[0][2].getText()) &&    
     !botoes[0][0].getText().equals(""))   
     {   
        pintarLinha(0,vencedor);   
     }   
        
  else if(//Verfifica segunda linha   
     botoes[1][0].getText().equals(botoes[1][1].getText()) &&    
     botoes[1][1].getText().equals(botoes[1][2].getText()) &&    
     !botoes[1][0].getText().equals(""))   
     {   
        pintarLinha(1,vencedor);   
     }   
        
  else if(//Verfifica Terceira linha   
     botoes[2][0].getText().equals(botoes[2][1].getText()) &&    
     botoes[2][1].getText().equals(botoes[2][2].getText()) &&    
     !botoes[2][0].getText().equals(""))   
     {   
        pintarLinha(2,vencedor);   
     }   
        
  /*********************************************************  
   *           VERIFICA LINHAS  
   *********************************************************/  
      
  else if(   
     //Verfifica primeira coluna   
     botoes[0][0].getText().equals(botoes[1][0].getText()) &&    
     botoes[1][0].getText().equals(botoes[2][0].getText()) &&    
     !botoes[0][0].getText().equals(""))   
     {   
        pintarColuna(0,vencedor);   
     }   
        
   else if(//Verfifica segunda coluna   
     botoes[0][1].getText().equals(botoes[1][1].getText()) &&    
     botoes[1][1].getText().equals(botoes[2][1].getText()) &&    
     !botoes[0][1].getText().equals(""))   
     {   
        pintarColuna(1,vencedor);   
     }   
        
  else if(//Verfifica Terceira coluna   
     botoes[0][2].getText().equals(botoes[1][2].getText()) &&    
     botoes[1][2].getText().equals(botoes[2][2].getText()) &&    
     !botoes[0][2].getText().equals(""))   
     {   
        pintarColuna(2,vencedor);   
     
     }   
  else if(//Verfica as diagonais   
     botoes[0][0].getText().equals(botoes[1][1].getText()) &&    
     botoes[1][1].getText().equals(botoes[2][2].getText()) &&    
     !botoes[0][0].getText().equals(""))   
     {   
        pintarDiagonalPrinc();   
     }   
  else if(//Verfica as diagonais   
     botoes[2][0].getText().equals(botoes[0][2].getText()) &&    
     botoes[0][2].getText().equals(botoes[1][1].getText()) &&    
     !botoes[2][0].getText().equals(""))   
     {   
        pintarDiagonalSec();   
     
     }   
  else  
  {      
     //Verifica se o jogo terminou empatado   
     for(int i = 0; i < botoes.length; i++)   
     {   
        for(int j = 0; j < botoes.length; j++)   
        {   
           if(!botoes[i][j].getText().equals(""))   
           {   
              cont++;               
           }   
        }   
           if(cont == 9)   
           {   
              empatar();   
           }   
     }   
  }   

}
else
{
JOptionPane.showMessageDialog(this,"[.:Reinicie o Jogo…:.]",“JOGO FINALIZADO!”,
JOptionPane.ERROR_MESSAGE);
}
}
public void empatar()
{
//Acaba o jogo!
this.acabou = true;

  //Pinta de forma especial, para indicar o caso de empate!   
  for(int i = 0; i < botoes.length; i++)   
  {   
     for(int j = 0; j < botoes[i].length; j++)   
     {   
           botoes[i][j].setBackground(Color.black);   
           botoes[i][j].setForeground(Color.gray);   
     }   
  }   
     
  //Exibe mensagem de empate!   
  JOptionPane.showMessageDialog(this,"[.:Jogo Acabou empatado!:.]",   
  "EMPATE",JOptionPane.WARNING_MESSAGE);   

}

public void pintarLinha(int indice, String vencedor)
{
//Acaba o jogo!
this.acabou = true;

  //Pinta a linha do vencedor!   
  for(int i = 0; i < botoes[indice].length; i++)   
  {   
     botoes[indice][i].setBackground(Color.blue);   
     botoes[indice][i].setForeground(Color.white);   
  }   
     
  //Dá os parabéns ao vencedor!   
  parabéns();   

}
public void pintarColuna(int indice, String vencedor)
{
//Acaba o jogo!
this.acabou = true;

  //Pinta a linha do vencedor!   
  for(int i = 0; i < botoes[indice].length; i++)   
  {   
     botoes[i][indice].setBackground(Color.blue);   
     botoes[i][indice].setForeground(Color.white);   
  }   
     
  //Dá os parabéns ao vencedor!   
  parabéns();   

}

public void pintarDiagonalPrinc()
{
//Acaba o jogo!
this.acabou = true;

  for(int i = 0; i < botoes.length; i++)   
  {   
     for(int j = 0; j < botoes[1].length; j++)   
     {   
        if(j == i && j == 1)   
        {   
           botoes[i-1][j-1].setBackground(Color.blue);   
           botoes[i][j].setBackground(Color.blue);   
           botoes[i+1][j+1].setBackground(Color.blue);   
           botoes[i-1][j-1].setForeground(Color.white);   
           botoes[i][j].setForeground(Color.white);   
           botoes[i+1][j+1].setForeground(Color.white);   
        }   
     }   
  }   
     
  //Dá os parabéns ao vencedor!   
  parabéns();      

}

public void pintarDiagonalSec()
{
//Acaba o jogo!
this.acabou = true;

  //Pinta a diagonal principal   
  for(int i = 0; i < botoes.length; i++)   
  {   
     for(int j = 0; j < botoes[i].length; j++)   
     {   
        if(j == i && j == 1)   
        {   
              botoes[0][i*2].setBackground(Color.blue);   
              botoes[i*2][0].setBackground(Color.blue);   
              botoes[i][j].setBackground(Color.blue);   
              botoes[0][i*2].setForeground(Color.white);   
              botoes[i*2][0].setForeground(Color.white);   
              botoes[i][j].setForeground(Color.white);   
        }   
     }   
  }   
     
  //Dá os parabéns ao vencedor!   
  parabéns();   

}
public boolean estáAcabado()
{
if(acabou)

     return acabou;   
  else  
     
     acabou = false;   
           
     return acabou;   

}

public void parabéns()
{
JOptionPane.showMessageDialog(this,vencedor + " Ganhou!",“PARABÉNS!!!”,
JOptionPane.WARNING_MESSAGE);
}

public void limpar()
{
for(int i = 0; i < botoes.length; i++)
{
for(int j = 0; j < botoes[i].length; j++)
{
botoes[i][j].setText("");
botoes[i][j].setBackground(Color.white);
}
}
}
public void setJDV()
{
if(this.control%2 == 0)
{
this.jdv = “X”;
}

  else  
     
  this.jdv = "0";   

}

/Desenvolvimento Paulo Roberto Luiz Junior!/

public static void main(String args[])
{
//new JogoDaVelha();
}
}

Oi,
não consegui rodar o jar aqui no trabalho =/

Exception in thread "main" java.lang.UnsupportedClassVersionError: JogoDaVelhaFrame (Unsupported maj or.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)

[quote=lina]Oi,
não consegui rodar o jar aqui no trabalho =/

Exception in thread "main" java.lang.UnsupportedClassVersionError: JogoDaVelhaFrame (Unsupported maj or.minor version 49.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)[/quote]

lina,

c tem o jre 5 ou 6 instalado?

esse erro é tipico de qdo uma vm 1.3x ou 1.4x tenta rodar bytecodes da 5.0

uhum…
to ligada, aqui no trabalho trabalhamos com 1.4

só em casa agora =)

Obrigada!

Tchauzin!

Bom jogo parabéns…