网络编程五子棋_第1页
网络编程五子棋_第2页
网络编程五子棋_第3页
网络编程五子棋_第4页
网络编程五子棋_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TCP/IP网络编程实验指导书 赵宝在线五子棋一、实验目的和任务1理解CSocket编成原理。2、掌握简单图形绘制。3、综合运用所学知识解决问题。二、实验内容实现一个在线五子棋游戏,具有功能如下 能够实现网络两人对战能够播放背景音乐能够实现多人查看两人的对战情况 能够保存棋局、重新打开棋局三、实验步骤实验1步骤1建立基于单文档的应用程序,参考界面如下2、添加连接对话框113. 实现监听类CListenSocket4. 实现客户端类CClientSocket5. 在文档类里添加相关变量6. 在试图类里进行绘制和各种数据操作函数四、思考问题1写出判断输赢的代码?2、数据是如何发送的?3、接受的数据

2、是如何进一步操作的4、 谈谈你的程序设计思路 !下面的代码仅供参考,存在一定冋题,请仔细检查1 stdafx.h中的状态定义CRIDSPACE 39ItdeFlneIH_CHESS9ftdeFineSURREHD1tdFineHEUGAliE2HEWVES9ttdfineHEWHUUttdeFine LIHKREQUE$T_HD 52、客户端Socket类的接收数据处理,注意在实验文件中添加#i nclude MyFiveDoc.h#i nclude MyFiveView.hvoid CClientSoclet:OnReceiue(int nE厂广叶販硒収页InCtiess(buffer 1

3、,buFFer2J;else lFn_bTurii = FALSE;i.F 5_pUi 削n f ol o f-1)对方投降 AfxHessageBox(M黑方疫律“);elseAFxl1essageBox(白方投障);else lF(buFor0 =- NEUCAME)int res = AfxNes&ageBox(对方馆重新下,同意卩川町怔SHD): iF(rcs = IDVES)m_pm_bT urn = TRUE; m_pView-InitChessBoard(); bufferBJ-NEWVES;Send(buffer,slzeof(buFFer);in pUiew-Mnvalida

4、te ( ) j else|buffer0 = HEW_NO ;Send(buffer,size of(buffer);else if(buffer0 = NEWVES)m_t)Turn FALSE; m_pUiew-InitChessBoard(): m_pUiew-Inualidate();else iF(bufferO - HEW_忡() ftfxllessageBox对方不同竜重新开始,J: else ifbuffer0 = LINKREOUEST_MD)Reled5eClicntSocket():CSocket:OnReceiue(nErrorCod?l;3、监听Socket的响应连

5、接请求处理uaid CListenSocket::OnRccept(int nErrorCad?)ra_t)Link)Process Connect (res); _elsem_pUiew-ProcessConnect(IDNO);CSQcket:OnAccept(nErrarCode);4、在CMyFiveApp类添加代码,注意包括头文件Afxsock.hBOOL CMFiuHpp:;lnitInstance()iF C!AfxSocketInit()PFkNecsageBtJM(b失败初始化);return FALSE;5、视图类设置数据成员和包含头文件4tinelude ListenSo

6、cket .httinclude TlientSocket.hlkttinclude midi -hclass CMyFiveUiew : public CUieupublic :int mnChessStatusBOARDSI2CBOARDSIZC; int n_nColor;/棋子颜色DUOL n_bLink;BOOL m bTurn;Point n_ptOrg;Ctlidi n nidi;CLlstenSocket *n_pListenSocket;CClientSocket *n_pClientSocket;视图类构造函数初始化CMyFiueUiew::CMyFiueUiewf)m_b

7、lurn = FALSE: m_bLinli = FALSE; m_pt0rg_x=3 0; m_pt0rg_y=3 0;% nColor=B;InitChesBoard(); m_pClientSocket = NULL; n_pListnSocket = HULL;6、视图类中定义的常用的成员函数和代码如下void CHyFi*jeUie w: :OnLis ten()if (m tjl-ink)if (jn_plitenocket)RelpaseListenSocketf): n_pListenSocket = nu CListenSocketCthisJ; n_pListenSocke

8、t-Create(; if (Tin_pLi5tenSoclLi5ten() RelaseListenSoek&t();摻MessageBoxC*无法创建游戏严片return;elseMtssageBoKt*戏刨建咸功等特其他玩家-):void mFiveUiew;OnMusicStartf) n midi .OpenCbgMJsic.nid); n_nidi-Play ();y _void CIlyFi*jeUiew: :0nl1usicStop()n_nidi-Stop ();uoid:OriConnectC)Create();CLiinkDlg dig;if (dlg.boHodlalO

9、 = TDOK)Connect(dlg _m_ipAddress,5PM)p! :pn_bLink -TKUE; n_nColor - -1;uoid CllyFiopUieu: Drah9SBoard(CDC *pDC)CPoint ptTenp(n_ptOrg);绘制砂段For(lnt 1bB;1HoueTo(ptIeiip);pDC-LineTo(ptTenp .x + (BOftR&IZE-1MCRIDSPflCEsptTenip.i/); ptTomp.y = ptT亡mp.y+GRIPSPACE;方绘制唏段ptTenp雄-n_ptDrgk;ptTenp.y = n_ptOrg.yi

10、 for(int j-a;JHoueTo(ptTemp):pDC-LineTo(ptTerap.k pptremp.yCBOARDSlZE-lIMjRIDSPACE); ptJenp .x = ptTenp .x + GRIDSPACE;方绘制棋子CRect rect;eBrush WhiteRriJ5h(RGB(255,Z55, B);CBrush blackBrush(RGB(0tD.0);For(l=a;lBDARDSIZE;l+)forCj = 0;j Select Objeet(fcbLackBrush); pDC-Elllpse(&rect);if ( n_nChessStatus

11、i j -1)4-pDC-$electDbject(&whlteBrush); pDC-Ellipse(faect);int CMyFiueUlew: :IJTcRct(int 1, int jr CR色匕 1: &rect)*rect.lert= n ptOrg嚳GRIDEPHCE-CRIDSPHCE/Z? rect.right- rect.left+CHIDSPftCE; rect-.top -m_ptOrg_ + j*CRIDPftCE-CftIDSPftCE/2;_botton =rect,top +CR1DSPfiCE;return 1;uoid CMtFiu&Uieu: :OnLE

12、)u ttonD oun U l NT riFlags t CPoint paint)if(n bTurn = FALSE) return;int i=(pointx-n_ptOrg.x/2)/GRI&SPACE; int j-(pointH-n_ptOrg/2)/GRIOSPACE;|j15 |i0| ji) return;if(n_nChessStatusijt=&)return;m_nChessStatusij=n_nColor;int buffer3|=; m_pClientSocket-Send (bu Ff er ,is1zpoF( buffer); mbTurn = FALSE

13、iInualidate(J;cuieu; OrLButtonDovin(nFlags , point);BOOL CHuFiveUiew:IsUin(int x1, intint xMin = nax(k1 a) int xlla冥=ndnjTl廿4门出);Int yHin=iid)i復1一4)yMax=min(y1+ ;Int sun1-8;/?x dieectionfor(int x=xHin;x=Kria?4-4;x+)sum1 - 0;for(int i=sc;sun1 = sumi 廿 m_nCriessStatusijj1;if(sun1=5 |sum1=-5) return 1;

14、y dieectionfor (in t (|=yMin ;y=yM3X-U;y+)sum1 = 0;forfint i=y;i/71eft top to right bottomfor(x = Mblin,y-yMin;KC=MMaK-U & y=yNax-ii;x+ ,y+)sun1 = 0;int i,j;f or Ci=j F j=y ;ljc+&fcj y+5;l+* j+) sunl = quid 4 nCtiesstatusi j;iF(suii1 =-5 | |sum1=-5) return 1;/left botton to rigtit topfor (x = xMin ,

15、y=yHaK;K=ytlin+ii ;x+ ty)Uh1 = 0;int irj;f or (i-K f j -y ;ix-i-5My-5 ;i+* v j一) un1 = ?un1 + m_nChDS5tatu5ij; if(5Um1= = | | suin1=-5)return 1;return 0;OOOL CMpFiuellieu:Process Co nnctf int typif(type = IDVES)/代養按受请求,准备下棋if(m_pllentSocket)RelDJseClientSockt(): n_pliEntSocket = new CClientSocketCth

16、is); iF( fnpListenSocket- Accept (*ni_pCLientSocket) n_bTurn = TRUE;iwbLdnk = TRUE;else if= IDNO)CClientSocIcet temp( this);if(mpListenSocke Accept(temp) int buf3 = LIHKREQIIEST.HOV15T15: tenp.Snd(bufasizeof(3);return 1;uoid CMyFiueUieu:RelpaseClleotSocket()if(n_pClientSocket)void CMyriveUiaw:ReleageListenSocket(if(npListenSQGket)-delete mpListenSocket; mpListenSocket = NULL;uoid CMyFiueUieu:0if(n_bLink)mbTurn = FALSE;lilt HuFFer3= ; n_pciientSocket-Spnd(buffer,sieof(buFFer); IlMg色Box你认输了;void cnyFiueUiew:zlnChessfint x, int 岁)对方发送的棋子位置信息n_0Turn = TRUE;n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论