帐号 注册
密码 登录
只需一步,快速开始
登录或注册新用户,开通自己的个人中心
lfe1202
资料简介:
毕业设计-基于C#的多人在线社交游戏的网络程序设计,共40页,10114字,附C#源代码摘要:本文主要讲述了类似摩登城市的社交游戏的分析和设计,使用线程池与socket技术实现开发多人在线游戏网络程序的基本功能,包过实现社交游戏中新建建筑、摧毁建筑、收获建筑、升级建筑的功能。通过Winsock实现数据传输、通过Sqlhelper进行数据库连接、通过线程池实现对不同socket连接并发运行管理等。在C/S模式下,客户端发送必要的数据与控制信息给服务器,服务器再根据控制信息对数据进行处理。服务器端首先用一个线程监听socket连接,再将监听到的连接转移到线程池里,这就使得服务器端能同时接受多个用户连接,并行多个任务的计算处理,同时隔离错误,为所有的用户提供相对稳定的后台支持,同时节省了创建线程的时间,并且能够并发进行多个任务,这样就提高了服务器端对多个客户端请求响应速度,也实现了对数据库的高效利用。关键字:线程池、多人在线游戏、社交游戏、网络游戏
目 录1 选题背景 11.1选题背景 11.2 设计目标 31.2.1选题主要解决的问题 32 设计需求分析 43 设计平台选择 63.1 操作系统 63.2 软件运行环境 64 设计过程论述 74.1设计程序窗口 74.1.1客户端窗口的设计 74.1.2服务器端窗口的设计 74.2主要技术 84.2.1 线程池 84.2.2 socket 连接 84.2.3 协 议 94.3 程序结构 114.3.1 客户端设计 114.3.2 服务器端的功能设计 174.3.3 发送的数据格式设计 174.3.4 数据库设计 184.4系统流程分析 204.4.1 用例举例 214.4.2 客户端流程图 234.4.3 服务器端流程图 245 部分核心代码 255.1 客户端 255.1.1 使用socket收发信息 255.1.2 使用线程来运行任务 255.2服务器端 255.2.1 监听socket连接 255.2.2 接管Socket连接 265.2.3 数据库操作 266 Socket粘包的测试性研究 287 总结 318 展望 32致谢语 33参考文献 34
本设计是整个游戏流程中的一部分,也是游戏开发的核心工作,游戏编程,基本需要熟练C#、sql编程等技术。设计中使用radiobutton来模拟一个游戏基本场景而没有图形式的游戏场景。设计中需要完成的是模拟目前流行的休闲游戏摩登城市实现盖房子,拆房子,收获房子,升级房子,以及实现相应的时间牵制与财产变迁。同时,为了解决多个客户端同时连线到服务器端,因此服务器端使用了多线程技术,使用一个线程进行监听是否有客户端连接,再将监听到的连接分配到线程池进行通信。通信方式则是客户端将要改动的数据与改动命令通过socket发送到服务器端,再由服务器端根据命令对数据库作出修改。
设计需求分析《摩登城市》这款游戏是基于网页,大量使用flash技术,下图展示的是从3366中的游戏《摩登城市》游戏场景的一部分截图,整个场景以平面的方式表达, 所有的建筑都是贴图,如图2-1所示。玩家可以选择建筑在地图上的任意位置新建选择的建筑,不要的建筑也可以进行摧毁恢复成空地,一定时间后可以收获建筑得到金钱,建筑有不同等级,玩家可在原有建筑上进行升级,升级与新建一样需要扣除相应的金钱。因此,地图功能初步设计为:新建、摧毁、收获、升级。具体细化为:新建:在某个空地新建某建筑时,将该地点名称改为该建筑名称,同时在用户财产中扣去该建筑所需的费用,并记录新建的时间。收成:收成某个已有可收成建筑时,用户财产增加该建筑对应的收成数据,更新新建的时间为收成时间。摧毁:将指定的建筑摧毁成空地。升级:将指定的未满级的建筑进行一个等级的升级,用户财产扣去升级费用,新建时间更新为升级时间。因为这类游戏以多人休闲互动为乐趣,所以不止能对自己地图的建筑进行操作,同样也需要能进入别人的地图进行部分操作,因为不是地图主人,所以不能进行新建、摧毁、升级等操作,只能对别人的建筑进行收获操作。因此,互动功能初步设计为:能够进入别人的地图场景、收获别人的建筑。具体为:查看:进入别人的地图场景;收获:用户财产增加指定的建筑带来的收益数据。为了防止同个用户不同场地同时登陆的情况,在用户登陆的时候应该对此有所判断,阻止后登陆的该用户的客户端连接服务器端。本设计将游戏地图简化为4×4的表格,用radiobutton 来代表每个格子(即地皮),形成一个游戏场景的基本架构。并用横纵坐标来区分每个地皮,例如xy为11表示第一行第一列的地皮。
资料文件预览:共28文件夹,72个文件,文件总大小:5.19MB,压缩后大小:1.39MB
hart
lljieying