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)聽進程 public Thread

4、se = null;//創(chuàng)建發(fā)送上線信息進程 public Thread sen = null;//創(chuàng)建發(fā)送信息進程 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ū)Ψ竭€沒有準備好!不能開始游戲!", "會飛的魚提醒", 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)準備好,你可以開始游戲了!"; } 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ù)目標計算機地址建立連接 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ū)Ψ郊合戮€!"; } //準備 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(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)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!