void jugador::mover()
{
int Listo=0;
char txt[16], aux[16];
x=xa+dx; y=ya+dy; // asigno las posiciones nuevas
xx=-1; yy=-1; // esto es como la "posicion anterior" para redibujar solo si cambia
while(!Listo)
{
if(x!=xx || y!=yy){ dibujo de nuevo }
xx=x; yy=y;
// ahora lo q importa
if(soy_yo) // si es mi turno mando mis movimientos
{
leo el teclado y recalculo x e y o hago Listo=1; si apretaron enter
sprintf(txt,"%ld",10000*x+y); // mando la posicion nueva como xxxxyyyy
if(hosteo)
{
if(Listo) mandar_todos("l"); // mandar_todos() hace send() a todos los jugadores
else mandar_todos(txt); // si aprete enter mando una l, si no, la nueva posicion
}
else // si no soy el host
{
if(Listo) mandar("l"); // mandar() le manda al host
else mandar(txt);
recibir(aux); // cuando el host recibe algo se lo manda a todos, incluyendome a mi
}
}
else // si no es mi turno solo recibo
{
strcpy(texto,""); // x si acaso
if(hosteo)
{
recibir(turno,txt); // recibo lo q hizo el jugador de turno
mandar_todos(txt); // y se lo mando a todos
}
else{ recibir(txt); } // si no soy el host recibo lo q el me mando (q es lo q le mando el jugador)
// aca manejo lo q me llego...
}
} // fin del while
// aca manejo los resultados finales del movimiento...
}