同步tcp编写网络黑白棋

上传人:wt****50 文档编号:34834067 上传时间:2018-03-02 格式:PPT 页数:26 大小:1.18MB
返回 下载 相关 举报
同步tcp编写网络黑白棋_第1页
第1页 / 共26页
同步tcp编写网络黑白棋_第2页
第2页 / 共26页
同步tcp编写网络黑白棋_第3页
第3页 / 共26页
同步tcp编写网络黑白棋_第4页
第4页 / 共26页
同步tcp编写网络黑白棋_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《同步tcp编写网络黑白棋》由会员分享,可在线阅读,更多相关《同步tcp编写网络黑白棋(26页珍藏版)》请在金锄头文库上搜索。

1、同步TCP编写C/S版网络黑白棋游戏程序,组员:江信辉,康兴见,马超,课题任务及要求,设计目的:学习应用程序协议的设计。学习较复杂程序的设计和调试方法。学习服务器管理多个玩家(游戏大厅)同时游戏的方法。设计要求:(1)服务器同时服务多桌,每桌允许两个玩家通过Internet对弈。(2)对每人落子时间进行计时,如果超出时间范围,则宣告该人失败。(3)程序能够根据游戏规则判断获胜方。(4)玩家自由选择坐在哪一桌的哪一方。如果两个玩家坐在同一桌,双方应都能看到对方状态,两个玩家均单击“开始”按钮后,游戏才开始。(5)玩家进入游戏大厅后,可以看到各个游戏桌两边是否有人的情况,而且可以决定是否坐到某个座

2、位上,坐到座位上后,才能看到游戏桌上的棋盘。玩家可以随时离开座位,离开座位后服务器及时更新游戏大厅信息。,小组任务分配情况,江信辉:负责c/s办黑白棋服务器界面设置负责服务器代码设计及编写 康兴见:负责游戏大厅的界面设计负责游戏大厅的代码及编写 马超:负责黑白棋桌界面设计负责黑白棋桌界面设计,WINDOWS SOCKETS网络编程接口,Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口 ,与协议无关,较常使用的是TCP/IP协议 windows sockets通信示意图,Client/Server结构(客户端/服务器模式),Client/Server结构特

3、点:将任务合理分配到Client端和Server端来实现可以充分利用两端硬件环境的优势充分发挥客户端的处理能力 ,客户端响应速度快 降低了系统的通讯开销适于在用户数目不多的局域网内使用 Client/Server结构缺点只适用于局域网 这种方式远程访问需要专门的技术 对系统进行专门的设计来处理分布式的数据,系统总体分析,首先启动服务器,进行服务器的配置,进行正确的服务器配置和数据库连接并测试成功后,开启服务器。在客户端,该玩家能够通过客户端登入到该游戏大厅或者注册账号,然后直接与系统服务器交互,数据传输。在游戏大厅可以看到当前的游戏桌数,并人已进入一桌的任意为选角色,在有桌面双方能看见对方的状

4、态,点开始开始游戏。本系统支持的活动列表如下:开启服务器;用户注册;用户登陆系统;用户与系统交互,进行数据传输;用户战绩记录;用户进行游戏;,系统功能模块,服务器端功能模块,服务端功能简介:开启服务器功能模块:开启服务器,使服务器处在正常工作状态,随时等待响应客户端的连接和发送等请求。停止服务器功能模块:停止服务器,停止一切数据的接受与发送。配置服务器功能模块:此功能模块具体实现的功能有限制同时游戏的人数上限和限制同时开出游戏桌数的上限,以保证服务器能够正常运行。关闭服务器功能模块:关闭服务器。,服务器端功能模块,服务器端原理与设计 : 服务器可以接受和监听多桌的多人的数据传输和服务响应请求

5、并能接受连接服务器的请求 设计如下:创建一个线程专门用于监听玩家的连接请求 建立连接后创建一与该玩家对应的线程,接收发送相应信息,并提供相应的服务,玩家退出游戏室时,其对应的线程自动终止。 玩家与服务器之间通信的不同命令:Login:玩家请求进入游戏室 Logout:玩家退出游戏室 SitDown:玩家坐到某个小房间的游戏桌座位上 GetUp:玩家离开小房间的游戏桌座位,回到游戏室 Start:表示玩家已经单击【开始】按钮,服务器端功能模块,1.创建一个线程专门用于监听玩家的连接请求 建立了一个TcpListener,并且调用了TcpListener.Start(),接着启动了一个线程,循环的

6、接受客户端的请求并建立对应的TcpClient对象 localAddress = addrIP0;myListener = new TcpListener(localAddress, port);myListener.Start();ThreadStart ts = new ThreadStart(ListenClientConnect);/监听客户机建立连接,并创建线程Thread myThread = new Thread(ts);myThread.Start(); private void ListenClientConnect() ,服务器端功能模块,2. 建立连接后创建一与该玩家对应

7、的线程,接收发送相应信息 建立了一个ListenClientConnect方法,在其中生成一份玩家信息,并创建玩家与服务器的通信服务线程 threadReceive调用ReceiveData方法进行数据传输提供服务 User user = new User(newClient); userList.Add(user);ParameterizedThreadStart pts = new ParameterizedThreadStart(ReceiveData);/接收玩家与服务器间数据传输,并创建相应线程Thread threadReceive = new Thread(pts); threa

8、dReceive.Start(user); private void ReceiveData(object obj) ,服务器端功能模块,玩家与服务器之间通信的命令在调用ReceiveData方法进行数据传输提供服务,服务器与客户机之间通信命令Login:Logout:SitDown:GetUp:Start:服务器通过命令与提供相应的服务给客户机 private void ReceiveData(object obj) User user = (User)obj; TcpClient client = user.client; service.SetListBox(string.Format(

9、来自0:1, user.userName, receiveString); string splitString = receiveString.Split(,);switch (splitString0) case “Login”:/登录到游戏室 case “SitDown”:/进入游戏桌面case “Start”:/玩家开始游戏 case “SetDot”:/玩家已走了一子case “GetUp”:/玩家离开游戏桌 case “Logout”:/玩家退出游戏室default: break; ,服务器端功能模块,界面操作介绍最大的一个白方框listbox显示玩家和服务器通信的具体内容在右下角

10、textbox输入最多的玩家人数和最懂得游戏桌数点击右下角输入完后点击”启动服务“按钮启动服务点击右下角“停止服务”按钮停止服务服务器界面如图所示:,服务器端功能模块,服务器运行及分析在:1:51888下监听 ,进入一个用户,与服务器交互信息Start0,0一用户开始游戏Start0,1再一用户开始游戏下面是下子信息,游戏登录/大厅功能模块,大厅功能综述:1.注册功能模块:为用户提供注册功能,注册了账号的用户方可登录游戏大厅进行游戏。2.登录功能模块:系统可以验证用户信息,以注册的用户可以通过登录模块进入游戏大厅。3.文字传送功能模块:为用户提供简单的文字交流平台。,客户端原理与设计,客户端与

11、服务器连接成功后,需要创建一个接收线程,用于接收服务器发送的信息。在接收线程中,客户端收到服务器发送的字符串信息后,需要解析字符串的含义,并决定需要的操作。另外,客户端还需要根据服务器发送的命令,及时更新客户端程序的运行界面。,客户端从服务器接收信息,1.Sorry:服务器游戏室人员已满。客户端接收到此命令后,直接结束接收线程,并退出整个客户端程序。2.Tables:各小房间的游戏桌情况。客户端接收到此信息后,需要计算对应的桌数,并以CheckBox的形式显示出各桌是否有人的情况,供玩家选择座位。3.Sitdown:玩家坐到某个小房间的游戏桌上。客户端接收到此信息后,需要判断是自己还是对家,并

12、在窗体中显示相应信息。,客户端从服务器接收信息,4.GetUp:玩家离开小房间的游戏桌,回到游戏室。客户端收到此信息后,需要判断是对家离座了还是自己离座后,如果对家离座,显示一个对话框;如果是自己离座,除了设置对应的标志外,不做其他任何处理。5.Lost:对家与服务器失去联系。由于游戏无法继续进行,直接从游戏桌返回游戏室即可。6. StopServer:服务器停止服务,程序要立即结束。,客户端从服务器接收信息,登陆是客户端程序的基本组成部分。用户输入正确的、有效的、匹配的昵称和密码后,点击登陆按钮,系统会弹出登陆后的窗体 匿名:输入用户名 本机:输入的是本机ip; 服务器:输入服务器的ip 地

13、址 下面的panel现实登陆后的 游戏大厅 listbox显示进入游戏室的 信息 本机可以不输入ip地址,客户端从服务器接收信息,登陆成功后就现实游戏大厅的桌数和正在进行的游戏得情况下面的listbox现实与游戏室的交互信息,黑白棋界面功能模块,黑白棋界面功能简介:游戏功能模块:本系统核心模块,用户通过该模块与其他用户 进行对弈。战绩记录功能模块:记录各用户的胜负场次。,黑白棋界面功能模块,黑白棋界面原理与设计 :客户端与服务器连接成功后,创建一个接收服务器信息的线程。界面记录玩家所进行的一系列相关操作设计如下:创建一个线程接收服务器的信息建立一个界面对玩家的操作进行演示,并对相关操作信息进行

14、文字说明客户端从服务器接收到的信息:Start:表示玩家已经单击【开始】按钮 Out:对家逃跑,玩家获胜Win:玩家获胜Lost:对家与服务器失去联系。由于游戏无法继续进行,直接从游戏桌返回游戏室即可,黑白棋界面功能模块,1.创建一个线程接收服务器信息public Service(ListBox listbox, StreamWriter sw) this.listbox = listbox; this.sw = sw; public void SendToServer(string str) try sw.WriteLine(str); sw.Flush(); catchSetListBox

15、(发送数据失败); ,2.创建一个黑白棋游戏界面private void pictureBox1_MouseDown(object sender, MouseEventArgs e) /i代表行,j代表列,y轴为列,x轴为行 int x = e.X / 40; int y = e.Y / 40; /黑白棋游戏规则表述 if (!(x 8 | y 8) if (gridx - 1,y - 1 = DotColor.None) /int color = gridx - 1, y - 1; service.SendToServer(string.Format(SetDot,0,1,2,3, tableIndex, x - 1,y-1, side); ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号