Hola, aca les dejo todas las clases:
Clase AppCliente:
import java.util.ArrayList;
import java.rmi.RemoteException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Controlador.ControladorJuego;
import Vista.ControlVista;
import Vista.VistaConsola;
import Vista.VistaGrafica;
import ar.edu.unlu.rmimvc.RMIMVCException;
import ar.edu.unlu.rmimvc.cliente.Cliente;
import ar.edu.unlu.rmimvc.Util;
import Modelo.IJuego;
import Modelo.Juego;
//import cliente.Cliente;
public class AppCliente {
public IJuego miJuego;
ArrayList
<String
> ips
= Util.
getIpDisponibles();; null,
"Seleccione la IP en la que escuchará peticiones el cliente", "IP del cliente",
null,
ips.toArray(),
null
);
null,
"Seleccione el puerto en el que escuchará peticiones el cliente", "Puerto del cliente",
null,
null,
9999
);
null,
"Seleccione la IP en la corre el servidor", "IP del servidor",
null,
null,
null
);
null,
"Seleccione el puerto en el que corre el servidor", "Puerto del servidor",
null,
null,
8888
);
ControlVista vista = new VistaGrafica();
ControladorJuego controlador = new ControladorJuego(vista);
Cliente c
= new Cliente
(ip,
Integer.
parseInt(port
), ipServidor,
Integer.
parseInt(portServidor
)); vista.setControlador(controlador);
[color=red][b]vista.iniciar();[/b][/color]
try {
c.iniciar(controlador);
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase AppServidor:
import java.rmi.RemoteException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Modelo.IJuego;
import Modelo.Juego;
import ar.edu.unlu.rmimvc.RMIMVCException;
import ar.edu.unlu.rmimvc.Util;
import ar.edu.unlu.rmimvc.servidor.Servidor;
public class AppServidor {
ArrayList
<String
> ips
= Util.
getIpDisponibles(); null,
"Seleccione la IP en la que escuchará peticiones el servidor", "IP del servidor",
null,
ips.toArray(),
null
);
null,
"Seleccione el puerto en el que escuchará peticiones el servidor", "Puerto del servidor",
null,
null,
8888
);
Juego modelo = new Juego();
System.
out.
println("Juego creado"); Servidor servidor
= new Servidor
(ip,
Integer.
parseInt(port
)); try {
servidor.iniciar(modelo);
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase jugador:import java.io.Serializable;
import java.util.ArrayList;
import Cartas.Cartas;
import Cartas.Mazo;
import Cartas.Palos;
import ar.edu.unlu.rmimvc.observer.ObservableRemoto;
public int puntos=0;
public Jugador
(String nombre
){ this.nombre=nombre;
this.puntos=0;
}
Clase Juegopublic class Juego extends ObservableRemoto implements IJuego{
public ArrayList<Jugador> jugadores = new ArrayList<>();
public Juego() {
jugadorActual = 0;
ronda = 1;
}
estado=INICIANDO_JUEGO;
jugadorActual=0;
ronda=1;
notificarObservadores(1);
}
jugadores.add(new Jugador(nombre));
notificarObservadores(2);
}
}
Interface IJuego:import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.StreamCorruptedException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import Cartas.Cartas;
import Cartas.Mazo;
import ar.edu.unlu.rmimvc.observer.IObservableRemoto;
public interface IJuego extends IObservableRemoto {
}
Controlador:public class ControladorJuego implements IControladorRemoto ;
private IJuego miJuego;
private ControlVista miVista;
this.miVista = miVista;
miVista.iniciar();
}
[color=red][b]miJuego.agregarJugador(nombre);[/b][/color]
}
return miJuego.mostrarJugadores();
}
int cambio = (int) queCambio;
switch (cambio) {
case 1:
break;
case 2:
System.
out.
println("Jugador agregado con exito");
break;
}
@Override
public <T
extends IObservableRemoto
> void setModeloRemoto
(T arg0
) throws RemoteException { // TODO Auto-generated method stub
}
}
Clase vistaConsola:import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Scanner;
import Vista.ControlVista;
import Controlador.ControladorJuego;
import Modelo.Juego;
import Modelo.Jugador;
public class VistaConsola implements ControlVista {
private static ControladorJuego miControl;
System.
out.
println("-------------------------"); System.
out.
println("- Configuración -"); System.
out.
println("-------------------------"); System.
out.
println("- M E N U -"); System.
out.
println("-------------------------"); System.
out.
println("- 1 - Agregar Jugador -"); System.
out.
println("- 2 - Mostrar Jugadores -"); System.
out.
println("- 3 - Iniciar Juego -"); System.
out.
println("-------------------------");
Scanner a
= new Scanner
(System.
in); int i = a.nextInt();
switch (i) {
case 1:
System.
out.
println("Ingrese nombre de jugador "); Scanner sc
= new Scanner
(System.
in);
nom = sc.nextLine();
[color=red][b]miControl.agregarJugador(nom);[/b][/color]
break;
}
[color=red][b]menu();[/b][/color]
}
@Override
public void setControlador
(ControladorJuego controlador
) throws RemoteException{ miControl = controlador;
}
}
Interface controlVistaimport java.io.IOException;
import java.rmi.RemoteException;
import Controlador.ControladorJuego;
public interface ControlVista {
}
El error es:
Exception in thread "main" java.lang.NullPointerException
at Controlador.ControladorJuego.agregarJugador(ControladorJuego.java:)
at Vista.VistaConsola.menu(VistaConsola.java:)
at Vista.VistaConsola.iniciar(VistaConsola.java:)
at AppCliente.main(AppCliente.java:)
Marque en rojo las lineas en las que me salta error