使用Virtual Studio 2022利用老师给出的框架进行的修改。
一、连接服务器
NetworkStream的相关知识点 ①NetworkStream只能使用于具有TCP/IP协议之中,用于UDP中虽然不会报错,但是会出现异常。 ②NetworkStream是面向连接的。 ③NetworkStream是利用流的形式进行传输信息。
private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
public Form1()
{
InitializeComponent();
try
{
tcpClient.Connect("10.160.52.106", 3900);
listBox1.Items.Add("连接成功!");
stream = tcpClient.GetStream();
byte[] data = new byte[1024];
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg1=msg.Split(str1);
for(int j = 0; j < msg1.Length; j++)
{
listBox1.Items.Add(msg1[j]);
}
}
}
catch
{
listBox1.Items.Add("服务器未启动!");
}
}
服务器当时无法连接所以其实并未连接成功
二、玩家向服务器发送数据
通过button向服务器发送玩家称呼数据
private void button12_Click(object sender, EventArgs e)
{
if (tcpClient.Connected)
{
string msg = textBox1.Text;
Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg+"\n");
stream.Write(outbytes, 0, outbytes.Length);
byte[] data = new byte[1024];
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
string msg1 = Encoding.Default.GetString(data, 0, data.Length);
string str = "\r\n";
char[] str1 = str.ToCharArray();
string[] msg2 = msg1.Split(str1);
for (int j = 0; j < msg2.Length; j++)
{
listBox1.Items.Add(msg2[j]);
}
}
}
else
{
listBox1.Items.Add("连接已断开");
}
}
三、BGM控件的实现
1.添加组件
右键常规->选择项
2.代码准备
private void button13_Click(object sender, EventArgs e)
{
string s = @"D:/CloudMusic/Oracle.mp3";
axWindowsMediaPlayer1.URL = s;
}
private void button14_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
四、游戏背景变换
添加timer控件
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
flag++;
string picturePath = @"D:\imag\"+flag+".jpg";
pictureBox1.Image = Image.FromFile(picturePath);
if (flag == 6)
{
flag = 0;
}
}
小结
学习C#一些基本组件的方法,有了框架客户端网游对界面的设计的要求更高。
链接
编写一个网游客户端
|