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 Juego- public 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 controlVista- import 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