Clase AppCliente:
Código
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;
public static void main(String[] args) throws RemoteException {
ArrayList<String> ips = Util.getIpDisponibles();;
String ip = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la que escuchará peticiones el cliente", "IP del cliente",
JOptionPane.QUESTION_MESSAGE,
null,
ips.toArray(),
null
);
String port = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que escuchará peticiones el cliente", "Puerto del cliente",
JOptionPane.QUESTION_MESSAGE,
null,
null,
9999
);
String ipServidor = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la corre el servidor", "IP del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
null,
null
);
String portServidor = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que corre el servidor", "Puerto del servidor",
JOptionPane.QUESTION_MESSAGE,
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]vista.iniciar();[/color]
try {
c.iniciar(controlador);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase AppServidor:
Código
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 {
public static void main(String[] args) throws RemoteException {
ArrayList<String> ips = Util.getIpDisponibles();
String ip = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la que escuchará peticiones el servidor", "IP del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
ips.toArray(),
null
);
String port = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que escuchará peticiones el servidor", "Puerto del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
null,
8888
);
Juego modelo = new Juego();
System.out.println("Juego creado");
Servidor servidor = new Servidor(ip, Integer.parseInt(port));
try {
servidor.iniciar(modelo);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase jugador:
Código
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 class Jugador implements Serializable {
public String nombre;
public int puntos=0;
public Jugador (String nombre){
this.nombre=nombre;
this.puntos=0;
}
Clase Juego
Código
public class Juego extends ObservableRemoto implements IJuego{
public ArrayList<Jugador> jugadores = new ArrayList<>();
public Juego() {
jugadorActual = 0;
ronda = 1;
}
public void iniciar() throws RemoteException {
estado=INICIANDO_JUEGO;
jugadorActual=0;
ronda=1;
notificarObservadores(1);
}
public void agregarJugador (String nombre) throws RemoteException {
jugadores.add(new Jugador(nombre));
notificarObservadores(2);
}
}
Interface IJuego:
Código
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 {
void iniciar() throws RemoteException;
void jugando() throws RemoteException;
void agregarJugador(String nombre) throws RemoteException;
}
Controlador:
Código
public class ControladorJuego implements IControladorRemoto ;
private IJuego miJuego;
private ControlVista miVista;
public ControladorJuego(ControlVista miVista) throws RemoteException {
this.miVista = miVista;
miVista.iniciar();
}
public void agregarJugador(String nombre) throws RemoteException {
[color=red]miJuego.agregarJugador(nombre);[/color]
}
public String mostrarJugadores() throws RemoteException {
return miJuego.mostrarJugadores();
}
public void actualizar(IObservableRemoto modelo, Object queCambio) throws RemoteException{
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:
Código
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;
public void menu() throws RemoteException {
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("-------------------------");
System.out.println(" ");
Scanner a = new Scanner(System.in);
int i = a.nextInt();
switch (i) {
case 1:
String nom="";
System.out.println("Ingrese nombre de jugador ");
Scanner sc = new Scanner(System.in);
nom = sc.nextLine();
[color=red]miControl.agregarJugador(nom);[/color]
break;
}
public void iniciar() throws RemoteException{
[color=red]menu();[/color]
}
@Override
public void setControlador(ControladorJuego controlador) throws RemoteException{
miControl = controlador;
}
}
Interface controlVista
Código
import java.io.IOException;
import java.rmi.RemoteException;
import Controlador.ControladorJuego;
public interface ControlVista {
void menu() throws RemoteException;
void setControlador(ControladorJuego controlador) throws RemoteException;
void iniciar() throws RemoteException ;
}
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:)