jueves, 14 de marzo de 2013

9 - El Cliente

Aquí es dónde esta el juego ahora. El cliente es el que se ejecuta en la computadora del usuario. Éste solo hace una conexión, la conexión al servidor. Tengo una base de cliente que cree para ti, es el esquema de un cliente, pero es bueno trabajar con él, puesto que cuenta con los objetos necesarios y los objetos requeridos.

Bien, el cliente tendrá 2 objetos que serán utilizados para la conexión, "Online_connect" que hará la conexión inicial y "online_receive" que recibirá todos los datos desde el servidor. Este tiene el mismo "switch()" que el servidor, porque podremos poner el byte al comienzo del mensaje.
 Aquí esta el código para el evento create del objeto "online_connect":
dllinit(0, true, false);global.tcp = tcpconnect("127.0.0.1",5123, 1);
if (global.tcp > 0) { room_goto_next();}else{ 
show_message("No fue posible conectarse."); 
game_end();
 En el código anterior, "dllinit()" es el mismo que el servidor. Abajo está nuestra variable global "global.tcp". Comienza con la asignación de una TCP ID devuelta por la función "tcpconnect()". El primer parámetro para "tcpconnect()" es la dirección IP del servidor al cual deseamos conectarnos, la cual debe ser una cadena.
Nota: colocar "127.0.0.1" es lo mismo que decir "LocalHost".

El segundo argumento es el número de puerto. Esta establecido en 5123 pero debe ser cambiado por el puerto con el que opera el servidor (Es decir, 8080). El tercer argumento es el bloqueo establecido en off.

El resto se explica por si solo, si "global.tcp" es mayor que 0 entonces el cliente establece la conexión con el servidor, continuemos...

Nota: El objeto "online_connect" debe tener un room propio. El primer room en tu juego debe estar vació (A excepción de este objeto). Es el objeto "online_receive() el que debería estar en el room del juego.

Muy bien, ahora es turno del objeto "online_receive". Este objeto debe ser colocado en cualquier room que necesite transferir datos online.
 Solo tendrá el evento step, porque queremos verificar si hay a la espera, mensajes nuevos.



While(1){ msize = receivemessages(global.tcp)
 if (msize == 0) { // Para cuando se desconecte de imprevisto el servidor  show_message("Desconexión inesperada");  game_end(); } 
 if (msize <= 0) break; // Resetea el ciclo 
 mid = readbyte(); switch(mid) {  case 0:  break; 
  case 1:  break; } 
}
Observa como están estrechamente relacionados el código del evento step del cliente con el código en el evento step del objeto player.
 Observa también el comando "receivemessage()" tiene "global.tcp" en el objeto player, en vez de "TCP".

Todo esto es fácil de entender si comprendes al objeto player que está en el servidor.

No hay comentarios:

Publicar un comentario