Implementing methods of a Frame in server class

0

I have a game implemented in java, to roll a dice and to pass the points and if 1 points are left at zero and if the turn passes the points are saved and the one that reaches 100 wins now I have only two frames but what happens is that nle add the class client and server to the code already done, but I do not know how to make the methods of the game that are in the frame amneje the server can someone help me ??

package agalludo2;

import java.util.Random;
import javax.swing.JOptionPane;

/**
 *
 * @author Leidy
 */
public class jFrameAgalludo extends javax.swing.JFrame{

/**
 * Creates new form FrameAgalludo
 */
Random tiro=new Random();

//    int jugadores = Integer.parseInt(jlbCantidadJugadores.getText());
    int player1=0, player2=0, player3=0, player4=0, jugador=1;
    int dado, cantidadjugadores;

public jFrameAgalludo() {
    initComponents();
    this.setLocationRelativeTo(null);//Inicia la ventana en la posicion del centro.
    CantidadJugadores();





 }

/**
 * Lanza los numeros a el jugar que le corresponde
 * @param evt 
 */
    private void jbtnLanzarActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if(player1>=100 || player2>=100 || player3>=100 || player4>=100){
            JOptionPane.showMessageDialog(null, "La partida ya finalizo. \nHas ganado.", "Juego ha terminado", JOptionPane.ERROR_MESSAGE);
        }else{
            if(jlbCantidadJugadores.getText().equals("1")){
                do {                    
                    Jugarcon1Jugador();
                } while (jugador==2);

            }else{
               JugarconMasDe1Jugador(); 
            }
        }
    }                                          
//Pasa el turno a el siguiente jugador
    private void jbtPasarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int aux=jugador;
        jugador++;
            if(jugador>cantidadjugadores){
                jugador=1;
            }
            JOptionPane.showMessageDialog(null, "Jugador "+aux+" pasa.\n Turno para jugador: " +jugador, "Cambio de turno", JOptionPane.INFORMATION_MESSAGE);
            jlbPlayer.setText(String.valueOf(jugador));
            jlbDado.setText("");
    }                                        

    /**
     * Manda la cantidad de jugadores, a elotro frame y deja jugar a los jugadores que esten en la cantidad elegida
     */
    public void CantidadJugadores(){
        cantidadjugadores= Integer.parseInt(JFrameSeleccionarPlayer.jComboBoxcantidad.getSelectedItem().toString());
        jlbCantidadJugadores.setText(String.valueOf(cantidadjugadores));
        if(cantidadjugadores==1 || cantidadjugadores==2){
            cantidadjugadores=2;
            jlbPlayer3Nombre.setVisible(false);
            jlbPlayer3Puntos.setVisible(false);
            jlbPlayer4Nombre.setVisible(false);
            jlbPlayer4Puntos.setVisible(false);
        }else{
            if(cantidadjugadores==3){
                jlbPlayer4Nombre.setVisible(false);
                jlbPlayer4Puntos.setVisible(false);
            }
        }

    }
    /**
     * Medodo que cubre la cantidad de jugadores dependiendo los elegidos.Metodo para jugar con dos o mas jugadores
     */
    public void JugarconMasDe1Jugador(){
        dado=tiro.nextInt(6);
        int aux;
        jlbDado.setText(String.valueOf(dado));
        if(jugador==1){
            if(dado==1){
                player1=0;
                jlbPlayer1Puntos.setText(String.valueOf(player1));                
            }else{
                player1 +=dado;
                jlbPlayer1Puntos.setText(String.valueOf(player1));
                if(player1>=100){
                    JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                    jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                }
            }
        }else{
            if(jugador==2){
                if(dado==1){
                    player2=0;
                    jlbPlayer2Puntos.setText(String.valueOf(player2));
                }else{
                    player2 +=dado;
                    jlbPlayer2Puntos.setText(String.valueOf(player2));
                    if(player2>=100){
                        JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                        jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                    }
                }
            }else{
                if(jugador==3){
                    if(dado==1){
                        player3=0;
                        jlbPlayer3Puntos.setText(String.valueOf(player3));
                    }else{
                        player3 +=dado;
                        jlbPlayer3Puntos.setText(String.valueOf(player3));
                        if(player3>=100){
                            JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                            jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                        }
                }
                }else{
                    if(jugador==4){
                        if(dado==1){
                            player4=0;
                            jlbPlayer4Puntos.setText(String.valueOf(player4));
                        }else{
                            player4 +=dado;
                            jlbPlayer4Puntos.setText(String.valueOf(player4));
                            if(player4>=100){
                                JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                                jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                            }
                        }
                    }
                }
            }
        }

        if(dado==1){
            aux=jugador;
            jugador++;
            if(jugador>cantidadjugadores){
                jugador=1;
            }
            JOptionPane.showMessageDialog(null, "Jugador: " +aux +" Acaba de perder sus puntos \nTurno para Jugador "+jugador, "Cambio de turno", JOptionPane.INFORMATION_MESSAGE);
            jlbPlayer.setText(String.valueOf(jugador));
            jlbDado.setText("");
        }
    }
/**
 * Metodo para jugar con un jugador unicamente 
 */
    public void Jugarcon1Jugador(){
        dado=tiro.nextInt(6);
        int aux;
        jlbDado.setText(String.valueOf(dado));
        if(jugador==1){
            if(dado==1){
                player1=0;
                jlbPlayer1Puntos.setText(String.valueOf(player1));                
            }else{
                player1 +=dado;
                jlbPlayer1Puntos.setText(String.valueOf(player1));
                if(player1>=100){
                    JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                    jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                }
            }
        }else{
            do {    

                dado=tiro.nextInt(6);
                player2 +=dado;
                jlbPlayer2Puntos.setText(String.valueOf(player2));
                JOptionPane.showMessageDialog(null, "Maquina continua jugando", "Turno Maquina", JOptionPane.INFORMATION_MESSAGE);
                if(player2>=100){
                    JOptionPane.showMessageDialog(null, "Felicidades Jugador "+jugador+"\nAcaba de ganar la partida \nFin del juego", "Juego Terminado", JOptionPane.INFORMATION_MESSAGE);
                    jlbFinJuego.setText("jugador "+jugador+" ha ganado");
                }

                if(dado==1){
                    player2=0;
                    jlbPlayer2Puntos.setText(String.valueOf(player2)); 
                }
            } while (dado!=1 || player2>=100);

        }

        if(dado==1){
            aux=jugador;
            jugador++;
            if(jugador>cantidadjugadores){
                jugador=1;
            }
            JOptionPane.showMessageDialog(null, "Jugador: " +aux +" Acaba de perder sus puntos \nTurno para Jugador "+jugador, "Cambio de turno", JOptionPane.INFORMATION_MESSAGE);
            jlbPlayer.setText(String.valueOf(jugador));
            jlbDado.setText("");
        }
    }

}

My server class would be how to implement the methods of that frame to the server?

public class SocketServidor{

private int Puerto=5020;
private Socket So;
private ServerSocket Ss;
private DataInputStream Entrada;
private DataOutputStream Salida;

public SocketServidor(){
    try {
        Ss = new ServerSocket(Puerto); //2 parametro el maximo de conexiones
    } catch (IOException ex) {
        Logger.getLogger(SocketServidor.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void EsperarConexion(){
    try {
        So = Ss.accept();
        Entrada = new DataInputStream(So.getInputStream());
        Salida = new DataOutputStream(So.getOutputStream());
    } catch (IOException ex) {
        Logger.getLogger(SocketServidor.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public String IPConectado(){
    return So.getInetAddress().toString();
}

public String PuertoConectado(){
    return String.valueOf(So.getPort());
}

public String EsperarDato(){
    try {
        return Entrada.readUTF();
    } catch (IOException ex) {
        return "@CerrarConexion@";
    }
}

public void EnviarDato(String Dato){
    try {
        Salida.writeUTF(Dato);
    } catch (IOException ex) {
        Logger.getLogger(SocketServidor.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void CerrarConexion(){
    try {
        So.close();
    } catch (IOException ex) {
        Logger.getLogger(SocketServidor.class.getName()).log(Level.SEVERE, null, ex);
    }
}
 private Thread ConexionCliente=new Thread()
{
    @Override
    public void run()
    {
        while(true){
            EsperarConexion();
            while(true){
                //recibir datos
            }
        }
    }
};
}
    
asked by paola 14.11.2017 в 09:12
source

1 answer

1

You can try to create a final variable of type JFrame in the class SocketServer , and when you instantiate the new SocketServer you pass the reference from the jFrameAgalludo to the new instance of SocketServer , in this way the SocketServer class would have access to all the public methods and variables that you have created in the class jFrameAgalludo .

public class SocketServidor{  

// Declaras las variables que ya tienes  
private final JFrame frame;

    public SocketServidor(JFrame frame){
        this.frame = frame; // <- Aquí estás pasando la referencia del frame jFrameAgalludo a la clase SocketServidor para luego usar sus métodos
        // aquí realizas las acciones que ya tenias
    }

    // aquí los demás métodos que tienes
}

Then, when making the SocketServer instance in the jFrameAgalludo class, you simply add the reference:

SocketServidor servidor = new SocketServidor(this);
    
answered by 17.11.2017 / 20:02
source