今天我们尝试用Qt + C++实现以前玩过的一个小游戏,规则很简单,在一个圈上均匀分布着八盏灯,点击其中一盏就会同时切换它与它对面两盏灯(即它正对面灯的左右相邻两盏)的状态,将所有灯点亮即为游戏胜利。使用VS2022 + Qt5.15.2开发。
本文不光是为了过一遍开发流程,让读者(也让笔者)熟悉一下Qt VS开发的一些流程操作,更重要的是笔者想表达整个开发过程中一定要模拟用户(玩家)视角来设计软件的流程,因为操作界面讲究的就是用户的交互性,如果只站在开发者便利的角度设计软件,最终的成品会出现很多反直觉的操作方式和逻辑。
下面开始我们的开发过程。
首先创建Qt工程,使用designer设计界面,注意善用布局,这样既能保证界面窗口缩放不影响控件显示,还能适应不同分辨率的屏幕。我们设计如下的界面,尽量使用栅格布局,以及水平垂直布局加弹簧来调整间隔。
使用layoutStretch参数来调整某布局里面的子布局之间所占的空间比例,默认0,0就是一比一。
注意对需要的控件或窗口进行尺寸(或最小尺寸)的固定,以保证其维持完整的形态,比如我们最关键的放灯和操作按钮的widget,我们固定尺寸并使用打破布局,来自由移动调整其中控件的位置,使其看起来位于一个圆上。
接着是载入资源文件的部分,我们先收集好需要的素材,这里共一张gif(作为logo),以及表示灯开关两种状态的两个图标,logo我们直接在网上找合适的gif使用,灯的图标这里选择用电脑画图自己画了两个,大家可以自行决定。我们把所有的资源放在同一个目录下,在VS解决方案资源管理器中找到资源文件.qrc打开,向其中add我们全部的资源。