一、简介

单机版扫雷总会有些枯燥,不妨试试联网对战版扫雷!

开发环境:VS2019 + EasyX_20210224。

游戏玩法:左键按下翻开方块,翻开雷判输,或翻开最后一个方块判赢;逃跑或超时会结束本轮连接,正常结束会自动重新开局,对手不变。

目的:一方面提供联网对战版扫雷供大家娱乐,另外也是重构曾经写过的扫雷单机版,最后也为了练习 Windows 网络编程。

二、网络

关于 Windows 网络编程书籍,推荐朱晨冰老师的《Visual C++ 2017 网络编程实战》,出版日期 2020 年。

个人感觉这本书讲解比较细致,内容也不会太老旧,有计网基础会更容易理解学习。

程序采用阻塞套接字编写,因此服务器免不了使用多线程,多线程部分由 C++11 提供。

想要让程序不限于局域网通信又不想购买服务器,这里推荐花生壳软件,操作简单,TCP 部分免费使用,相关内容自行搜索。

三、程序文件

1、服务器文件:

包含两个文件:WinsockTcp.h 和 main.cpp。

WinsockTcp.h 主要封装了 TCP 相关操作,可创建 TCP 服务器和客户端;main.cpp 为服务器代码。

2、客户端代码:

包含文件:WinsockTcp.h,Button.h,Datas.h,HomeScene.h,RunningScene.h,main.cpp。

☁ WinsockTcp.h 同服务器的 WinsockTcp.h;

☁ Button.h 封装简单按钮;

☁ Datas.h 包含一些数据和绘图图像;

☁ HomeScene.h 为开始场景,比较简单;

☁ RunningScene.h 核心代码,涉及客户端网络连接和程序控制;

☁ main.cpp 程序入口,主要控制程序走向。

3、如何测试运行该游戏:

a)客户端 IP 地址为笔者服务器地址,可直接运行客户端进行联网匹配。

 b)局域网或本地测试:

运行服务器 -> 修改客户端源码 IP 地址为本地 IP -> 运行客户端,可运行多个实例。

客户端连接服务器成功后 30s 左右未匹配时将匹配失败,可重新尝试匹配。

 c)更新:修改服务器对于同一个 IP 地址的客户端,最多接受两个实例进行连接。

四、其他

界面截图:

五、服务器更新

在 Windows 下,套接字有两种 I/O 模式:阻塞模式和非阻塞模式,前面服务器在阻塞模式下借助多线程实现。

而对于非阻塞模式,微软提出五种 I/O 模型:选择模型(select 模型)、异步选择模型(WSAAsyncSelect 模型)、事件选择模型(WSAEventSelect 模型)、重叠 I/O 模型(Overlapped I/O 模型)、完成端口模型。不同的模型,程序架构是不同的,相对而言,难度依次递增。

完成端口会充分利用 Windows 内核来进行 I/O 的调度,是用于 C/S 通信模式中性能最好的网络通信模型,没有之一,甚至连和它性能接近的通信模型模型都没有。

因此完成端口被广泛的应用于各个高性能服务器程序上。这里使用完成端口模型更新扫雷服务器,功能不变,客户端也不需要改变。

代码较多,为了不影响观看就不贴出来了

需要的可以戳下方链接自行下载~

C语言开发《扫雷》游戏,你从未体验过的联网对战版相关推荐

  1. 用c语言编写最大最小值_C语言学习教程,用C语言编写扫雷游戏

    本文实例为大家分享了C语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下 关于扫雷优化 1.核心思想:使用两个二维数组进行设计,一个用于显示,一个用于后台雷的布置. 2.使用宏常量,后期可以 ...

  2. c++扫雷游戏代码_C语言学习教程,用C语言编写扫雷游戏

    本文实例为大家分享了C语言实现扫雷游戏及其优化的具体代码,供大家参考,具体内容如下 关于扫雷优化 1.核心思想:使用两个二维数组进行设计,一个用于显示,一个用于后台雷的布置. 2.使用宏常量,后期可以 ...

  3. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  4. 超详细分解c 语言——实现扫雷游戏(详解)

    之前利用三子棋程序,介绍探讨了 c语言简单游戏编写主要模块及使用方法. 今天,我们就利用这个经典扫雷游戏,来加强对于程序思路的编写及思路. 目录 前引 游戏规则介绍 一.基本游戏思路(游戏实现方法) ...

  5. c语言扫雷游戏计时功能_C语言实现扫雷游戏(可以自动展开)

    前言 本篇博客主要介绍如何使用C语言实现扫雷游戏. 一.游戏规则 在一张ROW行COL列的地图上存在MINE_COUNT个地雷.玩家输入坐标翻开格子,若没有踩雷,则计算此格子周围8个格子的地雷总数,并 ...

  6. 《Unity 3D脚本编程:使用C#语言开发跨平台游戏》序言

    本文是7月受陈嘉栋的委托为他的新书<Unity 3D脚本编程:使用C#语言开发跨平台游戏>所写的序言,借助序言告诉大家.NET平台有着一个广阔的使用场景. 序言 Unity3D 是由两个具 ...

  7. c语言—实现扫雷游戏

    文章目录 什么是扫雷游戏 一.实现思路 二.头文件 三.主函数文件 1.菜单函数 2.主函数 四.游戏文件 1.地图初始化 2.展示地图 3.埋雷函数 4.判断该位置附近雷的个数 5.主游戏函数 五. ...

  8. 用C语言实现扫雷游戏

    用C语言实现扫雷游戏 -扫雷游戏的基本思路 1.打印游戏的菜单 2.为了便于后面排查周围雷的个数,初始化两个二维数组,一个作为向玩家显示的面板,一个作为布雷的面板.两个数组嵌套在一起.如下图所示: 3 ...

  9. C语言编写扫雷游戏,超简单

    C语言编写扫雷游戏,超简单 1.扫雷游戏的流程 2.代码编写 3.总结 通过学习C语言的基础知识,基本上是理解了大部分内容,现在就通过所学的知识,写个简单的扫雷游戏,加深对基础知识的理解,正所谓实践是 ...

最新文章

  1. 用 JMX 检测应用程序
  2. Python 中的 lstrip、rstrip、strip
  3. ug导出step文件失败_解决UG导出CAD图纸失败的问题
  4. Windows系统C++配置编译OpenCV
  5. Mysql数据目录初识
  6. 伪元素选择器使用场景-字体图标(CSS3)
  7. Navicat15注册时报错“rsa public key not find”的解决办法
  8. kali linux 无线攻击——aircrack-ng
  9. linux显卡驱动安装在哪个文件夹,linux 下安装Nvidia显卡驱动
  10. 基于JavaEE的居民水电费管理系统_JSP网站设计_MySQL数据库设计
  11. python自动化之控制浏览器
  12. 【win 10系统激活】
  13. BUUCTF~Misc~Test5
  14. Windows10 如何清理注册表,教大家清理注册表方法
  15. 算法珠玑算法总结(转)
  16. DS二叉树——Huffman编码与解码(不含代码框架)
  17. 简单制作《坦克大战》
  18. Yolov5环境配置 配不好来打我
  19. 工作快两年了!斗胆谈谈校招社招技术面试那些事
  20. FCK编辑器在项目中的引入

热门文章

  1. LG C920 高帧率视频获取方法
  2. 东华理工大学arm试卷_《ARM体系结构》期末考试试卷含答案.doc
  3. 面试被基础问题问倒了 js jquey vue
  4. 移动电商达令App,为何受投资人青睐
  5. 暑期特别企划 | 快来接收 PingCAP Talent Plan 的小惊喜!
  6. canny检测出的多个边缘合成一个_Canny边缘检测算法
  7. 关于贝叶斯网络的一些判定
  8. Java多线程电影院,干货来袭:图解Java多线程(一)
  9. 怎么DIY快速制作一款手机App软件?
  10. Tableau表格取消合并单元格