黄金点游戏
2018-06-17 21:50:46来源:未知 阅读 ()
最近花了一段时间自学TCP/IP网络编程技术,掌握了基于TCP的C/S网络通信模型,熟悉了服务器和客户端软件程序的设计流程,并且利用多线程和互斥锁、条件变量等实现了并发机制。在这些知识和技术之上,写出纯C语言版的黄金点游戏。
过后又用了一段时间研究Qt网络编程,决定使用QTcpSocket重新开发黄金点游戏。于是出现了第二个版本,Qt版黄金点游戏。不仅继承第一版的分布式网络模型,还具有图形用户界面。
项目介绍
纯C语言版
开发环境:Visual Studio 2013
运行环境:Windows 7及以上版本
网络模型:使用基于TCP的C/S网络通信模型,实现黄金点游戏分布式框架。
语言技术:纯C语言开发,具有多线程,采用互斥锁和条件变量实现线程之间的同步和异步。
Qt版
开发环境:Qt Creater 4.2.1 Community
运行环境:源代码可跨平台
网络模型:采用C/S网络通信的分布式结构。
语言技术:C++ Qt类库,采用面向对象的思想,运用QTcpSocket实现服务器和客户端的通信管理,具有图形用户界面。
程序功能
纯C语言版
服务器:用户的连接和断开都有相应的提示。一有新用户连接,服务器自动创建新线程,用于游戏数据的通信。具有菜单,可以随时控制游戏的进行以及关闭服务器。
客户端:用户需使用服务器的 IP 地址和端口号,连接服务器,进行游戏。也具有菜单,可以随时选择数字、查看得分和退出游戏。
缺陷:服务器只有一部分功能添加了互斥锁和条件变量,因此当连接的客户端较多的时候,存在运行隐患,且此程序受域的限制。游戏的框架建立在多线程之上,随着连接数的增加, 一旦线程数量超过硬件设施支持的线程数上限,大量的线程导致大量的上下文切换,消耗大量的操作系统资源,从而降低程序的性能。
改善措施:放弃多线程为主的结构,改用select set的轮换结构,减少线程数量,增加服务器的承载。
Qt版
服务器:有当前在线人数的提示,一有新用户连接,服务器自动刷新提示。具有图形化用户界面,可以随时控制游戏的进行以及关闭服务器。
客户端:用户需使用服务器的 IP 地址和端口号,连接服务器,进行游戏。同样具有图形化用户界面,自动刷新得分,可以随时发送数字和退出游戏。
缺陷:只能创建一个游戏房间,参与游戏的用户发送数字后,进入队列等待开始游戏,并且不可重复发送数字。
运行效果
纯C语言版
Qt版
首先打开服务器,创建游戏房间。
分别打开两个客户端,并且输入服务器地址和端口号,点击进入游戏。
发送数字到服务器,并且服务器强制开始游戏,将结果得分发送至客户端。
设置游戏人数。
发送数字到服务器,然后服务器自动开始游戏,将结果得分发给客户端。
纯C语言版黄金点游戏的源代码和发行版本下载链接:https://github.com/xucongandxuchong/Gold-Point
Qt版黄金点游戏的源代码和发行版本下载链接:https://github.com/xucongandxuchong/Gold-Point/tree/Qt
注:此两种版本的黄金点游戏纯属原创,转载请注明出处。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 博弈--巴什博弈 2020-04-24
- C语言实现经典游戏——扫雷! 2020-04-17
- 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的 2020-04-15
- 小游戏二之---------------五子棋 2020-03-23
- Qt5小Demo之猜数字游戏 2020-03-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash