Red de conocimiento informático - Computadora portátil - C# Escribir un minijuego de adivinanzas en línea

C# Escribir un minijuego de adivinanzas en línea

Escribí uno según tu solicitud, es relativamente tosco. Su cuenta regresiva de 10 segundos no se ha implementado, así que deje que usted piense en esto. Permítanme hablar aproximadamente y escribir un servidor y un cliente. Las tecnologías utilizadas incluyen: subprocesos múltiples y programación de redes en C#. El cliente se conecta al servidor y procesa y reenvía los resultados de las adivinanzas a través del servidor. El número máximo de clientes conectados está establecido en 2 en el servidor. Es decir, solo se pueden conectar 2 clientes, que se pueden cambiar según la situación real. Escribí toda la tarde y no escribí ninguna nota correctamente. Si estás estudiando, únete a mí para conversar.

Lo anterior es el efecto de la operación general. El medio es el lado del servidor, y los dos lados son el cliente 1 y el cliente 2 ///////////////////////. /////// //////////////////////////////////////////// /////////// //Interfaz del lado del servidor: Código del lado del servidor: usando System;

usando System.Collections.Generic;

usando System. ComponentModel;

usando System.Data;

usando System.Drawing;

usando System.Text;

usando System.Windows. Formularios;

usando System.Net;

usando System.Net.Sockets;

usando System.Threading;namespace Server

{

clase parcial pública Form1: Formulario

{

oyente TcpListener privado;

Lista privada lista de clientes;

Hilo privado t;

Hilo privado t1;

cadena privada outTos;

Formulario1 público()

{

InitializeComponent();

setControls();

} private void setControls()

{

clientList = nueva Lista(); botón1.Texto = " Iniciar";

botón1.Clic += nuevo EventHandler(botón1_Clic);

botón2.Texto = "Detener";

botón2.Click += nuevo EventHandler (botón2_Click);

} private void StartServer()

{

dirección IP ip = nueva dirección IP (nuevo byte[] { 127, 0, 0, 1 });

oyente = nuevo TcpListener(ip, 8500);

oyente.Start();

richTextBox1.Text += string.Format(" Servidor: {0} Número de puerto: {1} Ya iniciado...\n",ip.ToString(),8500);

}

private void GetClient()

{

hacer

{

if (clientList.Count > = 2)

{

//clientList.Clear();

descanso;

}

else

{

clientList.Add(listener.AcceptTcpClient());

outTos += string.Format("Player:{0} se está conectando\ n", clientList[clientList.Count - 1].Client.LocalEndPoint);

if (clientList.Count == 2)

{

intentar

{

t1 = nuevo hilo(GetMsg);

t1.Start();

}

captura

{

t1.Abort();

}

}

}

}

while (verdadero);

}

privado vacío GetMsg()

{

hacer

{

int byteRead = 0;

int bufferSize = 2000;

byte[] buffer = nuevo byte[bufferSize ]; NetworkStream stream1 = clientList[0].GetStream();

byteRead = stream1.Read(buffer, 0, bufferSize);

string msg =

Encoding.Unicode.GetString(buffer, 0, byteRead); NetworkStream stream2 = clientList[1].GetStream();

byteRead = stream2.Read(buffer, 0, bufferSize);

string msg1 = Encoding.Unicode.GetString(buffer, 0, byteRead); if (msg!= string.Empty && msg1!= string.Empty)

{

EnviarMsg (GetAnsower(msg, msg1));

}

}

while (true } private void SendMsg(int win)

{

cadena p1 = cadena.Empty;

cadena p2 = cadena.Empty;

if (win == 0)

{

p1 = "empate";

p2 = "empate";

}

if (gana == 1 )

{

p1 = "¡Gana!";

p2 = "¡Perdió!";

}

if (gana == 2)

{

p1 = "¡Perdió! ";

p2 = "¡Gana! ";

} NetworkStream stream1 = clientList[0].GetStream();

byte[] buffer1 = Encoding.Unicode.GetBytes(p1);

stream1.Write(buffer1, 0, buffer1.Length NetworkStream stream2 = clientList[1].GetStream();

byte[] buffer2 = Encoding.Unicode.GetBytes(p2);

stream2.Write(buffer2, 0, buffer2.Length);

outTos += string.Format("El mensaje ha sido enviado al jugador 1: {

0} Jugador 2: {1}\n",p1,p2);

} private int GetAnsower(string m1,string m2)

{

int win = 0;

if (m1 == "Tijeras")

{

if (m2 == "Paño") win = 1;

if (m2 == "Piedra") gana = 2;

if (m2 == "Tijeras") gana = 0;

}

if (m1 == "Piedra")

{

if (m2 == "Tijeras") gana = 1;

if ( m2 == "tela") gana = 2;

si (m2 == "piedra") gana = 0;

}

si (m1 = = "tela")

{

si (m2 == "piedra") gana = 1;

si (m2 == "tijeras") gana = 2;

if (m2 == "tela") win = 0;

}

return win;

} void button1_Click(remitente del objeto, EventArgs e)

{

prueba

{

StartServer();

t = nuevo hilo(GetClient);

t.Start();

timer1.Start();

}

captura (Excepción ejemplo)

{

t.Abort();

t1.Abort();

timer1.Stop() ;

timer1.Stop();

}

}

void button2_Click(objeto remitente, EventArgs e)

{

t.Abortar();

t1.Abortar();

listener.Stop();

timer1.Stop();

MessageBox.Show("¡El servidor no funciona!");

} private void timer1_Tick (objeto remitente, EventArgs e)

{

richTextBox1.Text += outTos;

outTos = string.Empty;

}

}

}