【开发Log】C++QT连连看

这篇具有很好参考价值的文章主要介绍了【开发Log】C++QT连连看。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.10

开发的初衷是闲来无事开了把宠物连连看,然后发现打了几遍第一关都过不去,于是想自己写个,这样就可以任意使用提示次数了(bushi。其实今天正好是老妈生日,问了下老妈她竟然还玩连连看,还ak了orz。于是乎,想写个上强度版给老妈作生日礼物2333

1.12

昨天出去玩了,今天开工。边玩游戏边写效率实在不高,找了素材,到晚上才写完30%的ui、

界面用的QGraphicsView,QGraphicsScene,QGraphicsPixmapItem这一套写的,不太熟当练习了。

1.13

主要写了一下消除的算法。

连连看消除的规则是,对于两个要消除的元素,判断它们之间是否存在一条折角不超过三次的路径。

代码实现上,对于选中的两个元素的坐标(a,b)和(c,d),先考虑折角次数为三的情况,我们去枚举中间那个线段。

【开发Log】C++QT连连看

比方上图,就是去枚举第二类线段,然后判断一下线段2两端是否能直达两个目标点。思考一下,可以发现需要枚举的第二类线段,有一些特点,首先一定是直的(废话233),这样它的两个端点的横或纵坐标必有一个相同,再者两端的坐标(u0,v0),(u1,v1),对于(u0,v0),u0和v0至少有一折=者等于a/b/c/d。

折角次数为三的情况解决了,其实折角次数为二的,可以看成其中两个个点重合了。

设地图为n*m的矩阵,有用的端点大概是2(n+m)个,有用线段大概是【开发Log】C++QT连连看个,check一条线段暴力的话是(n+m)的(就模拟走一遍是不是通的),可以用树状数组维护前缀和优化到O(logn+logm),不过n,m很小就没必要优化了(主要太懒了233)。总的一次判断是否有解,大概是【开发Log】C++QT连连看,一般n,m大概都是在[10,20]间,跑起来很快,100ms绰绰有余。(写许久算法题,已经形成了写什么都要控制在1s内的习惯了2333)。

讲个思路,代码又丑又长就不贴了。。。

感觉主要是ui和一些交互费点功夫,需要查资料实现,算法甚至不用优化233.

1.14

先贴个进度吧,截止到昨天,非常丑陋的框架。。

【开发Log】C++QT连连看

昨晚写完消除的算法后,就想了好一会对于选中图案的显示问题,果然是被交互干烂了。今天用QPainter试了好久发现一直显示不了选中框,查了下发现QPainter只能在窗口上绘画,而我选用的是Scence那一套。后来发现Scence有自带的addline。

改进了一下ui,按钮背景原来可以改透明的。。。

改进了下消除算法,昨天写的有bug,现在版本是优先输出折角点最少的合法方案。否则可以两个点,非要三个点(含重叠点),输出的方案很奇怪。

提示功能,本质上也是枚举所有可行方案,如果纯暴力的话,n*m的矩阵,有【开发Log】C++QT连连看对坐标要检查,检查的复杂度上面提过,大概是【开发Log】C++QT连连看, 这样总的复杂度是【开发Log】C++QT连连看,n=100就爆炸了,要跑10秒(虽然n=100很少见),反正看这个复杂度很不爽,于是乎思考一下优化。

对面每个位置(x,y),维护四个数组,分别是(x,y)向左/右/上/下可以无障碍延伸哪里

【开发Log】C++QT连连看

如上图,对于打星的柠檬,上面是青苹果,左边是洋葱,右边是柠檬,下面是菠萝,每个位置都维护这么一个信息。这是【开发Log】C++QT连连看的。

对于一条线段的情况,只要对每个位置看右边和下面的元素,是否和自己相同。这是O(nm)的

对于两条线段的情况,也就是一个"L"的情况,我们枚举拐角点,然后判断上左、上右、下左、下右元素是否有相同的情况。

【开发Log】C++QT连连看

对面三条线段的情况,如上图。我们枚举中间的线段(即黑线),然后合法的情况,只能上面两个点匹配下面两个点,这是【开发Log】C++QT连连看的,主要瓶颈是枚举中间线段。

这样总复杂度【开发Log】C++QT连连看,少了一层n/m,虽然没优化多少。。。感觉这能出成题啊2333

对于scence界面的维护很麻烦,需要维护界面上每个东西的指针。。如果这个scence(要一直用的话).

ok,今天就到这里。大的东西还剩倒计时,roll牌,关卡间的联通,还有些ui的优化,还有交互,明天再说。

1.17

update on 4:14 am

逃课一天+回家一天(刚到家

【开发Log】C++QT连连看

贴一下,目前进度,已经具备雏形了。右边有提示、洗牌和倒计时,还有通关成功、通关失败的画面。

倒计时用QPainter和QTimer画的,洗牌的话就是重新随机初始化一遍图,不过u1s1随机出两个相邻且相同的元素的可能性有点高啊,理论上概率是【开发Log】C++QT连连看,算了一下n = 15时候,概率差不多为52%,那似乎是正常的。。。

试了下难度,时限1min,图案种类21种,10*10的矩阵,我还开了无限次roll,都过不了???大概还剩十几个块,老年手速,没道具的话感觉非常困难啊。

颜色相差比较大,眼睛一扫就能把某种给都观察到,比如这里面的蓝莓的颜色就很鲜明;对比柠檬、菠萝、香蕉还有梨,就不容易一眼扫完233。

想起来音效和背景音乐还没弄😱,进度--(悲。

啊这,下午在搞关卡模式,顺便测了一下,又发现消除算法和提示算是写了两个神笔错误QAQ。

关卡变动影响矩阵各种参数(大小、图案种类等),一开始把level当做参数传给各部分包括ui,的方法,然后还是那个问题,在scence上创建的窗口似乎没有直接函数可以删掉,所以我每次的界面其实覆盖在上次的界面上,然后按钮很奇怪,对于相同的按钮,最先创建的是在上面的,然后每次实际点击的按钮都是第一关的。。。卡了半天,然后换方法了——把level当做static变量,这样无论是按钮覆盖或者按钮是初始化一次,都可以解决上面出现的问题。比较懒,就写了每次重新new一个按钮覆盖到界面上了,^^。

发现没装多媒体模块->下载器需要升级->不搞了。。

到这就完工了233.

贴一下效果图吧,可以自动检测死局情况,关卡参数都是能改的,下图地图是比较easy的情关卡。

【开发Log】C++QT连连看
【开发Log】C++QT连连看
【开发Log】C++QT连连看
【开发Log】C++QT连连看
【开发Log】C++QT连连看

已上传gitee,链接:https://gitee.com/z1033093940/other.git文章来源地址https://www.toymoban.com/news/detail-426549.html

到了这里,关于【开发Log】C++QT连连看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python基础教程——贪吃蛇、连连看小游戏(完整版,附源码)

    1. 案例介绍 贪吃蛇是一款经典的益智游戏,简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。 通过上下左右方向键控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬

    2024年02月04日
    浏览(39)
  • Android实训1_动物连连看游戏界面制作_线性布局

    实训1  动物连连看游戏界面制作 【实训名称】 动物连连看游戏界面制作 【实训效果】 【实训目的】 掌握Android中线性布局的使用 【实训素材】 drawable-hdpi文件夹: 【实训素材CSDN资源链接】 https://download.csdn.net/download/xiaohui_student/88351533?spm=1001.2014.3001.5503 【准备工作】 创建

    2024年02月08日
    浏览(31)
  • Python 一步一步教你用pyglet制作“彩色方块连连看”游戏

    目录 彩色方块连连看 第一步 第二步 第三步 第四步 第五步 第六步 第七步 动态效果展示 小结 本篇除了介绍怎样用pyglet制作连连看游戏,还将介绍如果使用自定义库colorlib,用它来描绘游戏中多种颜色的彩色方块。自定义库colorlib的由来,另请阅读《python 教你如何创建一个自

    2024年04月08日
    浏览(43)
  • Android Studio实现连连看小游戏,比比看谁过关最快~

    这是一款基于Android studio开发的连连看小游戏。主要实现的功能有: 难度设置 打乱重排 排行榜 计时器 背景音乐 消除音效 主要应用的技术如下: Fragment碎片 Service服务 Menu菜单 自定义view Java反射 handler消息机制 BroadcastReceiver 多线程 SQLiteOpenHelper SharedPreferences Bitmap ViewPager Me

    2023年04月08日
    浏览(29)
  • Python 一步一步教你用pyglet制作“彩色方块连连看”游戏(续)

    上期讲到相同的色块连接,链接见: Python 一步一步教你用pyglet制作“彩色方块连连看”游戏-CSDN博客 续上期,接下来要实现相邻方块的连线: 首先来进一步扩展 行列的类: class RC:     def __init__(self, r=0, c=0):         self.r, self.c = r, c     def __repr__(self):         return f\\\'Rc

    2024年04月08日
    浏览(47)
  • Qt扩展-Log4Qt 简介及配置

    日志是程序调试和溯源问题的一个必不可少的好手段,我们可以用系统的log像 QDebug库,但是为了更快的开发,我们可以用更好的工具,比如说,Log4Qt是基于Qt写的一个日志库。也是使用Qt框架的Apache Software Foundation Log4j包的c++移植版。它的目的是供开源和商业Qt项目使用。好像

    2024年02月07日
    浏览(33)
  • Log4Qt日志框架(1)- 引入到QT中

    Log4Qt日志框架(2)-深入分析和使用 github:https://github.com/MEONMedical/Log4Qt 官方(版本较老):https://sourceforge.net/projects/log4qt/ CSDN(0积分):https://download.csdn.net/download/qq_40666149/88233421 Log4Qt 是一个基于 Qt 的日志库,它是 Apache log4j 的一个移植版本。Log4Qt 旨在为 Qt 应用程序提供一个

    2024年02月11日
    浏览(33)
  • log4qt库的使用

    Log4Qt是一个用于Qt应用程序的开源日志记录库。它是基于Apache Log4j的C++实现,并提供了一种灵活和可配置的方式来记录应用程序的日志信息。 Log4Qt允许你在应用程序中定义日志记录器、日志级别和日志输出目标,并根据需要进行动态配置。它支持多个日志记录器以及不同的日

    2024年02月08日
    浏览(27)
  • 使用C++和QT实现Log自定义日志系统

    使用QT的qInstallMessageHandler函数结合qDebug,qInfo实现自定义的日志系统 输出日志到文件和控制台 自动检测日志文件大小 自动更新日志文件修改日期 自动备份 自动删除一个月前的日志文件 支持多线程程序 支持扩展,可输出日志到数据库,网络,或服务器 支持扩展,可使用co

    2024年02月05日
    浏览(37)
  • Android开发 我的开源Android Log “日志狗”LogDog

    目录 一、简介 二、LogDog的优点 1、打印的格式 2、日志信息 3、LogDog的使用便利 4、参数优化 5、日志文件输出 6、日志文件的内容加密 三、依赖使用LogDog 1、添加仓库 2、添加依赖 四、使用说明 1、初始化 2、配置说明 3、如何使用和参数说明 LogDog 是一个开源的 Java 日志框架,

    2024年02月04日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包