1135211345谌昱基于c的卡牌游戏的设计和实现

上传人:无*** 文档编号:66369396 上传时间:2022-03-28 格式:DOC 页数:40 大小:3.45MB
返回 下载 相关 举报
1135211345谌昱基于c的卡牌游戏的设计和实现_第1页
第1页 / 共40页
1135211345谌昱基于c的卡牌游戏的设计和实现_第2页
第2页 / 共40页
1135211345谌昱基于c的卡牌游戏的设计和实现_第3页
第3页 / 共40页
点击查看更多>>
资源描述
编号:1135211345 河南大学 2015届本科毕业论文基于c#的卡牌游戏的设计和实现Design and Implement The Card game base on C#论文作者姓名: 谌昱 作者学号: 1135211345 所在学院: 国际教育学院 所学专业: 计算机科学与技术 导师姓名职称: 肖春静(讲师) 论文完成时间: 2015年4月29日 2015年4月29日推荐精选河南大学2015届毕业设计(论文、创作)开题报告(学生本人填写)学号1135211345姓名谌昱导师姓名职称肖春静(讲师)开题时间2014年12月1日课题题目基于c#的卡牌游戏的设计和实现课题来源导师指定 自定 其他来源课题的目的、意义以及和本课题有关的国内外现状分析:1 目的:在现在这个人们生活越加丰富的时代,人们对精神娱乐的要求越来越高。卡牌游戏作为精神娱乐的一种,在今天也是喜闻乐见的。卡牌游戏的娱乐性在于他的竞技性和卡牌收集给人们带来的满足感。软件预期设计并实现一个类三国杀的简单网络对战式卡牌游戏。包括客服器端和服务端,服务器提供一个“卡牌对战”的游戏室,使客服端通过服务器实现网络对战,在客户端设计登录界面,游戏界面。设计卡牌对战规则,编写对应的算法。实现游戏室聊天等基本游戏功能。2 意义:网络上的卡牌游戏有很多种,而不同则在于更加新颖的游戏规则。卡牌游戏要想得到玩家的认可,还须要有新意,有新意的游戏才能开拓更大的市场。而我则会尽我所能提供更有意思的卡牌游戏玩法和在我能力范围内的技术支持。3 现状:当下,日本折服了全球其它市场用在卡牌游戏市场所证明的盈利能力,包括中国和美国在内都在纷纷模仿日本在卡牌游戏。在借鉴日本卡牌的成功点的基础上再结合本国的游戏情况来研发,也取得了一些成绩。而要让游戏走出国门,还须要有创意,有创意的游戏才能开拓更大的市场。比如设计出一个抢眼球的卡牌主题,选择准确的定位卡牌的主题是很重要,以人气动漫为切入点日本卡牌游戏市场目前的游戏主题。国内卡牌游戏的提升,直接影响着游戏的受欢迎程度。而有特点的游戏内容也会成为卡牌游戏的制胜关键。近年国内的不少产品也有着不俗的表现,如三国杀 ,我叫MT等都受到了玩家的热捧。基于中国的游戏玩家基数,卡牌游戏在国内的潜在市场还非 常巨大。近年游戏的大厂商也是盯住了这个商机,纷纷推出了自己的卡牌产品,特别是在网页游戏 领域更是大作频出,掀起了一股卡牌风潮!推荐精选研究目标、研究内容和准备解决的问题,拟采取的方法、技术或设计(开发)工具:1 目标:软件预期设计并实现一个类三国杀的简单网络对战式卡牌游戏。2 内容:包括客服器端和服务端,服务器提供一个“卡牌对战”的游戏室,使客服端通过服务器实现网络对战,在客户端设计登录界面,游戏界面。设计卡牌对战规则,编写对应的算法。实现游戏室聊天等基本游戏功能。3 准备解决的问题:。本软件主要使用C/S模式,采用 .Net框架,使用Microsoft Visual Studio 2010实现软件的设计和实现利用同步TCP实现网络对战,设计出牌规则用图片处理软件获得牌组或在网上寻找素材。设计卡牌对战规则,编写对应的算法。推荐精选预期成果:1源程序2毕业论文进度计划与阶段要求:(1)12月1日12月31日:查找资料、确定毕业设计题目,编写开题报告。1月1日:将开题报告发送到导师邮箱。1月2日-1月10日:导师根据开题报告下达任务书。(2)1月11日4月2日:根据任务书搜集素材、进行初步的毕业设计。4月3日:将毕业设计阶段性成果发送到导师邮箱。(3)4月3日4月9日:根据导师的建议和指导,修改毕业设计,编写论文。4月10日:将中期检查表发送到导师邮箱。(4)4月11日4月28日:根据导师的建议和指导,修改毕业设计和论文。(5)4月29日:将设计和论文终稿发送到导师邮箱。开题前收集的资料和参考文献(5-8种)1 马骏C#程序设计及应用教程(第2版)人民邮电出版社20092 马骏C#网络应用编程(第2版)人民邮电出版社20103 明日科技 C#从入门到精通(附光盘第3版) 清华大学出版社 20124 尚云站在十字路口的卡牌游戏计算机应用文摘135 佚名卡牌不需要硝烟的战争商业故事:数字通讯14指导教师对开题报告的意见:同意按开题报告的题目和设计思路开题。指导教师签名: 2015年1月10日推荐精选河南大学2015届毕业论文(设计、创作)任务书(导师根据学生的开题报告填写)题目名称 基于c#的卡牌游戏的设计和实现学院国际教育学院学生姓名谌昱所学专业计算机科学与技术学号1135211345毕业论文(设计、创作)要求1设计内容软件预期设计并实现一个类三国杀的简单网络对战式卡牌游戏。2基本要求基于c#的卡牌游戏的设计和实现,要求至少实现以下内容:(1)客户器端和服务端,服务器提供一个“卡牌对战”的游戏室,使客服端通过服务器实现网络对战,在客户端设计登录界面,游戏界面。(2)设计卡牌对战规则,编写对应的算法。(3)实现游戏室聊天等基本游戏功能。3要解决的问题实现客户器端和服务端相互通信。客户数据在数据库中的保存和查询。设计卡牌对战规则,编写对应的算法。对应规则的实现。4要求提交的成果(1)毕业设计源程序(2)论文指导教师签名:2015年1月10日推荐精选河南大学2015届毕业设计(论文、创作)中期检查表(导师只填写评语,其他由学生填写)题目名称:基于c#的卡牌游戏的设计和实现学院国际教育学院学生姓名谌昱所学专业计算机科学与技术学号1135211345一、毕业设计(论文、创作)进展情况毕业设计的总体界面已搭建完毕,用户注册和登录以及和数据库间数据交互完成。服务器和客户端的通信功能模块,游戏功能模块大致能正常运行。但是游戏界面的显示,细节功能的实现和软件界面的美化都存在一些问题,还需要进一步完善。二、毕业设计(论文、创作)存在的问题及解决方案存在的问题:(1)玩家排位信息查询的实现。(2)游戏过程中玩家出牌权限的设置解决方案:(1)将玩家排位信息存储到mysql数据库中通过sql语句来实现查询功能。(2)在游戏过程中,如果不将游戏按钮在没有权限的情况下设为不可选,那么对战玩家就可以同时出牌不符合游戏规则。解决方法是通过一个字段判断,每次出牌前都会判断该字段。从而分辨是否到己方回合推荐精选三、学生本人对毕业设计阶段所做工作及进展情况的评价 在做毕业设计期间,我查询了大量的书籍为毕业设计提供技术支持。同时因为做的是卡牌游戏,我参考了大量的卡牌游戏仔细观察这些卡牌游戏的运作流程并努力认真学习。能够独立完成每个环节并有效解决程序代码中出现的问题,并能够反复审查测试程序以期达到最优效果。四、指导教师对学生毕业设计(论文、创作)中期检查的评语根据该生提交的毕业设计成果,以及该生和导师交流的情况,同意该生通过中期检查。允许该生根据本人搜集的参考资料和已经完成的设计成果,开始整理毕业论文文档。指导教师签名 2015年4月10日推荐精选河南大学2015届毕业论文(设计、创作)教师评阅成绩表学院名称:国际教育学院学 号1135211345姓名谌昱专业计算机科学与技术指导教师肖春静(讲师)教师评阅平均得分论文题目基于c#的卡牌游戏的设计和实现指导教师评语及得分指导教师评语该生的选题有(现实、实际)意义,按时完成了所要求的功能。论文叙述条理xx、详略得当,是一篇(优秀、良好、合格)的本科论文。评分项目分值指导教师对毕业论文(设计、创作)评分撰写开题报告、文献综述15调查研究查阅整理资料10学习态度与规范要求10数据处理、文字表达10论文(设计、创作)质量和创新意识55合计100得分指导教师签名 2015年4月29日评阅教师评语及评分评阅教师评语该生论文结构合理,论文语句(流畅、较流畅),思路(较)清晰,表达(较)准确,是一篇(优秀、良好、合格)的本科论文。评分项目分值评阅毕业论文(设计、创作)评分撰写开题报告、文献综述满分15调查研究查阅整理资料10学习态度与规范要求10数据处理、文字表达10论文(设计、创作)质量和创新意识55合计100得分评阅教师签名 2015年5月4日此表由教师填写推荐精选河南大学2015届毕业论文(设计、创作)综合成绩表学号1135211345姓名谌昱所在学院国际教育学院答辩委员会评语及评分答辩委员会评语该生答辩过程中思路(清晰、较清晰),反应敏捷,论文结构(较)合理,条理清楚,达到本科毕业设计和毕业论文要求的标准,经答辩小组评议,同意通过论文答辩。答辩委员签字(4名以上): 2015年5月10日评分项目分值论文答辩小组评分答辩情况论文质量合计(100)内容表达情况(15)答辩问题情况(25)规范要求与文字表达(20)论文(设计、创作)质量和创新意识(40)得分答辩委员会主任签字: 2015年5月10日毕业论文(设计、创作)成绩综合评定(百分制): 分(教师评阅表平均成绩占40%,答辩成绩占60%)综合评定等级(优、良、中、差):备注:一、论文的质量评定,应包括对论文的语言表达、结构层次、逻辑性理论分析、设计计算、分析和概括能力及在论文中是否有新的见解或创新性成果等做出评价。从论文来看学生掌握本专业基础理论和基本技能的程度。二、成绩评定采用结构评分法,即由指导教师、评阅教师和答辩委员会分别给分(以百分计),评阅教师得分乘以20%加上指导教师得分乘以20%加上答辩委员会得分乘以60%即综合成绩。评估等级按优、良、中、差划分,优90-100分;良76-89分;中60-75分;差60分以下。三、评分由专业教研室或院组织专门评分小组(不少于5人),根据指导教师和答辩委员会意见决定每个学生的分数,在有争议时,应由答辩委员会进行表决。四、毕业论文答辩工作结束后,各院应于6月20日前向教务处推荐优秀论文以汇编成册,推荐的篇数为按当年学院毕业生人数的1.5%篇。五、各院亦可根据本专业的不同情况,制定相应的具有自己特色的内容。须报教务处备案。推荐精选河南大学本科生毕业论文(设计、创作)承诺书论文题目基于c#的卡牌游戏的设计和实现姓 名谌昱所学专业计算机科学与技术学 号1135211345完成时间2015年4月29日指导教师姓名职称肖春静(讲师)承诺内容:1本毕业论文(设计、创作)是学生 谌昱 在导师 肖春静 的指导下独立完成的,没有抄袭、剽窃他人成果,没有请人代做,若在毕业论文(设计、创作)的各种检查、评比中被发现有以上行为,愿按学校有关规定接受处理,并承担相应的法律责任。2学校有权保留并向上级有关部门送交本毕业论文(设计、创作)的复印件和磁盘。备注:学生签名: 指导教师签名:2015年4月29日 2015 年 4月 29 日说明:学生毕业论文(设计、创作)如有保密等要求,请在备注中明确,承诺内容第2条即以备注为准。推荐精选目 录摘要IABSTRACTII第一章 绪 论11.1 课题来源11.2 课题背景11.2.1 历史背景11.2.2 玩法概论11.3 国内外卡牌游戏的发展现状及分析21.4 论文的组织结构31.5 开发相关工具3第二章 卡牌游戏软件的分析42.1 需求分析42.1.1 用户需求分析42.1.2功能需求分析42.1.3系统用例42.2系统结构分析5第三章 软件的总体结构设计53.1 数据库设计53.1.1 数据库的概念设计63.1.2 数据库的具体设计63.1.3数据库注册登录功能相关73.3服务端和客户端的总体设计83.3.1服务端界面设计93.3.2客户端界面设计9第四章 软件的详细设计124.1 软件通信功能的实现124.1.1 服务端通信功能124.1.2客户端通信功能134.1.3 解决tcp无信息边134.1.4 跨线程访问控件144.2 软件的注册和登录功能144.3 游戏房间匹配功能164.4 英雄选择功能174.4.1英雄卡牌设计174.4.2英雄选择功能实现184.5卡牌游戏功能194.5.1 卡牌牌组设计194.5.2 游戏各步功能的实现20推荐精选总结24参考文献25推荐精选摘要 卡牌游戏对于我们来说并不陌生,无论是在pc端还是在手机端都有各式各样的卡牌游戏,以至于在我们的生活中也随处可见。卡牌游戏最大的卖点在于简单的游戏规则能玩出丰富的变化性,对战模式的形式中激烈的对抗也是玩家所钟爱的,而且卡牌游戏不像传统的网络游戏,不会让玩家花费大量时间在打怪升级上,只会考验玩家的聪明才智。卡牌游戏的对抗中迸发着智慧的火花。由于中国巨大的游戏玩家基数,卡牌游戏在国内的潜在市场还是非常大的。 本软件主要使用C/S模式,采用 .Net框架,使用Microsoft Visual Studio 2010和SQL Server 2012实现软件的设计和实现软件预期设计并实现一个类三国杀的简单网络对战式卡牌游戏。包括客服器端和服务端,服务器提供一个“卡牌对战”的游戏室,使客服端通过服务器实现网络对战,在客户端设计登录界面,游戏界面。设计卡牌对战规则,编写对应的算法。实现游戏室聊天等基本游戏功能。这个不写服务器包括什么,客户端包括什么,写主要功能。 关键词 卡牌游戏;c#推荐精选ABSTRACT Card game is not new for us, both in the pc side or at the end of the phone has a wide variety of card games, so that in our lives everywhere. Card games biggest selling point is the simple rules of the game can play a rich variety, form patterns in the fierce battle against the favorite player is, but unlike traditional card game online games, will not allow players to spend a lot of time on the Daguai upgrade, will test the players intelligence. Card game against the wisdom of sparks burst. Because of Chinas huge base of gamers, card games in the domestic market potential is still very large.The software is mainly used C / S mode, using .Net framework, using Microsoft Visual Studio 2010 and SQL Server 2012 for software design and implementation of the software is expected to design and implement a class Three killed, a simple card game online play. Including customer-side and server, the server provides a card Battle game room, so customer service online play through the server-side implementation, the client login interface design, game interface. Battle rules designed cards, write the corresponding algorithms. Game room chatting to achieve the basic game functions.Keywordscard games; c #推荐精选第一章 绪 论把字体大小,行间距等格式调整正确。1.1 课题来源 卡牌游戏对于我们来说并不陌生,无论是在pc端还是在手机端都有各式各样的卡牌游戏,以至于在我们的生活中也随处可见。卡牌游戏最大的卖点在于简单的游戏规则能玩出丰富的变化性,对战模式的形式中激烈的对抗也是玩家所钟爱的,而且卡牌游戏不像传统的网络游戏,不会让玩家花费大量时间在打怪升级上,只会考验玩家的聪明才智。卡牌游戏的对抗中迸发着智慧的火花。由于中国巨大的游戏玩家基数,卡牌游戏在国内的潜在市场还是非常大的。 在平常的日常生活中比较喜欢玩卡牌游戏,在玩过很多很多卡牌游戏后就萌生做一个卡牌游戏的念头。而且现在卡牌游戏非常流行,所以做一个卡牌游戏非常有市场价值,所以最终选择了这个课题。1.2 课题背景 卡片游戏又被称为纸牌游戏,属于桌面游戏的一种。关于卡牌游戏的起源有多种说法,现在较被中外学者所普遍接受的观点就是现代卡牌游戏起源于我国唐代一种名叫“叶子戏”的游戏纸牌。1.2.1 历史背景 相传早在秦末楚汉争斗时期,大将军韩信为了缓解士兵的思乡之愁,发明了一种纸牌游戏,因为牌面只有树叶大小,所以被称为“叶子戏”。(“叶子牌”,有两个手指大小。长8公分,阔25公分的“叶子牌”,用丝绸及纸裱成,图案是用木刻版印成的)。十二世纪时,马可波罗把这种纸牌游戏带到了欧洲,立刻引起了西方人的极大兴趣。一开始,它只是贵族们的奢侈品,但是因为它造价低廉、玩法多样,又容易学,很快就在民间流行开来。十六世纪,西方流行一种称为“胜牌”的纸牌,它在17世纪初演变为类似桥牌的惠斯特牌戏,流行于英国伦敦及荷兰,1894年,在英国伦敦俱乐部中产生了桥牌,这种桥牌再经演变就是现在的扑克牌。二十世纪六七十年代的美国,随着一款名叫The Baseball Card Game的卡牌游戏出现,历史上第一款集换式卡牌游戏诞生,不过真正让集换式卡牌游戏成型,制定了此种游戏规则的游戏是1993年由美国数学家理查加菲博士开发的万智牌。1.2.2 玩法概论虽然每一种具体的游戏都有其自己的规则,不过集换式卡牌游戏是有一些共性的特征的:1、每张卡牌上,无论何种游戏,都会有表述规则的文字,描述这些卡牌的使用条件和效果。推荐精选2、基本上每种游戏都要求玩家拥有一套自己设计的套牌,牌手需要从成千上万的卡牌中挑选一定数量的牌,相互配合以赢得游戏。这为游戏的对局提供了非常的开放性和多元性。3、一般的说,使用任何一张卡牌都需要一定条件。例如,万智牌需要地,口袋妖怪卡需要能量卡等等。4、游戏的基本规则是利用自己拥有的条件,将自己套牌中的牌使用出来,使其产生某种效应,以达成游戏要求的获胜条件。5、无论何种游戏,规则如何,但游戏都是以回合的方式进行,且回合进行遵循着一定的架构,基本结构包括:重启让所有的卡牌都成为新回合的状态,例如万智牌中的“重置阶段”抓牌把套牌中的牌放在手上。放在手上意味着这些牌有可能将会发生效应。使用使用手上的牌来影响游戏。冲突利用牌手可利用的资源进行战斗,一般来说在冲突中获胜是获得游戏胜利主要手段。结束一般在此阶段,本回合使用的牌产生的效应会终止,牌手会要求弃掉他们手里多余的牌,将手里的牌控制到一定数量。格式1.3 国内外卡牌游戏的发展现状及分析卡牌游戏的发展可以追溯到20世纪90年代中期,由美国数学教授理查加菲设计,Wizardsof the Coast公司发行的魔法风云会(万智牌)成为世界上第一款集换式卡牌游戏,并迅速在世界范围 内传播,拥有600万的全球用户。到了90年代末期,以日本动漫游戏王为背景的集换纸牌游戏 OCG问世,再次极大扩展了全球卡牌游戏市场,并创下迄今为止全球销售卡片最多卡片游戏记录。而 2006年由暴雪公司与UpperDeckEntertainment公司合作开发的魔兽世界集换式卡牌,又一次的 将卡牌游戏市场推向新的高度。国内外卡牌现状当下,日本折服了全球其它市场用在卡牌游戏市场所证明的盈利能力,包括中国和美国在内都在纷纷模仿日本在卡牌游戏。在借鉴日本卡牌的成功点的基础上再结合本国的游戏情况来研发,也取得了一些成绩。而要让游戏走出国门,还须要有创意,有创意的游戏才能开拓更大的市场。比如设计出一个抢眼球的卡牌主题,选择准确的定位卡牌的主题是很重要,日本卡牌游戏市场目前的游戏主题以人气动漫为切入点。国内卡牌游戏画面音效和设定的提升,直接影响着游戏的受欢迎程度。而特色的游戏内容也会成为卡牌游戏的制胜关键。比如对技巧派卡牌战斗,战系卡牌+GPS、恋爱系卡牌+语音这样的特色组合就是目前的发展趋势。近年国内的不少产品也有着不俗的表现,如三国杀 ,我叫MT等都受到了玩家的热捧。基于中国的游戏玩家基数,卡牌游戏在国内的潜在市场还非 常巨大。近年游戏的大厂商也是盯住了这个商机,纷纷推出了自己的卡牌产品,特别是在网页游戏 领域更是大作频出,掀起了一股卡牌风潮!推荐精选1.4 论文的组织结构这个放到本章最后第一章 绪论。分别介绍了课题来源,课题背景和卡牌游戏在国内外的发展现状,最后介绍本论文的组织结构。第二章 系统分析。分析了本项目的用户需求和功能需求。第三章 软件的总体设计。介绍了项目的总体界面设计和功能操作第四章 软件详细设计。介绍了各功能模块的设计和实现1.5 开发相关工具本软件使用Microsoft Visual Studio 2010平台和SQL Server 2012软件,用c#作为编程语言(1)Microsoft Visual Studio 2010介绍Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了NET Framework4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持IBMDB2和Oracle数据库。(2)SQL Server 2012介绍Microsoft SQL Server是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQL Server 2014,已经在2014年4月1日发布。 数据库的内置语言原本是采用ANSI和ISO所定义的SQL语言,但是微软公司对它进行了部分扩充而成为作业用Transact-SQL。 几个初始版本适用于中小企业的数据库管理,但是近年来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理。(3) c#编程技术及其相关C#语言是在C和C+的基础上重新构造的、语法简洁的、基于.NET框架支持的一种面向对象、类型安全的编程语言。随着.NET技术的普及,C#语言已经成为开发基于.NET企业级应用程序的首选语言,利用C#语言和基于.NET框架的Visual Studio集成开发平台,程序员可以很方便的进行各类开发工作。c#只是一种编程语言,而.net是一个平台。在net平台上可以用c#语言进行开发系统,.net支持多种语言开发的,例如C#,VB,J#.等等。而目前C#都是基于net平台上开发的。推荐精选第二章 卡牌游戏软件的分析2.1 需求分析2.1.1 用户需求分析 做为一个卡牌游戏,本软件主要面向青少年学生群体和已有工作且具有一定消费能力的群体。让他们在学习工作之余,得到放松和游戏的乐趣。我认为在今天这个精神娱乐极大丰富的时代,一款优秀的卡牌游戏一定会大受欢迎。2.1.2功能需求分析 游戏功能:卡牌游戏每一局只需3到5分钟即可结束玩家不需要将大量的时间放在打怪升级上,可以在工作学习之余玩上一局,放松放松。而卡牌游戏的竞技又让人胜利得到满足感。 聊天交友功能:本软件提供聊天功能,玩家可以在游戏之余认识新的朋友。 排位功能:本软件的排位系统会让游戏更有竞技性。让玩家游戏排位上升时得到满足感和认同感 卡牌搜集功能:当玩家的游戏等级上升是会解锁给多卡牌,玩家可根据自己的喜好收集各种各样的卡牌。2.1.3系统用例注册登录后用户可进行游戏,聊天交友,排位竞技,卡牌收集等功能系统用例如图2-1所示。推荐精选图2-1 系统用例图2.2系统结构分析各个模块有以下关联:(1) 本系统分为服务端和客户端,当服务端启动服务时客户端才能进行相关操作。(2) 本客户端只有注册后才能进行相关游戏。(3) 注册登录后, 可进入游戏房间,进行个人信息或查看编辑优先级并行(4) 进入游戏房间可选择游戏英雄之后开始游戏分析可知系统结构如图2-2所示。图2-2 系统结构图这不是结构图,参考一下别的论文的结构图,重画一下。推荐精选第三章 软件的总体结构设计3.1 数据库设计 本软件的数据库设计功能是为了保存用户注册的数据,玩家的游戏数据和用户编辑的个人资料等。本软件选用了sqlserver数据库。建立了一个数据库db_MyCardGameData。建立了三个表:注册信息表,个人资料表,游戏数据表3.1.1 数据库的概念设计总体E-R模型如图3-1所示。图3-1 E-R图推荐精选3.1.2 数据库的具体设计设计的三个数据表如表3-1,表3-2,表3-3所示。表3-1 注册信息表列数据类型允许NULLidint不允许Namenvarchar(50)不允许密码varchar(50)不允许signint允许表3-2 个人资料表列数据类型允许NULLNamenvarchar(50)不允许生日nvarchar(50)允许性别nvarchar(50)允许电话nvarchar(50)允许邮箱nvarchar(50)允许表3-3 游戏数据表列数据类型允许NULLNamenvarchar(50)不允许胜局int允许负局int允许平局int允许排位积分int允许等级int允许金钱int允许3.1.3数据库注册登录功能相关(1)用户通过客户端向服务端发送注册信息,服务端接受信息后向数据库导入数据。先在数据库中查找是否昵称已存在导入数据,如果不存在相关代码如下:case zhuce:/格式:zhuce,昵称,密码service.AddItem(向数据库添加数据);推荐精选name = splitString1;password = splitString2;SQLStr = select count(*) from Zhuce where Name=+name+;using (SqlConnection cnn = new SqlConnection(ConStr)SqlCommand cmd = new SqlCommand(SQLStr, cnn);cnn.Open();cz= Convert.ToInt32(cmd.ExecuteScalar();service.AddItem(string.Format(存在0条该数据, cz);if (cz = 0)SQLStr = insert into Zhuce(Name,Password,Sign)values ( + name + , + password + ,0);/字符或汉字要加单引号数字不用using (SqlConnection cnn = new SqlConnection(ConStr)SqlCommand cmd = new SqlCommand(SQLStr, cnn);cnn.Open();int i = cmd.ExecuteNonQuery();/之前是因为没加单引号显示列名无效service.AddItem(string.Format(添加0条数据, i);sendString = zc1;service.SendToOne(user, sendString);ElsesendString = zc2;service.SendToOne(user, sendString);break;(2)用户登录时进行登录验证,当用户名和密码正确时登录成功,否则登录失败。验证代码如下:SQLStr = select count(*) from Zhuce where Name= + name + and Password= + password + ;using (SqlConnection cnn = new SqlConnection(ConStr)SqlCommand cmd = new SqlCommand(SQLStr, cnn);cnn.Open();cz = Convert.ToInt32(cmd.ExecuteScalar();service.AddItem(string.Format(存在0条该数据, cz);推荐精选3.3服务端和客户端的总体设计服务端和客户端利用同步tcp进行通信,在服务端不断监听客户端是否有连接请求,同时识别各个客户端。双方建立连接后进行数据传递,各个客户端通过服务端进行游戏和互动。3.3.1服务端界面设计服务器端界面进入之后可以在该界面监控客户端的情况,点击“启动服务”按钮后,发起连接此时客服端可通过服务端进行游戏。点击“停止服务”按钮后断开连接。服务端界面,开始“停止服务”按钮为不可选.点击“启动服务”按钮后,“启动服务”按钮变为不可选“停止按钮”激活,按下如图3-2所示。图3-2 服务端界面3.3.2客户端界面设计(1)游戏大厅界面 当用户打开客户端直接进入游戏大厅界面,可点击“注册”“登录”进行注册和登录,用登录后激活“个人信息”按钮和“座位”框如图3-3所示。推荐精选图3-3 游戏大厅界面(2) 注册界面点击“注册”后进入注册界面,填写昵称和密码,为防止出现重复昵称,昵称重复会注册成败,直到唯一昵称则注册成功。注册界面如图3-4所示。图3-4 注册初始界面(3) 个人中心界面用户登录后看“个人中心”按钮激活,点击后进入个人中心,点“密码修改”进行密码修改,点“排行榜”查看游戏排行。如图3-5所示。推荐精选图3-5 个人中心界面(4) 游戏界面在游戏大厅界面点击相应的座位进入相应的房间,点击列表项会在右面显示该英雄图片,点击“确定”选定英雄,头像会在游戏界面显示。英雄选择界面如图3-6所示。图3-6 英雄选择界面选择英雄后点击“游戏界面”进行游戏,房主可等对手进入房间后点击“开始”进行游戏进入后界面如图3-7所示。推荐精选图3-7 游戏初始界面第四章 软件的详细设计4.1 软件通信功能的实现本软件分为服务端和客户端两部分,两者之间信息的交互是本软件功能实现的基础。本项目采用同步tcp进行数据传输。4.1.1 服务端通信功能为了实现服务端通信功能,创建一个tcplistener对象,调用它的start方法进行监听,创建一个线程调用ListenClientConnect方法,监听客户端连接请求。ListenClientConnect方法中创建线程调用ReceiveData方法,接受客户端信息。代码如下:myListener = new TcpListener(localAddress, port); myListener.Start(); service.AddItem(string.Format(开始在0:1监听客户连接, localAddress, port); /创建一个线程监听客户端连接请求 / ThreadStart ts = new ThreadStart(ListenClientConnect); Thread myThread = new Thread(ListenClientConnect); myThread.Start();ListenClientConnect方法核心代码:ParameterizedThreadStart pts = new ParameterizedThreadStart(ReceiveData);推荐精选Thread threadReceive = new Thread(ReceiveData);User user = new User(newClient);threadReceive.Start(user);4.1.2客户端通信功能为了实现服务端通信功能,创建应该tcp对象,利用connect方法与服务器建立连接。利用tcp对象的getstream方法得到网络流,利用网络流和服务器进行数据传递。最后建立线程监听,循环接受服务器传递的数据。代码如下:private TcpClient client = null;.client = new TcpClient(Dns.GetHostName(), 51888);.NetworkStream netStream = client.GetStream(); sr = new StreamReader(netStream, System.Text.Encoding.UTF8); sw = new StreamWriter(netStream, System.Text.Encoding.UTF8);Thread threadReceive = new Thread(new ThreadStart(ReceiveData); threadReceive.Start();4.1.3 解决tcp无信息边Tcp通信时,可能由于收发速度很快,前后发送的数据无法分辨。还有可能由于网络传输因素的影响,出现错位。这些现象是因为tcp是一种以字节流形式传递,无信息边界的协议,本软件通过使用特殊标记来分割消息。发送消息方,发送格式例如“SitDown,桌号,座位号”接受方获取第一部分作为标记,来分辨消息。相关代码如下:.string command = splitString0.ToLower(); switch (command) case zhuce: . break; case login: /格式:Login,昵称,密码 . break; . case sitdown: /格式:SitDown,桌号,座位号 /该用户坐到某座位上 break; . default:推荐精选 service.SendToAll(userList, 什么意思啊: + receiveString); break; 4.1.4 跨线程访问控件 在一般情况下,是不能在一个线程中去直接访问另一个线程中的控件。因为同时访问一个控件时,会使该控件进入一个不可控的情况。甚至会产生死锁问题。而本项目经常需要在一个项目中访问另一个线程中的控件。解决这个问题有两个方法,一个是使用委托,第二个是使用backgroundworker组件来解决这个问题。本项目是利用委托来解决这个问题了。例如相关代码如下: delegate void LabelDelegate(Label label, string str); delegate void ButtonDelegate(Button button, bool flag); delegate void TextBoxDelegate(TextBox tb, string str); delegate void PictureBoxDelegate(PictureBox pb, bool flag); LabelDelegate labelDelegate; ButtonDelegate buttonDelegate; TextBoxDelegate tbDelegate; PictureBoxDelegate pbDelegate; /RadioButtonDelegate radioButtonDelegate;. labelDelegate = new LabelDelegate(SetLabel); buttonDelegate = new ButtonDelegate(SetButton); tbDelegate = new TextBoxDelegate(SetTextBox); pbDelegate = new PictureBoxDelegate(SetPE);. public void SetLabel(Label label, string str) if (label.InvokeRequired) this.Invoke(labelDelegate, label, str); else label.Text = str;/button.Enabled = flag;/ tb.Text = str; 4.2 软件的注册和登录功能进入游戏大厅后点击“注册”进入注册界面,如果数据库已存在该昵称,重复会提示重新输入。如图4-1所示。推荐精选图4-1 注册界面输入昵称和密码后,点击“登录”,如果昵称和密码数据库中数据不符则会提示。如图4-2所示。图4-3 登录失败界面登录成功,则登录按钮变为不可选,个人中心按钮激活。如图4-4所示。推荐精选图4-4 登录成功界面4.3 游戏房间匹配功能 在游戏大厅界面,点击座位进入该桌游戏房间,点击对应位置的checkBox时,会同时发送桌号和座位号。两个同时发送同一个桌号的两个客户端,会在服务器中保存。游戏时,同一个桌号的两个客户端通过服务器进行互动。客户端代码: private void checkBox1_CheckedChanged(object sender, EventArgs e) side = 0; /是否为服务器更新各桌 if (isReceiveCommand = true) return; if (checkBox1.Checked) string str = SitDown,0,0; /字符串格式:SitDown,昵称,桌号,座位号 /只有坐下后,服务器才保存该玩家的昵称 service.SendToServer(str); formPlaying = new FormPlaying(0, 0, sw); formPlaying.Show(); 推荐精选 服务端代码: case sitdown: /格式:SitDown,桌号,座位号 /该用户坐到某座位上 tableIndex = int.Parse(splitString1); side = int.Parse(splitString2); gameTabletableIndex.gamePlayerside.user = user; gameTabletableIndex.gamePlayerside.someone = true; service.AddItem(string.Format( 0在第1桌第2座入座, user.userName, tableIndex + 1, side + 1); /得到对家座位号 anotherSide = (side + 1) % 2; /判断对方是否有人 if (gameTabletableIndex.gamePlayeranotherSide.someone = true) /先告诉该用户对家已经入座 /发送格式:SitDown,座位号,用户名
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!