C#編寫網(wǎng)游客戶端的實(shí)現(xiàn)
一、項目初步設(shè)置
1. 新建項目
新建一個WIndows 窗體應(yīng)用(.Net Framework):

設(shè)置項目名稱和位置:

2. 界面設(shè)計
右擊工具箱內(nèi)的常規(guī),點(diǎn)擊選擇項:

勾選COM 組件下的Windows Media Player:

界面如下:

二、連接服務(wù)器
在Form中初始化進(jìn)入游戲:
private NetworkStream stream;
private TcpClient tcpClient = new TcpClient();
public Form1()
{
InitializeComponent();
try
{
//向指定的IP地址的服務(wù)器發(fā)出連接請求
tcpClient.Connect("10.1.230.74", 3900);
listBox1.Items.Add("連接成功!");
stream = tcpClient.GetStream();
byte[] data = new byte[1024];
//判斷網(wǎng)絡(luò)流是否可讀
if (stream.CanRead)
{
int len = stream.Read(data, 0, data.Length);
//Encoding ToEncoding = Encoding.GetEncoding("UTF-8");
//Encoding FromEncoding = Encoding.GetEncoding("GB2312");
//data=Encoding.Convert(FromEncoding, ToEncoding, data);
//string msg = Encoding.UTF8.GetString(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("服務(wù)器未啟動!");
}
}
運(yùn)行結(jié)果:

三、發(fā)送數(shù)據(jù)
設(shè)置確定按鈕的name為btnSend,雙擊該按鈕:

//判斷連接是否斷開
if (tcpClient.Connected)
{
//向服務(wù)器發(fā)送數(shù)據(jù)
string msg = textBox1.Text;
Byte[] outbytes = System.Text.Encoding.Default.GetBytes(msg + "\n");
stream.Write(outbytes, 0, outbytes.Length);
byte[] data = new byte[1024];
//接收服務(wù)器回復(fù)數(shù)據(jù)
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("連接已斷開");
}
運(yùn)行結(jié)果:

四、播放背景音樂
設(shè)置播放、停止按鈕的name分別為btnPlay、btnStop:

播放音樂看不出效果,這里就不放運(yùn)行結(jié)果了。
五、實(shí)現(xiàn)游戲背景圖片變換
拖入一個timer,設(shè)置其Enable為True:

雙擊timer,編寫代碼:
int flag = 0;
private void timer1_Tick(object sender, EventArgs e)
{
flag++;
string picturePath = @"C:\Users\16438\Desktop\game1\game1\game1\bin\Debug\img\" + flag + ".jpg";
pictureBox1.Image = Image.FromFile(picturePath);
if (flag == 3)
{
flag = 0;
}
}
運(yùn)行結(jié)果:

六、總結(jié)
C#連接服務(wù)器十分方便。
參考
到此這篇關(guān)于C#編寫網(wǎng)游客戶端的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C#編寫網(wǎng)游客戶端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用async和await實(shí)現(xiàn)異步編程
本文詳細(xì)講解了C#使用async和await實(shí)現(xiàn)異步編程的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
C#影院售票系統(tǒng)畢業(yè)設(shè)計(2)
這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計,介紹了電影院座位的動態(tài)繪制、電影信息綁定到窗體中如何展現(xiàn)出來,需要的朋友可以參考下2015-11-11
C#中加鹽(salting)的實(shí)現(xiàn)示例
在密碼存儲和驗(yàn)證中,加鹽是一種增加密碼安全性的技術(shù),本文主要介紹了C#中加鹽(salting)的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-01-01
C#?使用Aspose.Cells?導(dǎo)出Excel的步驟及問題記錄
Aspose.Cells是一款功能強(qiáng)大的Excel文檔處理和轉(zhuǎn)換控件,開發(fā)人員和客戶電腦無需安裝Microsoft Excel也能在應(yīng)用程序中實(shí)現(xiàn)類似Excel的強(qiáng)大數(shù)據(jù)管理功能,對C#?使用Aspose.Cells?導(dǎo)出Excel的步驟及問題記錄感興趣的朋友一起看看吧2022-01-01
WPF中使用CallerMemberName簡化InotifyPropertyChanged的實(shí)現(xiàn)
這篇文章介紹了WPF中使用CallerMemberName簡化InotifyPropertyChanged的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06

