最近想写一个扫雷程序,以检测Qt的学习成果。对于算法和界面布局心中略有所得。但就差GUI的一些细节问题还没想明白。这里的各位谈的架构和设计模式我也不太明白,不过我想算法和GUI的分离这一点算是贴点边吧。
扫雷最关键的地方,在我看来就是开局的部分。因为开局的时候,所有地雷的位置和雷数都可以通过算法一次性解决。接下来的过程无非就是按下某个按钮或插个旗标记,把方块“底下”的情况显示出来就行了。
我的想法是:
1. 在算法层用最基本的char[N][N]来作为“地图”,采用广度优先搜索计算并做好标记。
2. 在GUI层画好方块,地雷和数字,并创建显示策略。
3. 建立算法层和GUI层交互的中间层。用于遍历算法层并调用GUI层的相应函数创建策略。
如此一来算法层可以专注于算法。GUI层可以专注于终端的显示。中间层可以管理前两层的交互方式。彼此之间相对独立,可以尽量少受或不受另一方改动的影响。