zoukankan      html  css  js  c++  java
  • Qt版连连看之极速连连看:结构解析

    【github地址】speedlink-qt

    【源码结构说明】

    本来想用Umbrello自动生成类图的,可惜不知道怎么的,我的源码导入之后Umbrello老是死掉,而我又不怎么会画UML图,只好画个概要图了。

    首先说明一下,其实整个的程序,最后就是一个叫做GameWindow的类,各个类都以各种方式集成到其中。

    类的关系:

    screenshot5  

    设计说明:考虑到游戏进行中,面板部分的数据只需要一个地图数据加载之后,其表现、内部逻辑操作都相对独立,基本无需外界干涉,因此独立将其做成了DrawArea类集成到界面类Ui::GameWindow中,没有采用界面逻辑分离的方法。其中有一个好处是能够降低主类设计的复杂度,相关性减少。

    GameWindow与DrawArea之间借助Qt的signal-slot机制进行消息传输,当用户选中了一个图块、消除了若干对图块、进入死局时,DrawArea都会发出信号(signal),GameWindow设置相应的槽(slot)进行响应,而对于用户使用道具等情况,GameWindow中按钮被按下发出信号,DrawArea中也设置了相应的槽进行相应。

    screenshot4

    游戏的界面切换使用了StackedWidget,实际上所有的控件都是分页放置的,当需要切换界面时,只要让用户看到相应的页就可以了。由于DrawArea是继承自QWidget,MyButton继承自QPushButton,在designer中加入QWidget和QPushButton,然后将其相应的变形为DrawArea、MyButton就可以了。

    screenshot1

  • 相关阅读:
    前端周刊第一期
    Java CAS 原理详解
    【转载】Linux系统调用SYSCALL_DEFINE详解
    简述伪共享和缓存一致性MESI
    exchange发邮件
    Flutter屏幕适配(自适应)方案
    dart类初始化 future方案
    windows下postgresql自启动
    How can I call an async method in StatelessWidget.build method?
    实战分层架构
  • 原文地址:https://www.cnblogs.com/qianyuming/p/2138552.html
Copyright © 2011-2022 走看看