lunes, 20 de mayo de 2019

Multi Masive Online Rol Player Game ( MMORPG )

Así como lo leen.

Se trata de un pequeño proyecto que da inicio a un mmorpg, con la finalidad de que esto sea solo un pequeño paso para algo mas grande mas adelante...

Comenzaremos con la conexión de dos computadoras e iniciar el juego, posteriormente agregaremos a mas usuarios hasta llegar hacer un pequeño torneo con eliminación y un ganador por posición.

Este proyecto se conectará por medio de sockets en java ( obviamente ), comenzando con un thread que se encargara de crear un gestionar a los usuarios. Este Thread comienza por crear un nuevo hilo cada vez que se conecta un usuario, a su vez actualiza la lista de usuarios, la cual incluye. UserName, IP_Client, NickName, Password.  ( lo se, lo se, están en ingles las variables,  ( ¬.¬ ) es por que suenan mejor ), de esta manera tenemos ya dos archivos que crear, Usuario ( POJO, por sus siglas en ingles Plain Old Java Object ) y por otro lado el threadServer que será quien gestione.

De esta manera queda Usuario.java

public class Usuario {
    private String userName;
    private String ip_Client;
    private String nickName;
    private String password;

    @Override
    public String toString() {
        return "userName: " + userName;
    }

    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * @return the ip_Client
     */
    public String getIp_Client() {
        return ip_Client;
    }

    /**
     * @param ip_Client the ip_Client to set
     */
    public void setIp_Client(String ip_Client) {
        this.ip_Client = ip_Client;
    }

    /**
     * @return the nickName
     */
    public String getNickName() {
        return nickName;
    }

    /**
     * @param nickName the nickName to set
     */
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }
    
}


Por otro lado el ThreadServidor.java quedara de la siguiente manera

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ThreadServidor extends Thread {
    Socket sClient_1 = null;
    Socket sClient_2 = null;
    DataInputStream entrada = null;
    public DataOutputStream salida_1 = null;
    public DataOutputStream salida_2 = null;
    
    List clientesActivos = new ArrayList<>();
    
    /**
     * Constructor de la clase, se inicializan los sockets y se construyen 
     * los hilos cliente por cliente
     * @param sClient_1
     * @param sClient_2
     */
    public ThreadServidor( Socket sClient_1, Socket sClient_2 ){
        this.sClient_1 = sClient_1;
        this.sClient_2 = sClient_2;
        clientesActivos.add( this );
        System.out.println("Added customer waithing for login: " + 
                sClient_1 + "\t" +
                sClient_2 );
    }
    /**
     * Metodo run de la clase Thread.
     */
    @Override
    public void run(){
        System.out.println(".:: Esperando actividad ::.");
        try{
            entrada = new DataInputStream( sClient_1.getInputStream() );
            salida_1 = new DataOutputStream( sClient_1.getOutputStream() );
            salida_2 = new DataOutputStream( sClient_2.getOutputStream() );
            System.out.println( entrada.readUTF() );
            
        }catch( IOException ex ){
            System.out.println("Connection exit: " + ex.getMessage() );
            this.stop();
        }
        /*
         * en esta parte, se gestiona la interaccion del usuario con el servidor
         */
    }
}



Por el momento estas clases estarán cambiando con forme avance el proyecto.

No olvides dejar tus comentarios, seguirme en este blog para estar al tanto de como sigue este proyecto y muchos mas.

Nos vemos en la proxima entrada...

No hay comentarios:

Publicar un comentario