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

上傳人:仙*** 文檔編號:37677831 上傳時間:2021-11-04 格式:DOC 頁數(shù):10 大?。?4.50KB
收藏 版權(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、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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(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),我們立即給予刪除!