Olá Estou desenvolvendo um jogo da velha porem aparece uma Exception por favor me ajudem E não verifica o ganhador de forma correta.
muito obrigada pela ajuda.
package jogo;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public final class DaVelha extends JFrame{
String [] vetor= new String [9];
int numero= 0 ;
JButton bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9;
JPanel painel;
// Adicionar uma imagem no JButton
ImageIcon imagemO = new ImageIcon("C:/Users/Luanda/workspace/DaVelha/pictures/circle.png");
ImageIcon imagemX = new ImageIcon("C:/Users/Luanda/workspace/DaVelha/pictures/xis.png");
public DaVelha() {
super("Jogo da Velha");
}
/**
* @param args
*/
public static void main(String[] args) {
DaVelha game= new DaVelha();
game.jogo();
}
public void preencheVet(String letra,int num ) {
vetor[num]=new String();
vetor[num]=letra;
System.out.println(vetor[num]);
verificaGanhador();
}
public void verificaGanhador(){
String ganhadorX= "O vencedor é o X";
String ganhadorO= "O vencedor é o O";
// horizontal
if((vetor[0].equals("X"))&& (vetor[1].equals("X")) &&(vetor[2].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[0].equals("O"))&& (vetor[1].equals("O")) &&(vetor[2].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}
else if((vetor[3].equals("X"))&& (vetor[4].equals("X")) &&(vetor[5].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[3].equals("O"))&& (vetor[4].equals("O")) &&(vetor[5].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}else if((vetor[6].equals("X"))&& (vetor[7].equals("X")) &&(vetor[8].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[6].equals("O"))&& (vetor[7].equals("O")) &&(vetor[8].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
// verticais
}else if((vetor[0].equals("X"))&& (vetor[3].equals("X")) &&(vetor[6].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[0].equals("O"))&& (vetor[3].equals("O")) &&(vetor[6].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}else if((vetor[1].equals("X"))&& (vetor[4].equals("X")) &&(vetor[7].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[1].equals("O"))&& (vetor[4].equals("O")) &&(vetor[7].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}else if((vetor[2].equals("X"))&& (vetor[5].equals("X")) &&(vetor[8].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[2].equals("O"))&& (vetor[5].equals("O")) &&(vetor[8].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
// diagonais
}else if((vetor[0].equals("X"))&& (vetor[4].equals("X")) &&(vetor[8].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[0].equals("O"))&& (vetor[4].equals("O")) &&(vetor[8].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}else if((vetor[2].equals("X"))&& (vetor[4].equals("X")) &&(vetor[6].equals("X"))){
JOptionPane.showMessageDialog(null, ganhadorX);
}else if((vetor[2].equals("O"))&& (vetor[4].equals("O")) &&(vetor[6].equals("O"))){
JOptionPane.showMessageDialog(null, ganhadorO);
}else {
JOptionPane.showMessageDialog(null, "Deu velha");
}
}
public void jogo() {
GridLayout quadro = new GridLayout(3, 3);
painel= new JPanel();
setContentPane(painel);
painel.setLayout(quadro);
int qnum=quadro.getColumns();
System.out.println(qnum);
// conjunto de botões instanciados e ações atribuidas
bt1= new JButton();
bt1.addActionListener(new acaoBT1());
bt2= new JButton();
bt2.addActionListener(new acaoBT2());
bt3= new JButton();
bt3.addActionListener(new acaoBT3());
bt4= new JButton();
bt4.addActionListener(new acaoBT4());
bt5= new JButton();
bt5.addActionListener(new acaoBT5());
bt6= new JButton();
bt6.addActionListener(new acaoBT6());
bt7= new JButton();
bt7.addActionListener(new acaoBT7());
bt8= new JButton();
bt8.addActionListener(new acaoBT8());
bt9= new JButton();
bt9.addActionListener(new acaoBT9());
// adicionar os botões ao painel
painel.add(bt1);
painel.add(bt2);
painel.add(bt3);
painel.add(bt4);
painel.add(bt5);
painel.add(bt6);
painel.add(bt7);
painel.add(bt8);
painel.add(bt9);
setVisible(true);
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public int vez(){
int resto = numero %2;
System.out.println(numero+" "+resto);
numero++;
System.out.println(numero+" "+resto);
System.out.println(" ------------------- ");
return resto;
}
public class acaoBT1 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt1.setEnabled(false);
bt1.setIcon(imagemX);
preencheVet("X",0);
}else if (num == 1){
bt1.setEnabled(false);
bt1.setIcon(imagemO);
preencheVet("O",0);
}
}
}
public class acaoBT2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt2.setEnabled(false);
bt2.setIcon(imagemX);
preencheVet("X",1);
}else if (num == 1){
bt2.setEnabled(false);
bt2.setIcon(imagemO);
preencheVet("O",1);
}
}
}
public class acaoBT3 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt3.setEnabled(false);
bt3.setIcon(imagemX);
preencheVet("X",2);
}else if (num == 1){
bt3.setEnabled(false);
bt3.setIcon(imagemO);
preencheVet("O",2);
}
}
}
public class acaoBT4 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt4.setEnabled(false);
bt4.setIcon(imagemX);
preencheVet("X",3);
}else if (num == 1){
bt4.setEnabled(false);
bt4.setIcon(imagemO);
preencheVet("O",3);
}
}
}
public class acaoBT5 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt5.setEnabled(false);
bt5.setIcon(imagemX);
preencheVet("X",4);
}else if (num == 1){
bt5.setEnabled(false);
bt5.setIcon(imagemO);
preencheVet("O",4);
}
}
}
public class acaoBT6 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt6.setEnabled(false);
bt6.setIcon(imagemX);
preencheVet("X",5);
}else if (num == 1){
bt6.setEnabled(false);
bt6.setIcon(imagemO);
preencheVet("O",5);
}
}
}
public class acaoBT7 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt7.setEnabled(false);
bt7.setIcon(imagemX);
preencheVet("X",6);
}else if (num == 1){
bt7.setEnabled(false);
bt7.setIcon(imagemO);
preencheVet("O",6);
}
}
}
public class acaoBT8 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt8.setEnabled(false);
bt8.setIcon(imagemX);
preencheVet("X",7);
}else if (num == 1){
bt8.setEnabled(false);
bt8.setIcon(imagemO);
preencheVet("O",7);
}
}
}
public class acaoBT9 implements ActionListener{
@Override
public void actionPerformed(ActionEvent ev) {
int num=vez();
if (num == 0){
bt9.setEnabled(false);
bt9.setIcon(imagemX);
preencheVet("X",8);
}else{
bt9.setEnabled(false);
bt9.setIcon(imagemO);
preencheVet("O",8);
}
}
}
}
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at jogo.DaVelha.verificaGanhador(DaVelha.java:60)
at jogo.DaVelha.preencheVet(DaVelha.java:51)
at jogo.DaVelha$acaoBT6.actionPerformed(DaVelha.java:287)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)