QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★)

news/2024/12/23 5:52:03/

QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★)

文章目录

  • QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★)
    • 本篇副标题:
      • 本篇博客讲了什么or解决了什么问题?
      • 项目简介:
      • 其他:
    • 项目演示效果:
      • 视频演示:
      • 图片演示:
      • 开发平台环境:
      • 项目下载地址:
    • 项目在各大平台发布:
      • Windows平台的发布
      • Linux平台的发布
      • MacOS平台的发布
      • Android平台的发布
    • 跨平台游戏演示
    • 项目开源在github
      • 项目源码在GitHub上面开源
      • 项目成品在GitHub上Release发布
    • 项目测试及演示
      • 测试目的
      • 测试过程
        • 黑盒测试
        • 白盒测试
      • 模块测试
      • 性能测试
      • 测试结果
      • 上一篇博文:
      • 源码下载

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本篇副标题:

​ 基于QT的跨平台网络对战象棋项目之Qt的项目在多平台的移植和开源在github、性能测试

本篇博客讲了什么or解决了什么问题?

实现了QT5的项目在windows、Linux、MacOS、Android平台的发布
​ 项目在发布之后,就在github上面进行开源的部署;项目在的黑盒和白盒测试和性能等测试

项目简介:

​ 为毕业需要一份毕业设计;提高自己对于C/C++语言的熟悉和运用**;**加强跨平台QT的框架熟悉,和熟悉掌握完整的项目开发流程;写一些个人而言比较大的项目,用于面试时候的底气和经验;规范编码格式,和逻辑思维锻炼。

其他:

​ 无

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目演示效果:

视频演示:

​ Qt5_ChinessChess 基于QT的跨平台网络象棋对战演示

图片演示:

win10 版本 中国象棋

Linux版本 中国象棋

MacOS版本 中国象棋

跨平台对战

开发平台环境:

windows 10 专业版、Qt Createor 4.7.1、Enigma+Virtual+Box+7.80、VMware Workstation Pro、GitHub Desktop

项目下载地址:

源码:chinessChess
成品:releases

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目在各大平台发布:

Windows平台的发布

本次发布测试的平台为Windows 7 x64Windows 10 x64

步骤:

(1)打开ChineseChess项目。点击Qt Creator左下角的运行程序,选择构建的套件为:Desktop Qt 5.9.7 MinGW 32bit,再构建里面选择Release版本,点击绿色三角形图案。等待程序跑起来之后,关闭掉程序。

在这里插入图片描述

(2)打开项目文件管理器,找到生成的便以文件。然后打开路径D:\programming\qt\build-ChineseChess-Desktop_Qt_5_9_7_MinGW_32bit-Release\release(这里以我的路径为例)。将里面的ChineseChess.exe复制一份,将拷贝的程序另外保存在一个名为英文(这里我为Chess)的空的文件夹里里面。

在这里插入图片描述

在这里插入图片描述

(3)双击运行Qt 5.9.7 for Desktop (MinGW 5.3.0 32 bit),用cd命令进入到上一步创建的空文件夹路径(eg: D:\Chess)。然后运行命令

windeployqt+ 运行程序名(eg:windeployqt ChineseChess.exe)

,回车,将所需的库文件全都拷贝到该.exe程序的当前文件

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

(4)双击运行Enigma+Virtual+Box+7.80程序,在这里面,在“主程序文件名称里面”选中刚刚的拷贝版本D:\Chess\ChineseChess.exe。然后会自动生成输出虚拟文件名称的路径。在文件的Virtual Box Files里面,将上一步骤的上面。然后点击右下角的“文件选项-压缩文件”。最后一步点击右下角的打包。件夹里面生成许多库等,全选,除了ChineseChess.exe以外,全部拖进这里

在这里插入图片描述

(5)等待一分钟,生成的绿色单机版,免安装的有游戏.exe文件,放到任意一个没有任何环境的windows系统的都可以跑起来。不会提示那种缺少xxx.dll的错误提示。完美打包发布这一份作品。

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**

Linux平台的发布

开发平台环境:

编程环境: Ubuntu 16.04.5 x64 (LTS)

编程软件: Qt Creator 4.7.1 (Enterprise)Qt 5.9.7

步骤:Linux发布免安装的运行程序

(1)同样,将完整的ChineseChess项目在LinuxQt Creator编译运行Release版本。
在这里插入图片描述

(2)但是编译不通过,会出现两个错误提示。

error:-1: error: cannot find –lGL和
error:-1: error: collect2: error: ld returned 1 exit status。

原因:是这是由于 Qt5.0 以上的版本默认将OpenGL加入了工程,但是在Linux的机器上没有安装OpenGL,所以只需要在机器系统安装OpenGL即可,此时打开终端,运行

sudo apt-get install libgl1-mesa-dev

即可,再次编译运行。即可成功。

(3)同样将生成的Release文件夹下ChineseChess文件放到一个英文文件夹(eg: qwer)里面.

(4)在上一步的文件夹中新建文件pack.sh。内容如下:

\#!/bin/sh  
exe="ChineseChess" #你需要发布的程序名称
des="/home/yuanyi/Desktop/qwer" #步骤1中的目录即本文件所在目录
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  

(5)cp $deplist $des
在此目录下再新建一个ChineseChess.sh文件(文件名必须与可执行文件名字一样), 文件内容如下(不需要修改):

\#!/bin/sh  
appname=`basename $0 | sed s,\.sh$,,`  
dirname=`dirname $0`  
tmp="${dirname#?}"  
if [ "${dirname%$tmp}" != "/" ]; then  
dirname=$PWD/$dirname  
fi  
LD_LIBRARY_PATH=$dirname  
export LD_LIBRARY_PATH  
$dirname/$appname "$@"

(6)打开终端,执行命令如下

chmod +x ChineseChess.sh 
或者 ./ ChineseChess.sh 

会自动ChineseChess.sh

在这里插入图片描述

(7)将此目录打包发布即可,点击即可以执行。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

MacOS平台的发布

1)同样子,在MacOSQt Creator里面编译运行Release版本的ChineseChess项目。

(2)打开build-ChineseChess-Desktop_Qt_5_9_7_clang_64bit-Release文件夹。进到该目录,会看到有一个ChineseChess.app。这个并不是文件,而是一个目录,只是OS X系统看到某个目录的扩展名是app,就会将其认为是Bundle目录,所以双击会直接执行(当必须要是真正的Bundle)。

在这里插入图片描述

(3)使用QT提供了一个非常方便的打包工具macdeployqt,该文件位于如下目录
/Users/yuanyi/Qt5.9.7/5.9.7/clang_64/bin,可以将这个目录加入到PATH环境变量中。这里有点复杂,(需要注意的是,UnixMacOS就是其中一种】及类Unix系统里,每行结尾只有换行“\n”Windows系统里面,每行结尾是换行+回车“\n\r”)。当在终端里面,将上面目录路径添加到PATH之后。输入一下命令在终端。

:set ff=unix #转换为unix格式
:wq #保存、退出
方可保存和退出成功。

(4)现在只需要执行如下的命令,系统就会自动该着Bundle,把相关的文件和目录都放到Bundle中的相关位置。命令语句如下:

 macdeployqt ChineseChess.app

(5)处理完后,Bundle的目录结构发生改变,很明显,macdeployqt命令将相关文件和目录都放到了Bundle中。现在将这个处理完的ChineseChess.app复制到任何OS X系统上都可以运行了,无论安装没安装QT,都可以运行
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Android平台的发布

步骤:

(1)网上分别下载Java JDK的最新版本,在Oracle的官网里面,安装之后,然后自行配置JAVA的环境变量PATH等。比如我下载的是jdk-8u201-windows-x64.exe。

(2)在下载所需要的Android配置环境。需要下载Android SDK和Android NDK这两样。当然都是推荐越新越稳定的越好。下载之后,全部解压,放置于一个英文目录下。我都放在了D:\software_install\android_qt目录下,里面包含有adt-bundle-windows-x86_64-20140702和android-ndk-r15c-windows-x86_64和android-sdk_r24.4.1-windows和apache-ant-1.10.5-bin。

在这里插入图片描述

(3)打开左上角的工具栏的“工具-选项-设备”一栏。选中Android一栏,进行构建环境的环境配置。在Java Setting里面,将JDK location设置设置为C:\Program Files\Java\jdk1.8.0_201;在Android Setting里面将Android SDK的路径设置为D:\software_install\android_qt\adt-bundle-windows-x86_64-20140702\sdk;Android NDK的路径设置为D:\software_install \android_qt\android-ndk-r15c-windows-x86_64\android-ndk-r15c。当如下图的时候,全部只检测路径通过,会出现一系列的绿色√。然后点击右下角的“Apply”和“OK”。

在这里插入图片描述

(4)上一步骤配置Android的SDK路径之后,如果弹出x的无法通过的话,且提示有“android build tools intall 错误!解决方案27.0.3 ”,报错原因是

是android SDK的版本不是最新的原因,更新SDK中的build-tools 添加27.0.3包即可。解决方案:更新SDK中的build-tools 添加27.0.3包即可,(即将27.0.3这个文件夹复制到D:\software_install\android_qt\adt-bundle-windows-x86_64-20140702\sdk\build-tools文件夹下即可)。若是上一步骤成功,可直接跳过这一步骤,直接看下一个步骤。

(5)选择如下的构建Android的组件构建,编译运行Realease版本。

在这里插入图片描述

(6)打开自己的安卓手机,用数据线连接电脑,然后一定要打开“开发者模式”,且“允许数据通过USB数据线传输”,最好是还把“允许自动安装.apk程序”一栏开启。点击电脑的Qt Creator的运行,在弹出框里面点击插入电脑的所识别的Android手机。

在这里插入图片描述

(7)然后导入选择连接的Android手机,即可以看到项目在手机加载完成。然后点击运行即可。

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

跨平台游戏演示

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目开源在github

项目源码在GitHub上面开源

步骤:

(1)登录github官网网站:https://github.com/

(2)注册一个其网站的账号。用已发布自己的项目,确保在全球范围之类均可以直接看到你说发布的项目的成品和源码。用以帮助其他人和自己人学习,和提供便捷的下载服务。

在这里插入图片描述

(3)注册成功之后,创建一个新的仓库,通常是一个项目作为一个单独的仓库repositories。简单的填写一些项目名称和备注说明,然后点击创建的时候,可以根据自己的需要,看是设置该仓库是公有public还私有private类型的。其中一个可以被全世界范围人点击查看,后者只能够被自己个人查看修改。

在这里插入图片描述

(4)上传源码。点击<>Code界面,然后选定上传Upload Files 按钮,将你的源码拖曳到待选框里面,点击发布即可。需要注意的是,其中一般会默认有一个README.md文本,你可以在里面书写一些简要介绍,或者一些重要信息,这样子源码就会发布成功了的,全球任何人都可以下载源码检验和提交修改使得其更加完美。

在这里插入图片描述

项目成品在GitHub上Release发布

步骤:

(1)如同上一步骤,发布源码类似。在进入该仓库中,单击<>Code界面下的releases按钮。进入之后,再点击Draft a new release 按钮,然后将此之前都编译好的成品。命名好之后,拖曳到待选框里面,给写好说明和简易注释之后,自己命名好版本号,选择发布即可。

(2)如若有修改,可以参考上一步骤,重新发布一版版本即可。需要说明的是,选择过程中,Release 为历史版本;而Latest release才是最好的一个稳定版本,也是推荐下载一个版本;而Latest release则是开发者开发版本,通常就是最新但是却不稳定的版本,推荐喜欢尝鲜的玩家下载。

在这里插入图片描述

(3)说明:若有其他需求,可以自己详细研究github的使用。

(4)提供链接下载地址:https://github.com/touwoyimuli/2019_01_Qt5_ChinessChess/releases

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目测试及演示

测试目的

当基于QT的跨平台网络对战象棋游戏设计完成以后。就开始了测试工作。包括采用的QtDesigner设计,界面绘画显示,棋盘棋子的绘画与更新重绘,网络模块中的Socket套接字是否连接成功。存储在容器里面的棋子步骤是否正确,场面分的计算是否规范合理,网络延时产生的误差毫秒级数。以及自定义的协议传输是否正确连接与解读[12]。玩家与自己对战模式中,一人控制双方轮流切换是否正确;玩家与电脑AI对战中,电脑AI“智慧”程度的设计是否合理;多人网络对战模式中,服务器器端是检测和等待连接否正确;多人网络对战模式中的客户端中,主动提出连接服务器是否会出现异常;对于并发处理的问题是怎么解决的等。为了使的最后开发的中国象棋游戏项目的稳定性、容错性、健壮性、可维护性等。以及是否简易操作、界面是否美观做一个把关测试。也同时对每一个模块都进行功能测试。所以必须使得采用简单地黑盒测试和深入的白盒测试来测试。

测试过程

黑盒测试

​ 站在一个一点都不懂得编程的玩家的角度来玩这个中国象棋游戏来做这个测试。简单的体验一下中国象棋游戏的流程程度,界面操作简易程度,入手困难程度。

​ 测试流程:GitHub官网下载相应的中国象棋游戏绿色版–>点击运行游戏–>选择游戏模式–>开始游戏–>启动对战计时器–>游畅享中–>游戏结束–>终止对战计时器–>游戏结束–>点击关于作者作品–>返回主界面–>在点击进入游戏。

​ 体验感受:官网可以看到游戏的下载项目程序比较小,且覆盖了各个主流版本的系统平台就有下载;其次每一个运行程序离线安装包都很小,在Windows上面也仅仅只有20M左右,当在Linux上面的,仅仅只有676KB,程序体积小的令人不敢相信,和现在市场上面动辄几个G的游戏相比,让人感动。再就是进入游戏界面之后,没有任何花里胡哨的,不适的图片场景和内置诱导付费等场景等,给人极大的舒适感觉和愉悦感。最后就是游戏操作上手度简单易懂,且没有过于繁冗的新手指导,只有点击正确就会有反应,错误点击没有反应。最后就是流程程度,网络延时和操作延时属于毫秒级别的,根本感觉不出来。

白盒测试

​ (测试一)语句覆盖:针对逻辑中显示存在的条件语句(即可以执行语句)进行相关的判断。使得下面的流程图每一种都执行到至少一次。

在这里插入图片描述

(测试二)判定覆盖:对于每一个判定的分支都执行到了至少一次
(测试三)条件覆盖:每一判定中的每个条件,分别按“真”、“假”至少各执行一次

(测试四)判定/条件覆盖:同时满足判定复盖和条件复盖的要求

(测试五)条件/组合覆盖:求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次

上面的多种测试方法,均有测试到,且通常是一边编程,每到一个小的功能实现之后,就会对所有分支进行一下子测试。然后当确认无误之后,再开始进行下一个小模块或者

模块测试

所属板块测试项测试点测试内容测试次数测试结果
开发工具Qt设计师Qt Designer布局是否合理,界面美观程度,是否闪退,缩放有问题5良好
后台数据资源的加载容器QVector<ChessStep *> &stepsQvector里面存放所有可以下棋的走法步骤3良好
图片资源文件夹图片是否均被加载4良好
UI界面选择板块选择游戏模式点击相应游戏模式,是否进入正确的界面9良好
游戏模式单机模式玩家与自己对战一个设备鼠标,轮流红黑双方执棋子6良好
玩家与电脑AI对战电脑AI玩家执棋下棋的“聪慧”程度4良好
网络模式多人网络对战模式(服务器端)检测局域网所有预定短端口的请求3良好
多人网络对战模式(客户端)请求连接指定IP指定端口的服务器4良好
附加功能关于作者板块界面连接跳转关于作者、作品界面、查看退出是否异常6良好
计时板块板块对战计时器计时器的开始、停止、继续、终止重置功能6良好
胜负判断对方将帅被击杀对方将帅被击杀状态4良好
无可选棋子或可下目的地无可选棋子或可下目的地状态4良好
和棋均胜不了,也负不了
算法电脑AI可选择棋子可能无棋子可选状态7良好
选棋子后到达目的位置没有可落子站台7良好
所有可行走法储到容器查看容器存储可走步骤7良好
场面局面分分析局面分优化合理,是否智能7良好
选择最有利走法是否选择最佳有利走法7良好

性能测试

​ 面对一个开发出来的中国象棋游戏程序,是还要有必须的游戏性能测试。简单地就是用户玩游戏需要等待多久?多对应的响应时间;游戏是否会崩溃或者失败?对应的稳定性;还有架构设计是否合理,数据结构设计是否合理?资源整合利用是否有效,代码是否还有进一步的重构能力、以及测试资源的利用率、可扩展性。系统容量等。以上都是需要测试的,其性能的测试水平高低直接影响到的游戏的流畅程度。

性能性能参数结论
客户机自动连接时间0.09s良好
服务器响应连接时间0.14s良好
棋局刷新延时时间0.03s良好
稳定性98%良好
内存泄露0%良好
软件启动时间0.5s良好
平均响应时间0.13s良好
游戏程序体积676KB—20.6M良好
电脑AI智能程度70%良好

测试结果

​ 本小章节,是严格经过白盒测试、黑盒测试、以及性能参数测试等。尤其是对于每一个小板功能板块均进行了测试。其中无论是游戏单机模式,亦或者游戏连接网络对战之后的的模式,均测试得出网络时延属于ms级别的,且运行的时候,所占有的CPU和硬件等资源,网络带宽等,都是非常小的。且游戏运行非常流畅,运行游戏的离线安装包也是非常只之小的,让人感觉舒适开心。且上面各个测试均最后的结果显示为通过。且表现状态为良好。说明此次的基于QT的跨平台网络对战象棋游戏项目从一开始的设计、到中间的编码测试、到最后的设计完成是比较完美的实现的了,且完全达到预期符合要求.

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

上一篇博文:

QT5/C++项目:基于QT的跨平台网络对战象棋(二)


源码下载

  • GitHub: ChineseChess『荐』
  • 或Gitee: ChineseChess

你的 starfork 是对我最大的支持。也欢迎学习这个系列的 QT/DTK 学习,附学习由浅入深的目录


本文初发于 “偕臧的小站” ifmet.cn,同步转载于此。



http://www.ppmy.cn/news/362987.html

相关文章

Silverlight+WCF 新手实例 象棋 专题索引[四十篇后续章已出]

本专题出产简单原由&#xff1a; 一开始的初衷&#xff0c;只是想写个简单的单机BS人机对战版的&#xff0c;开始还下了点AI算法看看的&#xff1b;但是写到最后&#xff0c;都写成了通讯版本的对战了&#xff0c;只因中间不小心看到了WCF的相关内容&#xff0c;顺便加了进来;最…

QT5/C++项目:基于QT的跨平台网络对战象棋(二)(推荐★★★★)

QT5/C项目&#xff1a;基于QT的跨平台网络对战象棋&#xff08;二&#xff09;&#xff08;推荐★★★★&#xff09; 文章目录 QT5/C项目&#xff1a;基于QT的跨平台网络对战象棋&#xff08;二&#xff09;&#xff08;推荐★★★★&#xff09;本篇副标题&#xff1a;本篇博…

实战 Flutter 象棋从零到上架

专栏亮点 基于真实项目「棋路」的开发历程形成专栏&#xff0c;不是市面上的各种「HelloWorld」&#xff1b;专栏内容包含其中的每一和代码&#xff0c;都得到了两次验证&#xff0c;跟随我们的专栏&#xff0c;定能达成目标&#xff1b;真实项目环境中遇到的大量问题&#xf…

c#大作业——围棋(单机版)

之所以选择围棋作为大作业一方面是想挑战一下&#xff0c;另一方面是由于从6岁学围棋到11岁放下&#xff0c;再到今天已将近8年了&#xff0c;也算是回味一下童年吧&#xff0c;毕竟&#xff0c;曾梦想执子走天涯。 这是效果图&#xff1a; 这个程序除了一开始参考了中国象棋…

象棋名手手机版2019最新版_象棋名手326手机版-象棋名手增强版v6.58 安卓版-单机手游网...

象棋名手增强版是特殊版本的象棋手游,游戏画面精美,延续想起玩法,但是加入博弈的玩法,更有积分制,喜欢的玩家可以来单机100手游网下载试玩。 象棋名手326手机版简介 象棋名手3.26是一款攻伐型的象棋软件,在与用户的对战中比较擅长以攻取胜,主要是通过弃子来控制局势最终…

root密码忘记了怎么办?不要慌,一招教你解决!!!(注:红色加粗部分可直接复制粘贴使用)

方法一、init方法 1、启动VM虚拟机 2、GRUB2启动屏显时&#xff0c;按下e键进入编辑模式 3、在linux所在参数行尾添加以下内容&#xff0c;然后按Ctrl X执行 &#xff08;1&#xff09;将ro修改为 “ rw ” &#xff08;2&#xff09; 末尾添加 “ init/bin/sh ” 4、输入指…

Linux中的用户和组的分类

目录 Linux中的用户和组的分类 用户分类 超级用户 系统用户 普通用户 组的分类 基本组&#xff08;私有组&#xff09; 附加组&#xff08;公有组&#xff09; 系统组 Linux中用户和用户组的配置文件 在Linux中&#xff0c;用户账号、密码、用户组信息和用户组密码均…

普元 EOS Platform 7.6 达梦(DM)V8,执行setRelativeDataBatch时报错:com.eos.data.serialize.serializeException:org

【问题描述】 普元 EOS Platform 7.6 使用达梦(DM)V8数据库&#xff0c;执行setRelativeDataBatch时报错&#xff1a;Caused by:com.eos.data.serialize.serializeException:org.xml.sax.SAXParseException:lineNumber: 1;comlumnNumber:1;content is not allowed in prolog 【…