0

Estoy intentando colocar fichas dentro de un tablero pero cuando coloco los parámetros donde deseo colocar la ficha se cae, Es código de POO

Estoy tratando de realizar el Juego de Go y esta seria la parte logica del tablero

Estas son las 3 clases que estoy trabajando por el momento

import javax.swing.ImageIcon;
import java.awt.Graphics;

public abstract class Ficha{
  private boolean color;
  private ImageIcon imagen;
  private int fila;
  private int columna;
  private int y;
  private int x;
  
  public Ficha(boolean color, ImageIcon imagen, int fila, int columna, int y, int x){
    setColor(color);
    setImagen(imagen);
    setFila(fila);
    setColumna(columna);
    setY(y);
    setX(x);
  }//Fin constructor con párametros
  
  public void setColor(boolean color){
    this.color=color;
  }//Fin setColor
  
  public boolean getColor(){
    return color;
  }//Fin getColor
  
  public void setImagen(ImageIcon imagen){
    this.imagen=imagen;
  }//Fin setImagen
  
  public ImageIcon getImagen(){
    return imagen;
  }//Fin getImagen
  
  public void setFila(int fila){
    this.fila=fila;
  }//Fin setFila
  
  public int getFila(){
    return fila;
  }//Fin getFila
  
  public void setColumna(int columna){
    this.columna=columna;
  }//Fin setColumna
  
  public int getColumna(){
    return columna;
  }//Fin getColumna
  
  public void setX(int x){
    this.x=x;
  }//Fin setX
  
  public int getX(){
    return x;
  }//Fin getX
  
  public void setY(int y){
    this.y=y;
  }//Fin setY
  
  public int getY(){
    return y;
  }//Fin getY
  
  public void dibujar(Graphics g){
    imagen.paintIcon(null,g,getX(),getY());
  }//Fin dibujar
  
  public abstract boolean colocar(int filaDestino, int columnaDestino, Tablero tablero);
  
}//Fin clase Pieza

import javax.swing.JOptionPane;

public class Juego{
  
  public static void main(String args[]){
    Tablero tablero= new Tablero();
    Ficha fichaColocar;
    //int fila;
    //int columna;
    int filaDestino;
    int columnaDestino;
    String continuar;
    
    do{
      //fila=Integer.parseInt(JOptionPane.showInputDialog(tablero.toString()+"\nDigite la fila de pieza que desea mover"));
      //columna=Integer.parseInt(JOptionPane.showInputDialog(tablero.toString()+"\nDigite la columna de pieza que desea mover"));
      filaDestino=Integer.parseInt(JOptionPane.showInputDialog(tablero.toString()+"\nDigite la fila donde desea poner la ficha"));
      columnaDestino=Integer.parseInt(JOptionPane.showInputDialog(tablero.toString()+"\nDigite la columna donde desea poner la ficha"));
      fichaColocar=tablero.getFicha(filaDestino,columnaDestino);
      
      if(fichaColocar.colocar(filaDestino, columnaDestino, tablero)){
        JOptionPane.showMessageDialog(null, tablero.toString());
      }//Fin if
      else{
        JOptionPane.showMessageDialog(null,"La colocacion no es valido");
      }//Fin else
      continuar=JOptionPane.showInputDialog("Desea poner otra ficha");
    }while(continuar.equalsIgnoreCase("s"));
    
  }//Fin main
  
}//Fin clase Tablero

import javax.swing.ImageIcon;

public class Tablero{
  private Ficha fichas[][];
 private int coordenadasY[]={ 140,195,250,305,360,415,470,525,580};//Fila
  private int coordenadasX[]={249,290,333,374,415,458,498,539,582};//Comlunas
  
  public Tablero(){
    fichas=new Ficha[8][8];
  }//Fin constructor sin párametros
  
  public void setFicha(int fila, int columna, Ficha ficha){
    fichas[fila][columna]=ficha;
  }//Fin setFicha
  
  public Ficha getFicha(int fila, int columna){
    return fichas[fila][columna];
  }//Fin getTablero

  public boolean isPosicionValida(int fila, int columna){
    if(fichas[fila][columna]!=null){
      return true;
    }//Fin if
    else{
      return false;
    }//Fin else
  }//Fin isPosicionVacia
  
  public boolean isPosicionVacia(int fila, int columna){
    if(fichas[fila][columna]==null){
      return true;
    }//Fin if
    else{
      return false;
    }//Fin else
  }//Fin isPosicionVacia
  
  public int lengthFila(){
    return fichas.length;
  }//Fin lengthFila
  
  public int lengthColumna(int fila){
    return fichas[fila].length;
  }//Fin lengthColumna
  
  public String toString(){
    String elementos="";
    for(int fila=0;fila<lengthFila();fila++){
      for(int columna=0;columna<lengthColumna(fila);columna++){
        elementos+=fichas[fila][columna]+"\t";
      }//Fin for
      elementos+="\n";
    }//Fin for
    return elementos;
  }//Fin toString
  
}//Fin clase Tablero
BetaM
  • 30,571
  • 7
  • 32
  • 50
  • Tu programa se cae (¿cómo?), pero no has preguntado nada. – Candid Moe Oct 23 '21 at 05:56
  • Cuando pongo las cordenadas donde quiero poner la ficha me aparece esto: java.lang.NullPointerException at Juego.main(Juego.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272) – Derek Calderón M Oct 23 '21 at 17:26
  • Revisa esta respuesta: https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados – Candid Moe Oct 23 '21 at 17:31

0 Answers0