畢業(yè)設(shè)計(jì)(論文)C#大廳五子棋游戲系統(tǒng)設(shè)計(jì)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)C#大廳五子棋游戲系統(tǒng)設(shè)計(jì)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)C#大廳五子棋游戲系統(tǒng)設(shè)計(jì)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)C#大廳五子棋游戲系統(tǒng)設(shè)計(jì)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)C#大廳五子棋游戲系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、游戲開(kāi)發(fā)論文題 目: 大廳五子棋 作 者: 系 別: 計(jì)算機(jī)系 班級(jí): 軟件0701 專(zhuān) 業(yè): 計(jì)算機(jī)應(yīng)用技術(shù)專(zhuān)業(yè)(軟件方向)指導(dǎo)教師: 專(zhuān)業(yè)技術(shù)職務(wù) 講師 2009 年 12月 浙江溫州 前 言 五子棋是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱(chēng)之為“連珠”,英譯為“renju”,英文稱(chēng)之為“gobang”或“fir”(five in a row的縮寫(xiě)),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱(chēng)謂。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學(xué)的高深學(xué)問(wèn)“陰陽(yáng)易理”;它既有

2、簡(jiǎn)單易學(xué)的特性,為人民群眾所喜聞樂(lè)見(jiàn),又有深?yuàn)W的技巧和高水平的國(guó)際性比賽;它的棋文化源淵流長(zhǎng),具有東方的神秘和西方的直觀;既有“場(chǎng)”的概念,亦有“點(diǎn)”的連接。它是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。目 錄摘 要1abstract1第1章 項(xiàng)目概述21.1 項(xiàng)目背景21.2 任務(wù)概述2第2章 界面設(shè)計(jì)32.1 服務(wù)端32.2 客戶(hù)端4第3章 構(gòu)造階段73.1 核心代碼7第4章 論文小結(jié)52致 謝53參考文獻(xiàn)53 摘 要目前,以計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已在現(xiàn)實(shí)生活和生產(chǎn)中得以廣泛的使用,休閑類(lèi)網(wǎng)絡(luò)游戲集趣味性,娛樂(lè)性,互動(dòng)性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式。 本軟件使用c

3、#實(shí)現(xiàn),通過(guò)對(duì)scoket技術(shù)的理解,在此基礎(chǔ)上建立服務(wù)器與多客戶(hù)端的連接,利用多線程處理多個(gè)客戶(hù)端之間的信息。 通過(guò)對(duì)軟件的編寫(xiě),加深對(duì)以上技術(shù)的理解和掌握。大廳五子棋的開(kāi)發(fā)能夠是朋友們不見(jiàn)面也能下棋和聊天。關(guān) 鍵 字多線程;流套接字abstractat present, computer technology and network technology as the core of modern network technology has been in real life and production to be widely used set of casual online ga

4、mes fun, entertaining, interactive and puzzle in one sex has become the majority population of leisure. the software uses the c # to achieve, through scoket understanding of technology, in this based on the server and multiple client connections, using multi-threaded processing of information betwee

5、n multiple clients. through the preparation of the software to enhance the above techniques to understand and grasp. hall gobang development can not even meet with friends who can also play chess and chat.keywordsmultithreading; stream sockets第1章 項(xiàng)目概述1.1 項(xiàng)目背景當(dāng)前網(wǎng)絡(luò)上流傳的五子棋游戲功能并不盡善盡美,其中最主要的問(wèn)題就是人機(jī)對(duì)戰(zhàn)和網(wǎng)絡(luò)對(duì)戰(zhàn)

6、不能夠一起實(shí)現(xiàn),所以我決定開(kāi)發(fā)一個(gè)既能夠人機(jī)對(duì)戰(zhàn),又能夠進(jìn)行網(wǎng)絡(luò)對(duì)戰(zhàn)的五子棋系統(tǒng)。1.2 任務(wù)概述1.2.1 實(shí)現(xiàn)目標(biāo)l 實(shí)現(xiàn)在線下棋l 實(shí)現(xiàn)多人在線互動(dòng)交互.第2章 界面設(shè)計(jì)2.1 服務(wù)端2.1.1 初始如圖2. 1 初始圖2. 1 初始2.1.2 啟動(dòng)服務(wù)如圖2. 2 啟動(dòng)服務(wù)圖2. 2 啟動(dòng)服務(wù)2.2 客戶(hù)端2.2.1 初始如圖2. 1 初始圖2. 3 初始圖2. 3 初始2.2.2 連接服務(wù)端如圖2. 1 初始圖2. 4 連接服務(wù)器圖2. 4 連接服務(wù)器2.2.3 會(huì)員登陸如圖2. 5 會(huì)員登陸圖2. 5 會(huì)員登陸2.2.4 游戲界面如圖2. 6 游戲界面1如圖2. 7 游戲界面2如圖

7、2. 8 游戲界面3圖2. 6 游戲界面1圖2. 7 游戲界面2圖2. 8 游戲界面3第3章 構(gòu)造階段3.1 核心代碼3.1.1 服務(wù)端 using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using system.net.sockets;using system.net;using system.threading;using sy

8、stem.collections;using system.data.sqlclient;namespace fiveserver public partial class fiveserver : form private socket mainsocket; public delegate void updatericheditcallback(string text); public delegate void updateclientlistcallback(); public asynccallback pfnworkercallback; public string usernam

9、e; public int userpicture; private arraylist workersocketlist = arraylist.synchronized(new arraylist(); private int clientnum = 0;/客戶(hù)的編號(hào) private string all_table;/所有房間座位信息 static public string clientmsg=; public fiveserver() initializecomponent(); private void button1_click(object sender, eventargs

10、e) try if (txtport.text = ) messagebox.show(請(qǐng)先填寫(xiě)服務(wù)器端口!, 提示); return; int32 port = int32.parse(txtport.text); mainsocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp); ipendpoint localep = new ipendpoint(ipaddress.any, port); mainsocket.bind(localep);/將socket綁定到本地終接點(diǎn)上

11、mainsocket.listen(5); mainsocket.beginaccept(new asynccallback(onclientconnect), null);/開(kāi)始一個(gè)異步操作接受客戶(hù)的連接請(qǐng)求 updatecontrols(true); catch (socketexception se) messagebox.show(se.message, 提示); private void fiveserver_load(object sender, eventargs e) try txtip.text = dns.resolve(dns.gethostname().addressl

12、ist0.tostring(); updatecontrols(false); catch (exception exc) messagebox.show(exc.message, 提示); private void button2_click(object sender, eventargs e) closesockets(); updatecontrols(false); updateclientlistcontrol();/更新客戶(hù)列表 private void button5_click(object sender, eventargs e)/發(fā)送 if (clientlist.ite

13、ms.count != 0) try string msg = txtsendmsg.text; msg = # + msg + n; byte bydata = system.text.encoding.utf8.getbytes(msg); socket workersocket = null; for (int i = 0; i workersocketlist.count; i+) workersocket = (socket)workersocketlisti; if (workersocket != null) if (workersocket.connected) workers

14、ocket.send(bydata); catch (socketexception se) messagebox.show(se.message, 提示!); else messagebox.show(沒(méi)有在線客戶(hù),不能發(fā)送信息, 提示); private void button4_click(object sender, eventargs e) closesockets(); close(); private void button3_click(object sender, eventargs e) txtrecvmsg.clear(); /關(guān)閉socket void closesoc

15、kets() if (mainsocket != null) mainsocket.close(); socket workersocket = null; for (int i = 0; i workersocketlist.count; i+) workersocket = (socket)workersocketlisti; if (workersocket != null) workersocket.close(); workersocket = null; /更新客戶(hù)列表 private void updateclientlistcontrol() if (invokerequire

16、d) clientlist.begininvoke(new updateclientlistcallback(updateclientlist), null); else updateclientlist(); void updateclientlist() clientlist.items.clear(); for (int i = 0; i 4) substr = receivemsg.substring(0, 4); if (substr = #)/聊天信息 messagebox.show(sfdsdfdf); string tmp1 = ; tmp1 = receivemsg.subs

17、tring(4); string s = tmp1.split(new char , ); string clientmsg = 客戶(hù) + socketdata.clientnumber + + s0 + 說(shuō): + s1; appendtoricheditcontrol(clientmsg); if (substr = %)/退出信息 string tmp1 = ; tmp1 = receivemsg.substring(4); sqlconnection conn = new sqlconnection(server=localhost;uid=sa;pwd=123;database=log

18、in_user); conn.open(); string ke_name = tmp1.tostring().substring(0,tmp1.tostring().length-3) ;/tmp1.tostring()含回車(chē)換行rn0符需去掉 string updata11 = update userinfo set userinserver=0,userhouseid=0 where username= + ke_name + ; sqlcommand comm11 = new sqlcommand(updata11, conn); comm11.executenonquery(); c

19、onn.close(); string outmsg = 客戶(hù) + socketdata.clientnumber + 已經(jīng)斷開(kāi)連接!n; appendtoricheditcontrol(outmsg); workersocketlistsocketdata.clientnumber - 1 = null; updateclientlistcontrol(); / disconnect(); if (substr = )()()/房間信息 string tmp1 = ; tmp1 = receivemsg.substring(4); string s = tmp1.split(new char

20、 , ); all_table = all_table + , + s0 + , + s1 + , + s2 + , + convert.toint16(s3).tostring(); /*向所有用戶(hù)的客戶(hù)端大廳發(fā)送座位信息 for (int i = 1; i = clientnum; i+) sendtoclient()()( + all_table, i); sqlconnection conn = new sqlconnection(server=localhost;uid=sa;pwd=123;database=login_user); conn.open(); string hous

21、e_id = convert.toint16(s1).tostring();/用戶(hù)選擇的房間號(hào) string updatehouseid = update userinfo set userhouseid= + house_id + where username= + s0.tostring() + ; sqlcommand comm11 = new sqlcommand(updatehouseid, conn); comm11.executenonquery(); /*判斷一個(gè)房間同桌是否已經(jīng)兩人 string selectstr = select * from userinfo where

22、 userhouseid= + house_id; sqlcommand da = new sqlcommand(selectstr, conn); sqldatareader myread = da.executereader(); int n = 0; string ,a=new string2,2 ; int online=0; while (myread.read() online = convert.toint32(myread.getvalue(5).tostring();/在線 if (online = 1) an,0 = myread.getvalue(4).tostring(

23、);/ip an,1 = myread.getvalue(2).tostring();/客戶(hù)號(hào) n+; if (n = 2) sendtoclient(! + a0,0, convert.toint16(a1,1);/向一個(gè)房間的用戶(hù)發(fā)對(duì)方ip sendtoclient(! + a1, 0, convert.toint16(a0, 1);/向一個(gè)房間的用戶(hù)發(fā)對(duì)方ip /* conn.close(); if (substr = )/注冊(cè)信息 string tmp1 = ; tmp1 = receivemsg.substring(4); string s = tmp1.split(new char

24、 , ); string strsql; strsql = insert into userinfo (username,userpwd,useremail,userpicture) values ( + s0.tostring() + , + s1.tostring() + , + s2.tostring() + , + s3.tostring() + ); string us = null; us = s0; string selectstr = select * from userinfo where username= + us.tostring() + ; sqlconnection

25、 conn = new sqlconnection(server=localhost;uid=sa;pwd=123;database=login_user); conn.open(); sqlcommand da = new sqlcommand(selectstr, conn); sqldatareader myread = da.executereader(); if (myread.read() messagebox.show(s0 + 帳號(hào)已經(jīng)被注冊(cè)); else try myread.close(); sqlcommand updatauser = new sqlcommand(strsql, conn); updatauser.executenonquery(); / messagebox.show(成功 + 4 + us.tostring()+ 。); string clientmsg3 = + us.tostring(); sendtoclient(clientmsg3, clientnum); catch / messagebox.show(帳號(hào)創(chuàng)建失敗); string clientmsg0 = ; sendtoclient(clientmsg0, clientnum); conn.close

溫馨提示

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

評(píng)論

0/150

提交評(píng)論