还剩6页未读,继续阅读
文本内容:
青岛理工大学琴岛学院设计报告课题名称网络五子棋系统学院青岛理工大学琴岛学院专业班级计算机科学与技术10-2学号20100301031学生王莹指导教师侯世中青岛理工大学琴岛学院教务处2013年01月04日学生王莹指导教师侯世中课题名称网络五子棋系统设计时间2012/12/24-2013/1/4设计地点8教205设计目的
1、通过本次课程设计,熟练掌握__语言C#和__环境.NET
2、加深对C#软件的理解,训练编写程序的良好习惯
3、培养良好的程序设计风格(模块划分、接口设计、函数和变量命名规则)和习惯(程序备份、版本更新与控制),提高软件测试、调试的能力与技巧
4、提高团队的合作精神设计内容
一、项目背景进入21世纪,随着计算机网络技术和Internet的不断发展,网络游戏越来越受到广大群众的喜爱,它不仅丰富了人们的业余生活,也增强了人们的思维能力,提高了智力,人们的娱乐方式也随之发生了深刻的变革由于我对五子棋游戏和网络编程非常感兴趣,所以我的设计报告的题目选为“网络五子棋系统”网络五子棋作为网络游戏的代表,以其简单的游戏规则,深刻的智慧深受广大人们的喜爱同时网络技术使得这一古老的游戏散发出新的活力,更加促进了人类文化的传承网络五子棋适用面广,老少皆宜,是一种对提高人们智力,提高人们创新能力有着极好帮助的游戏因此网络五子棋得以迅速的传播当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是网络对战不能够一起实现,所以我们决定__一个能够进行网络对战的五子棋系统
二、设计目的为了更深入地理解TCP协议的具体应用编程技巧,本设计使用功能强大的VS2010__工具和C#__语言,__出一个拥有自己特色的五子棋程序,其中VS2010是一个能开放代码的__工具,基本C#的扩展平台就该五子棋程序来讲,它只是一个框架和一组服务,用于通过插件,组件,控件构建__环境通过本次课程设计,希望可以熟练掌握__语言C#和__环境.NET从而加深对软件工程以及C#的理解,训练编写程序的良好习惯,培养良好的程序设计风格(模块划分、接口设计、函数和变量命名规则)和习惯(程序备份、版本更新与控制),提高软件测试、调试的能力与技巧,提高我们的团队合作精神
三、设计网络五子棋系统是根据 C/S结构(Client/Server结构)设计的,是大家熟知的客户机和服务器结构,它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,对应的优点就是客户端响应速度快C/S模式的结构拓扑图如下图1C/S模式的结构拓扑图一总体设计
1、系统总体设计思想本系统的功能是能够实现一个在网络上供客户进行对战的五子棋网络游戏,客户只要登陆到服务器上,并且服务器处于启动状态,就能选择任何其它用户已创建好的游戏或自行创建一个游戏桌,进行五子棋对战游戏在C/S模式游戏中,Server一般提供所有用户的全局信息,并能提供客户之间的信息转发,客户之间的通讯必须通过Server进行因为在多个客户能够连接到同一台Server上,所以Server必须用Thread负责每个用户的通讯和消息处理服务端程序通过一个Thread监听客户端的连接,一旦客户连接,为该客户建立连接并启动一个特定的客户thread,利用该连接不断从客户读取数据,实现客户和服务器或者客户与客户之间的信息的交互
2、游戏功能要求1服务器可以同时服务多张游戏桌,每桌允许两个玩家通过Internet对弈2允许玩家自由选择坐在哪一桌的哪一方如果两个玩家坐在同一桌,双方应能看到对方的状态两个玩家均单击开始按钮后,游戏才开始3每当玩家走完一步棋子后,棋盘会重新的绘制,并且在游戏室界面上显示该那方下棋,当检测到相当颜色的棋子已经相邻出现的个数达到了五个或者三个,即游戏结束4同一桌的玩家可以聊天
3、系统设计总结构图和流程图图2系统总体结构图#0;#0;开启客户端,填入用户名和获取本机IP地址客户端初始化是否知道服务器IP连接服务器是搜索服务器,选定服务器否是否可连接是否开启服务器,初始化人数是否满连接服务器拒绝连接是发送同步信息否更新同步信息发送同步信息发送开始信号是否两个都想开始游戏发送开始信号等待否发送游戏开始是游戏开始发送游戏开始信号走棋转发信息发送走棋信息发送走棋信息是否赢发送赢信号,结束游戏,初始化部分是获取赢的ID发送赢的ID发送客户端信息等待接收走棋信息否是否是自己IDWIN,初始化部分是LOSE初始化否图3系统总流程图
4、服务器端基本的Socket通信服务器端主要需要确定端口,同时绑定端口进行监听,一旦又从客户端发来的连接请求就建立连接并收发信息其基本处理流程如下图图4SOCKET通信服务器处理流程客户器端客户端的Socket通信模型与服务器端相似,同样都是初始化Socket之后通过Socket来建立连接,收发数据区别在于客户端是发送连接请求,而服务器端是接收连接请求如下图图5SOCKET通信客户端处理流程图
(二)详细设计
1、规则
(1)下棋规则在一方落子之前,另一方必须等待为实现这一功能必须使双方的棋盘交替处于激活(true)状态在双方网络未连接成功以前,双方的棋盘均处于禁止(False)状态,不接受落子操作一旦,网络连接成功,持黑子的一方率先激活本方棋盘此时,黑方棋盘可以接受落子操作用户用鼠标在棋盘的相应位置上__左键,程序捕获鼠标在棋盘上的__位置,并计算出所处行列,在相应位置上显示一枚黑色棋子自此,黑方操作结束,棋盘再次被禁止然后,将落子的行列信息传送给白方白方接收到黑方的落子信息后,先在本方棋盘的相应位置上显示一枚黑色棋子然后,再激活本方棋盘进行落子操作落子后,禁止本方棋盘,在发送棋子信息给黑方双方重复上述操作直到此局结束为止
(2)胜负规则胜负分为两种,第一种,率先在棋盘上形成横向、竖向或斜向上连续的相同颜色的五个棋子的一方为胜第二种,一方逃跑或因网络出现异常断开,则另一方获胜
2、客户端设计
2.1登录页面设计如下图图6登录界面
(1)设置功能用户名设置和服务器IP地址设置,本机IP地址可自动获取用户根据自己的需要填写用户的昵称,并且填写服务器的IP地址,如果本机是服务器则不需要填写服务器IP地址,直接__登陆按钮即可登录,若本机不是服务器需要填写相应的服务器IP地址
(2)登录功能在服务器框内输入服务器端IP地址,以及本人昵称,__登录按钮此时客户端开始检测是否可以与服务器端连接如果可以,则进入游戏室,同时向客户端发送用户信息,得到信息后,服务器端开始循环检测该用户是否坐到某游戏桌上获取每桌玩家情况及昵称字符串每桌格式在哪桌有人SitDown,选择的黑子还是白子服务器端检测到信息后,会将信息显示出来并发送到游戏大厅下边的信息框里如果不可以,则会显示连接失败
2.2游戏室界面设计如下图图7游戏室界面
(1)切换功能实现三子棋与五子棋的切换功能,并在窗口的标题处显示玩家玩的是三子棋还是五子棋,当进入游戏室时,默认的是三子棋当处于一桌的两个用户登录成功,从游戏大厅进入到游戏室时,若一方从三子棋切换到五子棋,另一方不需要切换,默认切换
(2)开始功能__开始按钮以后,开始游戏,同时在Li__ox1信息框里显示该哪方下棋开始下棋以后,会有__判断下棋位置是否有棋如果该位置没有棋,则可以__鼠标左键,从而将棋子下在该位置随后服务器端__来获取与方格的第ij交叉点向四个方向的连子数,此过程每下一个棋子就会执行一次,依次是水平,垂直,左上右下,左下右上,从四个方向上判断游戏是否胜利的算法
(3)退出功能游戏结束,退出游戏用户退出游戏然后关闭客户端窗体,此时触发PlayingPlaying_FormClosing__关闭窗体
(4)聊天功能在下棋的过程中,在说话框里可以输入文字,__发送,发送到服务器然后通过服务器调用Servi__类发送到指定用户
(5)音乐播放功能音乐播放功能里包含两个功能,即打开和播放功能,打开按钮可以打开本地的音乐文件,__播放即可播放音乐
(6)帮助功能提供给玩家一些需要的帮助,例如下棋的规则和游戏胜负规则
3、服务器端设计
3.1界面设计如下图图8服务器界面设计
(1)启动服务功能__启动服务按钮,服务器端就会不断的监听用户端的接口,并且予以响应并且在显示框中显示相关的信息,如连接信息、玩家信息、开始信息、退出信息等
(2)停止服务功能__暂停服务按钮,就会在显示框中显示“开始停止服务,并依次使用户退出!”
(3)限制功能限制功能分为两部分人数限制和桌数限制服务器端对于游戏室的人数的限制范围为1~300,服务器对于游戏室最多同时开出的桌数的限制范围为1~100用户可根据此数据填写限制信息,但必须要保证数据在此范围内
四、总结经过两个星期的的努力我们组的网络五子棋系统完成了,并在测试的过程中达到了预期的目标整个设计的过程可以说是一个艰难而又充实的学习过程,许多的知识都是第一次开始接触和学习如socket的基本知识,以及线程方面等知识我们的网络五子棋还有很多不足之处,诸如界面设计不够亮丽,还有预想的几个功能,我们参照__游戏的内容,觉的我们的游戏还缺少悔棋功能、重新开始功能、并且,我觉得如果在聊天功能中再添加一个常用语功能和表情功能,可以使界面变的更加的友好、方便虽然有好几个功能我们没有实现,但是在游戏中添加背景音乐的功能我们实现了,这也是我们这次课程设计的主要创新点因为我们懂得东西有限,还没有能力去把不足进行改善,所以,希望在以后能解决此类问题的时候再去更加__的去完善这个网络五子棋系统在这次的毕业设计中,我学到了很多东西,不仅是知识的积累与运用、更是__了软件设计的整个过程,采用合理的系统架构,使程序员编写代码更加有条理,更加符合软件工程的标准,这才是最重要的我开始发现其实软件__并不是纯数学正相反,数学只占了很小的一部分,它其实是一种哲学,一种有着数学美感的哲学在这个过程中积累的经验对我来说也是相当宝贵的,我把设计过程中出现的问题,及解决的方案都记录了下来,这也是一份很重要的资料,对我将来的工作一定会起到很大的帮助作用最后感谢老师的辛勤指导在研究分析的过程中,老师给予了很多帮助,并提供了很多与该课题相关的重要信息,培养了我对事情研究分析的严谨态度和创新精神,很大程度上提高了我分析问题,解决问题的能力,这非常有利于我现在和今后的学习和工作还有我的朋友在毕业设计过程中给了我精神上和学习上的巨大鼓舞,在此我表示我最衷心的感谢!参考__临沂制造网http://___.linyizhizao.com/指导教师评语系部教研室意见初始化监听Socket接受新的客户端连接收发数据关闭连接初始化监听Socket建立连接收发数据关闭连接。