C網(wǎng)絡(luò)五子棋源碼
《C網(wǎng)絡(luò)五子棋源碼》由會員分享,可在線閱讀,更多相關(guān)《C網(wǎng)絡(luò)五子棋源碼(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、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; using System.Net; using Micros
2、oft.Win32; namespace WuZiQi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Button[,] buttons;//棋盤數(shù)組 public bool gamer1 = false, gamer2 = false,netcanplay=false ;// 兩個玩家是否允下棋,連網(wǎng)狀態(tài)時是否允許下棋
3、 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 se = null;//創(chuàng)建發(fā)送上線信息進程
4、 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 /// 下棋 /// /// 要下棋子的索引 /// public bool xiaqi(i
6、nt index) { //MessageBox.Show(index.ToString()); foreach (Button b in buttons) { if (b.TabIndex == index ) { bool check = false; if (gamer1click[b.TabIndex] == true)
7、 { 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"); if (netpk.Checked == false
9、 || Asservice.Checked == true) { if (checkwin("gamer1")) { label11.Text = "贏家:玩家一" + player1.Text; MessageBox.Show("恭喜玩家一:" + playe
10、r1.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; Mes
13、sageBox.Show("恭喜玩家二:" + player2.Text + ",你贏了!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); canxiaqi(""); send("win恭喜玩家二:" + player2.Text + ",你贏了!"); }
14、 } } } else { check = false; MessageBox.Show("這個位置上不能下棋!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); //MessageBox.Show
15、(b.TabIndex.ToString()); } return true; } } return false; } //開始游戲 private void start_Click(object sender, EventArgs e) { //if (player1.Text == "" || player2.Text ==
16、"") //{ // MessageBox.Show("請輸入你的名字!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); //} //else //{ if (canplay == true || netpk.Checked == false) { if (radioButton1.
17、Checked == true) { canxiaqi("gamer1"); } else { canxiaqi("gamer2"); } groupBox2.Enabled = false; start.
18、Enabled = false; } else { MessageBox.Show("還沒有建立連接或?qū)Ψ竭€沒有準(zhǔn)備好!不能開始游戲!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } //} } //改變下棋狀態(tài) /// /// 改變下棋狀態(tài)
19、 /// /// 可以下棋的人的名字 public void canxiaqi(string s) { if (s=="gamer1") { int sum = 0; for (int i = 0; i /// 判斷輸贏 /// /// 要判斷的玩家的名字 /// 是否贏 public bool checkwin(s
20、tring s) { if (s == "gamer1") { for (int i = 0; i } } //做為主機 private void Asservice_CheckedChanged_1(object sender, EventArgs e) { if (Asservice.Checked == true) {
21、 waitconnect.Enabled = true; Asclinet.Checked = false; Asclinet.Enabled = false; } else { waitconnect.Enabled = false; groupBox3.Enabled = true; Asservice.Enabled = tru
22、e; Asclinet.Enabled = true; } } //做為客戶機 private void Asclinet_CheckedChanged(object sender, EventArgs e) { if (Asclinet.Checked == true) { connect.Enabled = true; label12.Ena
23、bled = true; ip.Enabled = true; Asservice.Checked = false; Asservice.Enabled=false ; } else { connect.Enabled = false ; label12.Enabled = false; ip.Enabled = f
24、alse; groupBox3.Enabled = true; Asservice.Enabled = true; Asclinet.Enabled = true; } } //等待客戶機連接 private void waitconnect_Click(object sender, EventArgs e) { IPHostEntry MyEntry = Dns.Get
25、HostByName(Dns.GetHostName()); IPAddress MyAddress = new IPAddress(MyEntry.AddressList[0].Address); myipadd = MyAddress.ToString(); ThreadStart s=new ThreadStart (Listen ); li = new Thread(s); li.Start(); statue.Text = "正在
26、等待客戶機連接!現(xiàn)在還不能開始游戲!"; waitconnect.Enabled = false; } //連接 private void connect_Click(object sender, EventArgs e) { if (ip.Text != "") { IPHostEntry MyEntry = Dns.GetHostByName(Dns.GetHostName());
27、 IPAddress MyAddress = new IPAddress(MyEntry.AddressList[0].Address); myipadd = MyAddress.ToString(); ThreadStart s = new ThreadStart(co); se = new Thread(s); se.Start(); statue.Text = "正在連接主機!現(xiàn)在還不能開始游戲!";
28、 ThreadStart sx = new ThreadStart(Listen); li = new Thread(sx); li.Start(); connect.Enabled = false; } else { MessageBox.Show("請輸入一個正確的IP地址!", "會飛的魚提醒", MessageBoxButtons.OK, MessageB
29、oxIcon.Warning); } } //監(jiān)聽命令信息 /// /// 監(jiān)聽命令信息 /// public void Listen() { try { TcpListener li = new TcpListener(port); li.Start(); while (true)
30、 { TcpClient cl = li.AcceptTcpClient(); NetworkStream ns = cl.GetStream(); byte[] mbyte = new byte[1024]; int BytesRead = ns.Read(mbyte, 0, mbyte.Length); string command = System.Te
31、xt.Encoding.Default.GetString(mbyte, 0, BytesRead).Trim(); execcommand(command); cl.Close(); ns.Close(); Thread.Sleep(500); } } catch { //Messa
32、geBox.Show("建立連接出錯!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } //解釋命令 /// /// 解釋命令 /// /// 要解釋的命令 public void execcommand(string command) { label13.Text = command; //M
33、essageBox.Show(command); if (command != "") { if (command.Substring(0, 7) == "connect") { statue.Text = "已經(jīng)建立連接!你可以開始游戲了!"; ip.Text = command.Substring(8, command.Length - 8); r
34、eady.Enabled = true; send("connect:" + myipadd); } else if (command.Substring(0, 5) == "start") { int p =Convert .ToInt32 (command.Substring(6, 1)); //player1 .Text
35、 =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; } if (
37、radioButton1.Checked == true) { MessageBox.Show("先手:玩家一!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("先手:玩家二!", "會飛的魚提醒",
38、MessageBoxButtons.OK, MessageBoxIcon.Information); } canplay = true; //ready.Enabled = false; statue.Text = "對方已經(jīng)準(zhǔn)備好,你可以開始游戲了!"; } else if (command.Substring(0, 5) == "xiaqi")
39、 { int x = Convert.ToInt32(command.Substring(5, 1)); if (x==1) { canxiaqi("gamer1"); } else { canxiaqi("gamer2");
40、 } //MessageBox.Show(command.Substring(6, command.Length - 6)); xiaqi(Convert.ToInt32(command.Substring(7, command.Length - 7))); netcanplay = true; } else if (command.Substring(0, 3)
41、 == "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ā)送信息 /// /// 發(fā)送信息
43、 /// public void sendt() { try { //根據(jù)目標(biāo)計算機地址建立連接 TcpClient MyTcpClient = new TcpClient(ip.Text, port); //獲得用于網(wǎng)絡(luò)訪問的數(shù)據(jù)流 NetworkStream MyTcpStream = MyTcpClient.GetStream();
44、 StreamWriter MyStream = new StreamWriter(MyTcpStream, System.Text.Encoding.GetEncoding("GB2312")); //將字符串寫入流 MyStream.Write(sendmessage ); //將緩沖數(shù)據(jù)寫入基礎(chǔ)流 MyStream.Flush(); //關(guān)閉網(wǎng)絡(luò)流 MyStream.Close();
45、 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(); //MessageBox.Sho
47、w("started"); } //時鐘定時改變連接狀態(tài) private void timer1_Tick(object sender, EventArgs e) { statue.Text = "連接錯誤或?qū)Ψ郊合戮€!"; } //準(zhǔn)備 private void ready_Click(object sender, EventArgs e) { if (radioButton1.Checked ==
48、 true) { send("start:1:"+player1 .Text ); } else { send("start:2:" + player2.Text); } } //退出程序 private void Form1_FormClosing(object sender, EventArgs e)
49、 { try { se.Abort(); li.Abort(); sen.Abort(); } catch { //MessageBox.Show("退出程序時出錯!", "會飛的魚提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }
- 溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機關(guān)“弘揚憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告