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

  • 相关阅读:
    Python自动化开发-基础语法
    Python自动化开发-简介
    Hello World!
    Mongo导出数据文件导致错误 Got signal: 6 (Aborted)解决方法
    PHP快速排序及其时间复杂度
    PHP读某一个目录下所有文件和文件夹
    PHP获得两个绝对路径的相对路径
    awk神器
    PHP使用Mysql事务
    PHP使用session_set_save_handler陷阱
  • 原文地址:https://www.cnblogs.com/qianyuming/p/2138552.html
Copyright © 2011-2022 走看看