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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、#實現(xiàn),通過對scoket技術的理解,在此基礎上建立服務器與多客戶端的連接,利用多線程處理多個客戶端之間的信息。 通過對軟件的編寫,加深對以上技術的理解和掌握。大廳五子棋的開發(fā)能夠是朋友們不見面也能下棋和聊天。關 鍵 字多線程;流套接字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章 項目概述1.1 項目背景當前網(wǎng)絡上流傳的五子棋游戲功能并不盡善盡美,其中最主要的問題就是人機對戰(zhàn)和網(wǎng)絡對戰(zhàn)

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

7、2. 8 游戲界面3圖2. 6 游戲界面1圖2. 7 游戲界面2圖2. 8 游戲界面3第3章 構造階段3.1 核心代碼3.1.1 服務端 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;/客戶的編號 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(請先填寫服務器端口!, 提示); 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綁定到本地終接點上

11、mainsocket.listen(5); mainsocket.beginaccept(new asynccallback(onclientconnect), null);/開始一個異步操作接受客戶的連接請求 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();/更新客戶列表 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(沒有在線客戶,不能發(fā)送信息, 提示); private void button4_click(object sender, eventargs e) closesockets(); close(); private void button3_click(object sender, eventargs e) txtrecvmsg.clear(); /關閉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; /更新客戶列表 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 = 客戶 + socketdata.clientnumber + + s0 + 說: + 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()含回車換行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 = 客戶 + socketdata.clientnumber + 已經(jīng)斷開連接!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(); /*向所有用戶的客戶端大廳發(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();/用戶選擇的房間號 string updatehouseid = update userinfo set userhouseid= + house_id + where username= + s0.tostring() + ; sqlcommand comm11 = new sqlcommand(updatehouseid, conn); comm11.executenonquery(); /*判斷一個房間同桌是否已經(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();/客戶號 n+; if (n = 2) sendtoclient(! + a0,0, convert.toint16(a1,1);/向一個房間的用戶發(fā)對方ip sendtoclient(! + a1, 0, convert.toint16(a0, 1);/向一個房間的用戶發(fā)對方ip /* conn.close(); if (substr = )/注冊信息 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 + 帳號已經(jīng)被注冊); 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(帳號創(chuàng)建失敗); string clientmsg0 = ; sendtoclient(clientmsg0, clientnum); conn.close

溫馨提示

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

評論

0/150

提交評論