C#網(wǎng)絡(luò)五子棋源碼范例

上傳人:文*** 文檔編號:62033337 上傳時間:2022-03-13 格式:DOC 頁數(shù):10 大?。?6KB
收藏 版權(quán)申訴 舉報 下載
C#網(wǎng)絡(luò)五子棋源碼范例_第1頁
第1頁 / 共10頁
C#網(wǎng)絡(luò)五子棋源碼范例_第2頁
第2頁 / 共10頁
C#網(wǎng)絡(luò)五子棋源碼范例_第3頁
第3頁 / 共10頁

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C#網(wǎng)絡(luò)五子棋源碼范例》由會員分享,可在線閱讀,更多相關(guān)《C#網(wǎng)絡(luò)五子棋源碼范例(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、文檔供參考,可復(fù)制、編制,期待您的好評與關(guān)注! using System; using System.Windows.Forms; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.IO; using System.Net.Sockets; using System.Threading; using System.Diagnostics; usin

2、g System.Net; using Microsoft.Win32; namespace WuZiQi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Button[,] buttons;//棋盤數(shù)組 public bool gamer1 = false, gamer2 = false,netcanplay=false ;//

3、 兩個玩家是否允下棋,連網(wǎng)狀態(tài)時是否允許下棋 public bool[] gamer1click = new bool [225];//玩家一所下的棋 public bool[] gamer2click = new bool[225];//玩家二所下的棋 public static int port = 3332;//連接端口 public string myipadd = "";//本機IP public Thread li = null;//創(chuàng)建監(jiān)聽進(jìn)程 public Thread

4、se = null;//創(chuàng)建發(fā)送上線信息進(jìn)程 public Thread sen = null;//創(chuàng)建發(fā)送信息進(jìn)程 public string sendmessage = "";//要發(fā)送的信息 public bool canplay = false;//是否可以開始游戲 private void Form1_Load(object sender, EventArgs e) { cshqp(); } //初始化棋盤 ///

5、 /// 初始化棋盤 /// /// 初始化是否成功 public bool cshqp() { groupBox1.Controls.Clear(); buttons = new Button[15,15]; int i = 0; for (int x = 0; x /// 下棋 /// /// 要下棋子的索引 ///

6、 public bool xiaqi(int index) { //MessageBox.Show(index.ToString()); foreach (Button b in buttons) { if (b.TabIndex == index ) { bool check = false; if (gamer1click[b.Ta

7、bIndex] == true) { check = true; } if (gamer2click[b.TabIndex] == true) { check = true; } if (check != true)

8、 { if (gamer1 == true) { gamer1click[b.TabIndex] = true; b.Image = global::WuZiQi.Properties.Resources.black; canxiaqi("gamer2");

9、 if (netpk.Checked == false || Asservice.Checked == true) { if (checkwin("gamer1")) { label11.Text = "贏家:玩家一" + player1.Text; Messa

10、geBox.Show("恭喜玩家一:" + player1.Text + ",你贏了!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); canxiaqi(""); send("win恭喜玩家一:" + player1.Text + ",你贏了!"); }

11、 } } else if (gamer2 == true) { gamer2click[b.TabIndex] = true; b.Image = global::WuZiQi.Properties.Resources.write; canxiaqi("gamer1");

12、 if (netpk.Checked == false || Asservice.Checked == true) { if (checkwin("gamer2")) { label11.Text = "贏家:玩家二" + player2.Text;

13、 MessageBox.Show("恭喜玩家二:" + player2.Text + ",你贏了!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); canxiaqi(""); send("win恭喜玩家二:" + player2.Text + ",你贏了!");

14、 } } } } else { check = false; MessageBox.Show("這個位置上不能下棋!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning);

15、 //MessageBox.Show(b.TabIndex.ToString()); } return true; } } return false; } //開始游戲 private void start_Click(object sender, EventArgs e) { //if (player1.Tex

16、t == "" || player2.Text == "") //{ // MessageBox.Show("請輸入你的名字!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); //} //else //{ if (canplay == true || netpk.Checked == false) {

17、 if (radioButton1.Checked == true) { canxiaqi("gamer1"); } else { canxiaqi("gamer2"); } groupBox2.Enabled = false;

18、 start.Enabled = false; } else { MessageBox.Show("還沒有建立連接或?qū)Ψ竭€沒有準(zhǔn)備好!不能開始游戲!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } //} } //改變下棋狀態(tài)

19、/// /// 改變下棋狀態(tài) /// /// 可以下棋的人的名字 public void canxiaqi(string s) { if (s=="gamer1") { int sum = 0; for (int i = 0; i /// 判斷輸贏 /// /// 要判斷的玩家的名字 /// 是否贏

20、 public bool checkwin(string s) { if (s == "gamer1") { for (int i = 0; i } } //做為主機 private void Asservice_CheckedChanged_1(object sender, EventArgs e) { if (Asservice.Checked == tr

21、ue) { waitconnect.Enabled = true; Asclinet.Checked = false; Asclinet.Enabled = false; } else { waitconnect.Enabled = false; groupBox3.Enabled = true;

22、 Asservice.Enabled = true; Asclinet.Enabled = true; } } //做為客戶機 private void Asclinet_CheckedChanged(object sender, EventArgs e) { if (Asclinet.Checked == true) { connect.Enabled = true;

23、 label12.Enabled = true; ip.Enabled = true; Asservice.Checked = false; Asservice.Enabled=false ; } else { connect.Enabled = false ; label12.Enabled = false;

24、 ip.Enabled = false; groupBox3.Enabled = true; Asservice.Enabled = true; Asclinet.Enabled = true; } } //等待客戶機連接 private void waitconnect_Click(object sender, EventArgs e) { IP

25、HostEntry MyEntry = Dns.GetHostByName(Dns.GetHostName()); IPAddress MyAddress = new IPAddress(MyEntry.AddressList[0].Address); myipadd = MyAddress.ToString(); ThreadStart s=new ThreadStart (Listen ); li = new Thread(s); li.Start();

26、 statue.Text = "正在等待客戶機連接!現(xiàn)在還不能開始游戲!"; waitconnect.Enabled = false; } //連接 private void connect_Click(object sender, EventArgs e) { if (ip.Text != "") { IPHostEntry MyEntry = Dns.GetHostByName(Dns.Ge

27、tHostName()); IPAddress MyAddress = new IPAddress(MyEntry.AddressList[0].Address); myipadd = MyAddress.ToString(); ThreadStart s = new ThreadStart(co); se = new Thread(s); se.Start(); statue.Text =

28、"正在連接主機!現(xiàn)在還不能開始游戲!"; ThreadStart sx = new ThreadStart(Listen); li = new Thread(sx); li.Start(); connect.Enabled = false; } else { MessageBox.Show("請輸入一個正確的IP地址!", "會飛的魚提醒", Mes

29、sageBoxButtons.OK, MessageBoxIcon.Warning); } } //監(jiān)聽命令信息 /// /// 監(jiān)聽命令信息 /// public void Listen() { try { TcpListener li = new TcpListener(port); li.Start();

30、 while (true) { TcpClient cl = li.AcceptTcpClient(); NetworkStream ns = cl.GetStream(); byte[] mbyte = new byte[1024]; int BytesRead = ns.Read(mbyte, 0, mbyte.Length);

31、 string command = System.Text.Encoding.Default.GetString(mbyte, 0, BytesRead).Trim(); execcommand(command); cl.Close(); ns.Close(); Thread.Sleep(500); } } catch

32、 { //MessageBox.Show("建立連接出錯!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } //解釋命令 /// /// 解釋命令 /// /// 要解釋的命令 public void execcommand(string command) { label13.Text

33、= command; //MessageBox.Show(command); if (command != "") { if (command.Substring(0, 7) == "connect") { statue.Text = "已經(jīng)建立連接!你可以開始游戲了!"; ip.Text = command.Substring(8, command.Length -

34、 8); ready.Enabled = true; send("connect:" + myipadd); } else if (command.Substring(0, 5) == "start") { int p =Convert .ToInt32 (command.Substring(6, 1));

35、 //player1 .Text =command if (p == 1) { netcanplay = true ; radioButton1.Checked = true; canxiaqi("gamer1"); groupBox2.Enabled = false;

36、 } else { netcanplay = true; radioButton2.Checked = true; canxiaqi("gamer2"); groupBox2.Enabled = false; }

37、 if (radioButton1.Checked == true) { MessageBox.Show("先手:玩家一!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox

38、.Show("先手:玩家二!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } canplay = true; //ready.Enabled = false; statue.Text = "對方已經(jīng)準(zhǔn)備好,你可以開始游戲了!"; } else if (command.Substri

39、ng(0, 5) == "xiaqi") { int x = Convert.ToInt32(command.Substring(5, 1)); if (x==1) { canxiaqi("gamer1"); } else {

40、 canxiaqi("gamer2"); } //MessageBox.Show(command.Substring(6, command.Length - 6)); xiaqi(Convert.ToInt32(command.Substring(7, command.Length - 7))); netcanplay = true; } else

41、if (command.Substring(0, 3) == "win") { canxiaqi(""); netcanplay = false; MessageBox.Show(command.Substring(3, command.Length - 3), "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); }

42、 } } //發(fā)送上線信息 /// /// 向主機發(fā)送上線信息 /// public void co() { while (true) { send("connect:"+myipadd ); Thread.Sleep(3000); } } //發(fā)送信息 ///

43、 /// 發(fā)送信息 /// public void sendt() { try { //根據(jù)目標(biāo)計算機地址建立連接 TcpClient MyTcpClient = new TcpClient(ip.Text, port); //獲得用于網(wǎng)絡(luò)訪問的數(shù)據(jù)流 NetworkStream MyTcpStream = MyTcpClient.G

44、etStream(); StreamWriter MyStream = new StreamWriter(MyTcpStream, System.Text.Encoding.GetEncoding("GB2312")); //將字符串寫入流 MyStream.Write(sendmessage ); //將緩沖數(shù)據(jù)寫入基礎(chǔ)流 MyStream.Flush(); //關(guān)閉網(wǎng)絡(luò)流

45、 MyStream.Close(); MyTcpClient.Close(); label14.Text = sendmessage; } catch { //MessageBox.Show("建立連接出錯!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } //發(fā)

46、送信息線程 /// /// 發(fā)送信息線程 /// /// 要發(fā)送的信息 public void send(string mes) { sendmessage = mes; sendt(); //ThreadStart ss = new ThreadStart(sendt); //sen = new Thread(ss); //sen.Start();

47、 //MessageBox.Show("started"); } //時鐘定時改變連接狀態(tài) private void timer1_Tick(object sender, EventArgs e) { statue.Text = "連接錯誤或?qū)Ψ郊合戮€!"; } //準(zhǔn)備 private void ready_Click(object sender, EventArgs e) {

48、if (radioButton1.Checked == true) { send("start:1:"+player1 .Text ); } else { send("start:2:" + player2.Text); } } //退出程序 private void Form1_FormClosing(object

49、sender, EventArgs e) { try { se.Abort(); li.Abort(); sen.Abort(); } catch { //MessageBox.Show("退出程序時出錯!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } } 10 / 10

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!