Qt实现卡牌对对碰游戏

效果

闲来无事,实现一个对对碰游戏,卡牌样式是火影动漫
先上效果:

卡牌对对碰_火影主题

玩法

  1. 启动游戏,进入第一关卡,所有卡牌都为未翻开状态,即背面朝上;
  2. 点击卡牌,则将卡牌翻开;
  3. 如果当前翻开的卡牌和上一次翻开的卡牌不一致,则1s后,将两张卡牌再次背面朝上;
  4. 如果当前翻开的卡牌和上一次翻开的卡牌一致,则两张卡牌都会正面朝上;
  5. 全部翻开,本官通关,则进去下一关卡。

UI

上一张初始UI图:
在这里插入图片描述
再上一张通关图:
在这里插入图片描述

示例

在这里插入图片描述

  • 可以加个启动界面;
  • 根据分类原则,后期可以加一些菜单及快捷工具操作,比如选关卡,关卡通关耗时等操作,因此主窗口选择QMainWidow,如果想样式美观,可自定义重写QMainWidow
  • 因为是不同关卡,所以选择栈控件作为中央窗体,可进行界面切换;也可以只有一个页面,根据关卡,动态刷新;
  • 将关卡作为一个类;将关卡中的各个项作为一个类;
  • 因为得创建,因此后来可以使用工厂模式进行关卡及项创建;
  • 通过定时器与鼠标事件进行界面卡牌打开及关闭;
  • 通关后,提示。

由于界面展现效果不好,以下是部分实现代码,代码链接在下方1,可下载:

item.h

#ifndef ITEM_H
#define ITEM_H#include <QLabel>class Step;namespace Ui {
class Item;
}
// 在关卡中创建的项
class Item : public QLabel
{Q_OBJECTpublic:explicit Item(const QString& strItem, Step* pStep, QWidget *parent = nullptr);~Item();// 是否翻开void setOpen(bool b){m_bIsOpen = b;}bool open(){return m_bIsOpen;}protected:// 触发鼠标事件virtual void mouseReleaseEvent(QMouseEvent *ev) override;virtual void mousePressEvent(QMouseEvent *ev) override;private:Ui::Item *ui;Step*       m_pStep;bool        m_bIsOpen = false;
};#endif // ITEM_H

step.h

#ifndef STEP_H
#define STEP_H#include <QWidget>
// 类前置
QT_FORWARD_DECLARE_CLASS(Item)namespace Ui {
class Step;
}class Step : public QWidget
{Q_OBJECTpublic:explicit Step(const QString& strStepPath, QWidget *parent = nullptr);~Step();// 设置上一个点击的itemvoid setPreviousItem(Item* pItem){m_pItemPrevious = pItem;}Item* item(){return m_pItemPrevious;}bool check();
private:// 初始化关卡QList<QStringList> initStep(const QString& strStepPath);// 初始化项void initItem(const QList<QStringList>& listSL);// 创建关卡内的项Item *createItem(const QString& strItem);private:Ui::Step *ui;Item*       m_pItemPrevious = nullptr;    // 上一个Item
};#endif // STEP_H

mainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class QStackedWidget;namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private:// 初始化关卡配置文件void init();private:Ui::MainWindow *ui;QStackedWidget*         m_pSW;
};#endif // MAINWINDOW_H

代码链接


  1. 卡牌对对碰: https://gitcode.net/MrHHHHHH/qt-_card/-/blob/master/FlipTheCardGame.rar ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/173927.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用排序算法

目录 直接插入排序 希尔排序 ​编辑 选择排序 堆排序 冒泡排序 快速排序 hoare版 挖坑法 前后指针法 非递归 归并排序 非递归 计数排序 直接插入排序 直接插入排序跟依次模扑克牌一样&#xff0c;将最后一张牌依次与前面的牌比较&#xff0c;最后将牌插入到指定位…

Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 前面两篇文章分别介绍了两种搭建神经网络模型的方法&#xff0c;一种是基于tensorflow的keras框架&#xff0c;另一种是继承父类自定义class类&#xff0c;本篇文章将编写原生代码搭建BP神经网络。 实现代码 import tensorflow as tf from sklearn.datasets import…

【数据库】

文章目录 1. 聚合函数练习&#xff1a; 2. 子查询 1. 聚合函数 where中过滤条件中不能写聚合函数&#xff0c;有聚合函数需要写到Having中 方式一效率高&#xff1a; Select执行流程 练习&#xff1a; 2. 第七题&#xff1a;count(*)有问题&#xff0c;原因是左外连接后…

【继承练习题--多态-- 动态绑定-- 重写】

文章目录 继承的练习题&#xff1a;多态多态实现条件 动态绑定什么是重写Override 注解重写的条件&#xff08;缺一不可&#xff09;有一种特殊的重写&#xff1a;叫协变类型重写的设计原则快捷键生成重写重写和重载的区别object类是所有类的父类 总结 继承的练习题&#xff1a…

支付宝证书到期更新完整过程

如果用户收到 支付宝公钥证书 到期通知后&#xff0c;可以根据如下指引更新证书 确认上传成功后就会生成新的证书&#xff0c;把新的证书替换到生产环境就可以了

标准ACL,扩展ACL,基本ACL,高级ACL

其实标准ACL&#xff0c;扩展ACL&#xff0c;基本ACL&#xff0c;高级ACL是同一个概念的不同名称&#xff0c;区别在于: 思科路由器支持标准ACL和扩展ACL两种类型的访问控制列表&#xff0c;没有”基本ACL“和”高级ACL“的概念&#xff0c;而华为路由器都支持 编号范围&…

基于鸟群算法的无人机航迹规划-附代码

基于鸟群算法的无人机航迹规划 文章目录 基于鸟群算法的无人机航迹规划1.鸟群搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用鸟群算法来优化无人机航迹规划。 1.鸟群搜索算法 …

[java/力扣110]平衡二叉树——优化前后的两种方法

分析 根据平衡二叉树的定义&#xff0c;只需要满足&#xff1a;1、根节点两个子树的高度差不超过1&#xff1b;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…

springboot第44集:Kafka集群和Lua脚本

servers&#xff1a;Kafka服务器的地址。这是Kafka集群的地址&#xff0c;生产者将使用它来发送消息。retries&#xff1a;在消息发送失败时&#xff0c;生产者将尝试重新发送消息的次数。这个属性指定了重试次数。batchSize&#xff1a;指定了生产者在发送消息之前累积的消息大…

2.flink编码第一步(maven工程创建)

概述 万里第一步&#xff0c;要进行flink代码开发&#xff0c;第一步先整个 flink 代码工程 flink相关文章链接 flink官方文档 两种方式 一种命令行 mvn 创建&#xff0c;另一种直接在 idea 中创建一个工程&#xff0c;使用 mvn 的一些配置 mvn命令行创建 mvn 创建flink工程&…

基于SpringBoot的工厂车间管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 人员管理 看板信息管理 设备信息管理 生产开立管理 人员功能实现 生产开立管理 生产工序管理 生产流程管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 社会发展日新月异&#xff0c;用计…

6.scala辅助构造器与为构造函数提供默认值(一)

概述 本文主要说明: 辅助构造器 与 为构造函数提供默认值 的使用 辅助构造器为构造函数提供默认值 相关链接 阅读之前&#xff0c;可以浏览一下 scala相关文章 辅助构造器 可以通过定义名为this的方法来定义辅助Scala类构造函数。只有几个规则需要了解&#xff1a; 每个辅助…

冯诺依曼体系结构、进程、环境变量

冯诺依曼体系结构、进程、环境变量 一、冯诺依曼体系结构1、结构图2、示例3、CPU与数据 二、进程1、概念2、查看进程&#xff08;1&#xff09;通过/proc系统文件夹&#xff08;2&#xff09;通过top和ps用户级工具&#xff08;3&#xff09;通过系统调用 3、通过系统调用创建进…

会声会影2024这款视频剪辑软件怎么样?

众所周知&#xff0c;每每有新兴行业逐渐崛起壮大的时候&#xff0c;随机而来的就是这个行业创造出的衍生行业&#xff0c;比如说现在的短视频平台或者是视频剪辑行业&#xff0c;都是很明显的例子&#xff0c;今天我们就针对剪辑软件来和大家聊一聊&#xff0c;会声会影2024这…

论坛搭建.

目录 一.配置软件仓库 二.安装http php miriadb 三.配置数据库 一.配置软件仓库 1.进入仓库目录 cd /etc/yum.repos.d 2.创建仓库文件 vim local.repo 3.在 local.repo中写入:(粘贴的时候注意位置) [biaoshi] 仓库标识符 namemiaoshu …

禁用Google Chrome自动升级、查看Chrome版本号

问题 查看Chrome版本时&#xff0c;会自动升级&#xff0c;这个设计很垃圾,对开发者不友好&#xff1b;查看Chrome版本方法&#xff1a;chrome浏览器右上角—>自定义及控制Google Chrome(三个竖着的点号)------>帮助---->关于Google Chrome。 解决办法 禁用自动升级…

[Unity][VR]透视开发系列3-Passthrough应用的真机测试方法

【视频讲解】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…

Open3D(C++) 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 平面方程的一般表达式为: A x + B y + C

14个最实用的WordPress SEO插件推荐

在这篇文章中&#xff0c;将为你推荐最有利于网站SEO的WordPress插件&#xff0c;这里介绍这些插件的主要功能及使用技巧&#xff0c;合理使用它们将有助于网站SEO排名。无论你是一个刚刚开始的博客作者&#xff0c;还是一个经验丰富的企业网站管理员&#xff0c;我们都将帮助你…

洛谷P1765 手机 / 秋季赛 九宫格

手机 题目描述 一般的手机的键盘是这样的&#xff1a; 要按出英文字母就必须要按数字键多下。例如要按出 x \tt x x 就得按 9 9 9 两下&#xff0c;第一下会出 w \tt w w&#xff0c;而第二下会把 w \tt w w 变成 x \tt x x。 0 0 0 键按一下会出一个空格。 你的任务是…