版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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.h"void CClientSocl<et:OnReceiue(int
3、 nE厂广叶販硒収页<int buffer3;Receiue(tuffer,sizeof(buffer )1; iF(buffer町 IN_CHESS) n_pUiew->InCtiess(buffer 1 ,buFFer2J;else lF<bufferO = SURREHD) n_pUiew>n_bTurii = FALSE;i.F 5_pUi 削n f ol o f-1)"对方投降 AfxHessageBox(M黑方疫律“);elseAFxl1essageBox("白方投障");else lF(buFor0 =- NEUCAME)&l
4、t;int res = AfxNes&ageBox("对方馆重新下,同意卩'川町怔SHD): iF(rcs = IDVES)m_p<Jiew->m_bT urn = TRUE; m_pView->InitChessBoard(); bufferBJ-NEWVES;Send(buffer,slzeof(buFFer);in pUiew-Mnvalidate ( ) j else|buffer0 = HEW_NO ;Send(buffer,size of(buffer)>>>else if(buffer0 = NEWVES)< n
5、»_pUiew->m_t)Turn FALSE; m_pUiew->InitChessBoard(): m_pUiew->Inualidate();else iF(bufferO - HEW_忡() ftfxllessageBox对方不同竜重新开始,J: else if<buffer0 = LINKREOUEST_MD)< AfxllessgeBox审土方不同意你的连接请求T ; n_pUiew->Reled5eClicntSocket():CSocket:OnReceiue(nErrorCod?l;>3、监听Socket的响应连接请求处理u
6、aid CListenSocket::OnRccept(int nErrorCad?)<iF(!n_pUiew->ra_t)Link)< _ _ _ _lnt res - Af KMe5sageBox("有人想和你下棋,是否接受計J IB,YE謂町; in_pUieu>Process Connect (res); _elsem_pUiew->ProcessConnect(IDNO);CSQcket:OnAccept(nErrarCode);>4、在CMyFiveApp类添加代码,注意包括头文件"Afxsock.h"BOOL CM
7、FiuHpp:;lnitInstance()<iF C!AfxSocketInit()PFkNecsageBtJM('b失败初始化");return FALSE;5、视图类设置数据成员和包含头文件4tinelude ''ListenSocket .h"ttinclude 'TlientSocket.hlkttinclude "midi -h"class CMyFiveUiew : public CUieu<public :int mnChessStatusBOARDSI2CBOARDSIZC; int n_nC
8、olor;/棋子颜色DUOL n_bLink;BOOL m bTurn;Point n_ptOrg;Ctlidi n nidi;CLlstenSocket *n_pListenSocket;CClientSocket *n_pClientSocket;视图类构造函数初始化CMyFiueUiew::CMyFiueUiewf)<m_blurn = FALSE: m_bLinli = FALSE; m_pt0rg_x=3 0; m_pt0rg_y=3 0;% nColor=B;InitChesBoard(); m_pClientSocket = NULL; n_pListnSocket = H
9、ULL;6、视图类中定义的常用的成员函数和代码如下void CHyFi*jeUie w: :OnLis ten()<if (m tjl-ink)< _MesagcBoxt'正在下棋,无法创建斯的游戏J; return;>if (jn_pli£tenocket)RelpaseListenSocketf): n_pListenSocket = nu CListenSocketCthisJ; n_pListenSocket->Create(; if (Tin_pLi5tenSocl<Pt->Li5ten(>)< RelaseListe
10、nSoek&t();摻MessageBoxC*无法创建游戏严片return;elseMtssageBoKt*戏刨建咸功'等特其他玩家-"):void mFiveUiew;OnMusicStartf) <n midi .OpenC'bgMJsic.nid"); n_nidi-Play ();y _void CI'lyFi*jeUiew: :0nl1usicStop()<n_nidi-Stop ();uoid:OriConnectC)<if(n_pClientSocket) ReleasedintSocket();npClint
11、Socket - n&u CClientSoeket(this); njpClie ntS octet->Create();CLiinkDlg dig;if (dlg.boHodlalO = TDOK)<if(*n_pCLiefttSocket->Connect(dlg _m_ipAddress,5PM)< - -ReleaseClieintSo 匚 IceH); flfxMessageBoxC-没有连接成功T ; return :>p! «:pn_bLink -TKUE; n_nColor - -1;uoid CllyFiopUieu: Dra
12、<h9S£Board(CDC *pDC)CPoint ptTenp(n_ptOrg);"绘制砂段"For(lnt 1bB;1<BDARDSIZE;L)pDC->HoueTo(ptIeiip);pDC->LineTo(ptTenp .x + (BOftR&£IZE-1>MCRIDSPflCEsptTenip.i/); ptTomp.y = ptT亡mp.y+GRIPSPACE;方绘制唏段ptTenp雄-n_ptDrgk;ptTenp.y = n_ptOrg.yi for(int j-a;J<BDARDSIZE;j
13、)pDG->HoueTo(ptTemp):pDC->LineTo(ptTerap.k pptremp.yCBOARDSlZE-lIMjRIDSPACE); ptJenp .x = ptTenp .x + GRIDSP'ACE;方绘制棋子CRect rect;eBrush WhiteRriJ5h(RGB(255,Z55, B);CBrush blackBrush(RGB(0tD.0);For(l=a;l<BDARDSIZE;l+)<forCj = 0;j<IB0fiRDSIZE; j+JUToRect(lJ ,rect):if(n nChessStatu5i
14、j=l)pDC-> Select Objeet(fcbLackBrush); pDC->Elllpse(&rect);if ( n_nChessStatusi j -1)4-pDC->$electDbject(&whlteBrush); pDC->Ellipse(fa>ect);int CMyFiueUlew: :IJTcRct(int 1, int jr CR色匕 1: &rect)*rect.lert= n ptOrg嚳GRIDEPHCE-CRIDSPHCE/Z? rect.right- rect.left+CHIDSPftCE; re
15、ct-.top -m_ptOrg_ + j*CRID£PftCE-CftIDSPftCE/2;_botton =rect,top +CR1DSPfiCE;return 1;uoid CMtFiu&Uieu: :OnLE)u ttonD oun U l NT riFlags t CPoint paint)if(n bTurn = FALSE) return;int i=(point«x-n_ptOrg.x/2)/GRI&SPACE; int j-(pointH-n_ptOrg«/2)/GRIOSPACE;|j>15 |i<0| j<
16、i) return;if(n_nChessStatusijt=&)return;m_nChessStatusij=n_nColor;int buffer3|=<IH_CHESS,iJ>; m_pClientSocket->Send (bu Ff er ,is1zpoF( buffer); mbTurn = FALSE iInualidate(J;cuieu; OrLButtonDovin(nFlags , point);BOOL CHuFiveUiew:IsUin(int x1, intint xMin = nax(k1 a) int xlla冥=ndnjTl廿4门出
17、);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;"y dieectionfor (in t (|=yMin ;y<=yM3X-U;y+)<sum1 = 0;forfint i=y;i<y+5;l+)sun1 = mnd + n_nChessStatusx1
18、i;if(sun1=5 |sum1=-5) return 1;>/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 ;l<jc+&&fcj <y+5;l+*» j+) sunl = quid 4 nCtiess£tatusi j;iF(suii1 =-5 | |sum1=-5) return 1;/left botton to rigtit
19、 topfor (x = xMin ,y=yHaK;K<=HMaw-ii && y>=ytlin+ii ;x+ ty)Uh1 = 0;int irj;f or (i-K f j -y ;i<x-i-5M<j>y-5 ;i+* v j一) un1 = ?un1 + m_nChDS5£tatu5ij; if(5Um1= = | | suin1=-5)return 1;>return 0;OOOL CMpFiuellieu:Process Co nnctf int typ>'if(type = IDVES)/代養按受请求,准
20、备下棋if(m_p£llentSocket)RelDJseClientSockt(): n_p£liEntSocket = new CClientSocketCthis); iF( fnpListenSocket-> Accept (*ni_pCLientSocket) < - -ReleaseCllentSocket();>n_bTurn = TRUE;iwbLdnk = TRUE;else if= IDNO)CClientSocIcet temp( this);if(mpListenSocke >Accept(temp>)< int buf3 = LIHKREQIIEST.HOV15T15: tenp.S«nd(bufasizeof(3);return 1;uoid CMyFiueUieu:RelpaseClleotSocket()<if(n_pClientSocket)< delete m_pClientSocket; m_pCliantSocket 三NULL:>void CMyriveUiaw:ReleageListenSocket(>if(npListenS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年南医科大学第二附属医院招聘考试试卷真题
- 2025年福建福州地铁集团有限公司招聘考试试卷真题
- 海安市实验中学外迁工程施工图设计招标文件
- 2026年小学六年级英语第二学期期末考试卷及答案(八)
- 中间代码生成2
- 梅毒苄星青霉素规范治疗
- 财务报表分析与估值 课件 13估值
- 微创术中磁共振引导手术
- 译林版英语六年级下册Unit8检测卷
- (2026年)护理分级试卷及答案
- 2026年湖南省政工专业职称考试(中国近现代史)练习试题及答案
- 2026年云南交投集团曲靖管理处分公司收费员等岗位招聘(招募)(140人)考试备考试题及答案解析
- 2026年天津市公安医院医护人员招聘笔试备考试题及答案解析
- 分子育种与基因组选择技术开发
- 部编版语文三年级下册写字指导课教案
- GB/T 43449-2023法庭科学毒物分析实验室质量控制规范
- 印刷服务投标方案(技术方案)
- 【地理】2023年高考真题江苏卷(解析版)
- 《上令封德彝举贤》中考文言文阅读试题2篇(含答案与翻译)
- GB/T 12459-2005钢制对焊无缝管件
- 偏光片气泡不良改善课件
评论
0/150
提交评论