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

时间:2024-03-27 18:55:47

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


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

本篇副标题:

​ 基于QT的跨平台网络对战象棋之项目简介概述

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

​ 本篇博客将会描述一个完整的使用Qt Creator 5开发的项目“基于Qt开发的跨平台网络对战中国象棋游戏”,因为篇幅比较长,涉及的知识点也比较多,故根据相关知识点划分为多篇文章。此篇幅主要是介绍该项目设计的原因、背景、平台工具、思路分析和可行性等

项目简介:

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

项目特色:

  1. 开源

  2. 免费

  3. 使用 QT 开发界面美观

  4. 无广告和内置付费充值 VIP 等

  5. 可以支持基本所有的主流系统的版本分布

  6. 大学自学的语言,实现项目,检验自己的学习效果

  7. 提供网友和和我一样的自学者一个经验和心力路程的分享

补充:仔细想一想,你用的手机或电脑有没有一款软件,至少启动页没有广告、或者付费等行为,没有广告和付费,所以这款软件超级良心的好不好。 且开源意味着免费,互相学习,接收大众的监督。

实现功能:

​ 该项目主要功能模块分为玩家与自己对战、玩家与电脑AI对战、多人网络对战、对战计时、关于作品信息。实现了在单机或联网状态下,无论是单人还是多人,无论使用系统是否相同,均可以实现象棋游戏功能。

责任描述:

​ 该项目从0开始写的代码,最开始的从类的架构设计,到功能模块的编码的实现,到游戏的测试和游戏其他平台的移植,均由自己独立完成。亦发布在博客、

上提供详细展示。

其他:

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

项目演示效果:

视频演示:

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

图片演示:

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

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

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

开发平台环境:

硬件环境

电脑: 机械革命(MECHREVO)深海泰坦 X6Ti-M2 多彩版
主板:处理器名称 QuadCore Intel Core i7-6700HQ, 3300 MHz (33 x 100)
显示设备:显示适配器 Intel® HD Graphics 530 (1 GB)
多媒体:音频适配器 Intel Skylake HDMI @ Intel Sunrise Point PCH - High Definition Audio Controller [D-1]
存储设备:硬盘驱动器 HGST HTS541010A9E680 (1 TB, 5400 RPM, SATA-III)
存储设备:硬盘驱动器 Phison SM280128GPTC15T-S114-0D5 (119 GB)
输入设备:键盘 HID Keyboard Device
输入设备:鼠标 HID-compliant mouse
网络设备:主 MAC 地址 00-50-56-C0-XX-XX
网络设备:网络适配器 Intel® Dual Band Wireless-AC 3165 (192.168.199.217)
网络设备:网络适配器 Realtek PCIe GbE Family Controller
DMI:DMI BIOS 版本 N.1.00
DMI:DMI 主板版本 0.1
DMI:DMI 主板*** To be filled by O.E.M.

软件开发环境

系统PC端 Windows 10 x64(专业工作站版本)
系统PC端 Ubuntu 16.04.5 x64 (LTS)
系统PC端 MacOS 10.14 x64
系统手机端 IOS 11.4.1
系统手机端 Flyme 7.1.5.0A(基于 Android 7.0)
软件 Qt Creator 4.7.1 (Enterprise)
软件 Realtek PCIe GbE Family Controller
软件 Enigma+Virt ual+Box+7.80
软件 VMware Workstation Pro
软件 GitHub Desktop

选用开发语言:

​ C++/Qt5

项目下载地址:

项目完成时间:

​ 2019-01-03

项目不足之处:

​ 时间仓促,可以添加两个输入框和确定按钮,分别输入IP和端口号,进行连接服务器端,避免在代码里面修改IP和端口。

项目总结心得:

​ 虽然有点耗费时间,但是还是值得的。

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

项目开发意义:

​ 看不惯现如今,无论是电脑端,还是手机端,亦或者是其他设备平台的上软件,无论是游戏、还是效率类的 App,均都充满着商业气息,至少启动页面都是带着广告,亦或是带着内置充值付费的内容,让使用者感觉不悦。个人对于中国传统的文化的爱好、编程的喜爱、开发的喜爱、逻辑思维的游戏喜好,外加因为毕业需要,和充分锻炼自己的编程开发的思维,提升自己的能力和其他方方面面。所以决定开发出这个基于 QT 的跨平台网络对战中国象棋游戏。
​ 在该中国象棋运行程序,充分的考虑到了缺少玩家、缺失网络和没有足够多的电子设备等情况,开发出了多个游戏策略模式,以应对不同情况的需求。且程序最大优点是免安装,操作简单,主流操作系统基本全面覆盖。也没有广告或者付费充值等内容。只做好简单的下棋游戏功能,让玩家感觉到一个开发者的无私的热情和中国象棋爱好者的那一份单纯的情怀。

项目方案:

设计方案一:

主要想法:
尽量采用最稳定最新的开发工具进行编程。确保运行程序的稳定性和用户体验。其次是便于软件的开发和后期维护、简化流程。软件开发层次考虑:首要是尽量考虑采用最稳定的、其次再是最新的开发环境。这样充分保证软件开发出来之后的稳定性,以用户体验作为最大标准。且考虑到开发周期和变卡的便捷性。所以在编程开发的采用 Windows 10(专业工作站版本)、Ubuntu 16.01.5 (LTS)、 MacOS10.14、 IOS 11.4.1、 Flyme 7.1.5.0A(最新的稳定版、 基于 Android 7.0)、 Qt Creator 5.9.7(LTS)、Enigma+Virtual+Box+7.80。

大概设计思路如下:

​ 利用一些 Qt Creator 提供的一些默认组件,来进行象棋和棋盘的绘画,对于象棋的每一个棋子的走棋规则,就利用网上的提供的一些库函数来进行调用。最后添加一些贴图来进行界面的美观美化。然后象棋的基础信息就存储在SQL Server 2012 创建的表里面。且开发一个类似于微信的聊天界面,用以玩家进行通信。且将所有的消息和注册用户的相关信息全部都存储到 SQL Server 2012 的数据库表里面。 最后将这个中国象棋界面和独立的聊天界面合二为一,当编码完成之后,进行多个系统平台的发布。

设计方案二:

主要想法:
尽量采用最稳定最新的开发工具进行编程。确保运行程序的稳定性和用户体验。其次是便于软件的开发和后期维护、简化流程。

软件开发层次考虑:

​ 首要是尽量考虑采用最稳定的、其次再是最新的开发环境。这样充分保证软件开发出来之后的稳定性,以用户体验作为最大标准。且考虑到开发周期和变卡的便捷性。所以在编程开发的采用 Windows 10(专业工作站版本)、Ubuntu 16.01.5 (LTS)、 MacOS10.14、 IOS 11.4.1、 Flyme 7.1.5.0A(最新的稳定版、 基于 Android 7.0)、 Qt Creator 5.9.7(LTS)、Enigma+Virtual+Box+7.80。

大概设计思路如下:
主要是使用 Qt Creator 的 C/C++功能,基本不使用控件拖拽,尽量使用手写代码生成、熟悉面向对象编程。提高手写代码能力。去掉数据库存储数据和为玩家相互聊天的功能。全程基本只采用 Qt Creator 独立开发。

设计方案对比

​ 设计方案一重点在于开发工具的最新版本的使用, 和将数据存储在数据库里面,主要是使用 Qt Creator 和 Visual Studio 和 SQL Server 的融合使用。在不通的层次使用不同的开发工具。和加强熟悉多种工具的融合,提升整体的技术。

​ 设计方案二则是重点在于开发工具的稳定。但是对于数据的存储采用数据结构的方式, 棋子界面和棋子采用最基本的系统 API 进行绘画。关键熟悉面向对象的开发方式。

​ 综上两者比较,我就决定采用设计方案二。主要理由如下。使用最新版的工具开发,有时候会遇到许多问题,或者莫名的异常警告不通过。而又难以在网上搜寻到合适解决方案,导致项目搁浅。且尤其是采用 Visual Studio + QtCrator 开发,其中还需与多余的环境设置与修改,比较复杂;且 Qt Creator +SQL server 的开发,没有提现成的驱动,需要自己下载源码编译,也不容易编译通过。且上面这种配合方式我几个月前试过了,操作复杂不易实现。且本就是写 C/C++的项目。想着熟悉一下数据结构的知识,看着能不能自学之后达到融会贯通的地步。 且还相比前者方案,也更加便于软件的开发和项目的稳定性。赢得玩家好感。

项目成品运行环境:

​ Windows 平台、 Linux 平台、 MacOS 平台、 Android 平台、 ios 平台等。以上平台只要是目前常用的主流系统平台,都可以运行;且之后也都是了解了一下,就连一些小众化的平台,比如 Windows CE/Mobile、嵌入式 Linux(Embedded Linux)、 Symbian、 Maemo、 MeeGo 等平台,只要设置好相关的环境之后进行编译生成,都可以基本无需要修改源码、 都是可以直接运行在其相关的平台上面。受限于硬件和软件设备和其他的环境限制, 外加时间和个人精力有限,使得无法在所有版本平台均测试运行。但是在主流的系统平台上面,均做了项目产品的演示和生成,且所有的参与测试的平台,均测试成功。其他小众环境平台,若有相关的需求,可以参考开发帮助文档和开源社区的帮助。 最后结果均运行对应程序时候,都无需安装特殊的运行库或者指定环境才能运行。且电脑端的中国象棋游戏程序均无需安装, 为绿色版, 点击即可以运行。

开发工具介绍:

​ Qt Creator:一个跨平台集成开发环境(IDE),可为多个桌面,嵌入式和移动平台创建C ++和QML应用程序。它附带一个代码编辑器,并与用于在整个产品生命周期中设计,编码,测试,部署和维护软件的工具集成在一起。

​ Enigma+Virtual+Box+7.80: 软件虚拟化工具,它可以将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。它支持所有类型的文件格式,虚拟化后的软件不释放任何临时文件到您的硬盘,文件模拟过程仅在内存运行。

​ VMware Workstation Pro:提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。

​ GitHub Desktop:而Github是用Git做版本控制的代码托管平台,它提供了web界面,你可以在上面创建资源仓库来存放你的项目。

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

项目思路分析:

数据存储设计:

​ 因为数据量不算大,加上简化流程开发,故此次采用数据结构,不使用数据库

界面设计:

​ 使用QT5设计界面,且方便外加美观。

采用技术:

​ QT widget + C++ +数据结构 +网络原理

重难点:

  1. 棋子和棋盘的绘画
  2. 棋子ID的确定
  3. 每一类型棋子的规则制定
  4. 多界面之间的切换
  5. 给运行程序添加自定义的突图标
  6. 电脑AI的算法
  7. 跨网络TCP协议的制定
  8. 多平台的移植
  9. 多个平台的发布流程

可行性分析:

技术可行性:

​ 基于QT的跨平台网络对战象棋项目,采用Qt Creator作为界面设计和功能设计。且Qt提供的良好的封装机制使得Qt的模块化非常高,可重用性良好;还有着丰富的API接口提供和大量的开发文档提供支持[1],更是有全球性和中文的开源社区。数据方面采用数据结构和STL和容器来存储,无需额外使用数据库;亦是减少发布时候的复杂度。且自己自从大一开始,到现在,多次反复的学习和研究C/C++相关的知识,基本功比较扎实,加上具有良好的自学能力、沟通能力、和自己用Baidu和Google来解决开发过程遇到的出错和技术上的问题。另外还有指导老师可以依靠和寻求帮助,开源社区热心网友也有技术支撑。综上所述,所以在技术可行性是可行的。

操作可行性:

​ 基于QT的跨平台网络对战象棋的项目,其完全是根据不会怎么操作电脑和手机平板的象棋爱好者提供的量身定制,在运行流程上十分的简便清晰。且该运行程序的用户设计比较友好,功能分明,操作简单,且提供了相应的弹窗提示。综上所述,所以在操作可行性是可行的。

法律可行性:

​ 基于QT的跨平台网络对战象棋的项目,本就是自己对于毕业设计从决心开发的一款游戏,一开始就是想着只是提供象棋爱好者一份更好的选择。对于采用的Qt Creator,其中Qt虽然是商业公司的产品,但是走的却是开源路线,提供免费下载,全部都是开放源代码,非商业用途亦采用GPL的版权宣告。且本人也没有违反国家相关法律法规。综上所述,所以在法律可行性是可行的。

经济可行性:

​ 基于QT的跨平台网络对战象棋的项目,主要是对于一些商业化严重的游戏的市场局面看不过去,和个人对于传统文化的爱好来开发的;所以本就一开始想着就是开源、非盈利的想法而设计的一款产品。虽没钱可图,但是这样花费时间和精力开发,能够让一些爱好象棋的人在使用这款软件的时候感觉到开心,我就会感觉到很开心。综上所述,所以在经济可行性是可行的。

重要源码:

​ 无

项目发布流程:

​ 对于基于QT的跨平台网络对战中国象棋游戏项目设计流程步骤如下:

(1)确定开发环境:主要是使用Qt Creator 4.7.1

(2)确定游戏主题:使用透明背景,主要是以灰色和浅蓝色为主[2]

(3)素材图片收集:在千库网选取免费图片背景素材,在阿里图标库中选取免费的授权的阿里巴巴矢量图标。

(4)规划布局:采用近似黄金比例来分割棋盘区域和计时器区域和作者区域。

另外单独使用一个可关闭界面显示关于作者、作品详情。

(5)设计项目框架:设计关于功能和类的组合、继承关系图示。

(6)开发编程:根据设计好的框架类来进行填充和功能的扩展。

(7)测试项目:进行作品的白盒和黑盒测试,以及在Debug状态下的部分调

整优化。

(8)项目跨平台发布:分别在主流的操作系统Windows、Linux、MacOS、Android和IOS上面发布。且进行动态库的打包和压缩。

(9)开源共享:将编译好的各平台的release版本,以及源码上传至github上,进行发布和开源。

项目测试:

​ 见后期文章(按照顺序写)。

项目多平台移植:

​ 见后期文章(按照顺序写)。

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

上一篇博文:

项目实战:Qt5/C++:QT象棋【初版】

下一篇博文:

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