QT-坦克大战游戏

news2024/11/15 5:02:51

QT-坦克大战游戏

  • 一、演示效果
  • 二、关键程序
  • 三、下载链接


一、演示效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、关键程序

#include "score.h"
Score::Score(){

health=30;
maxHealth=health;

    QLabel *label1 = new QLabel(this);
    label1->setFrameStyle(QFrame::Plain | QFrame::Box);
    label1->setStyleSheet("background-color:red;");
    label1->setText("Player1");
    label1->setAlignment(Qt::AlignTop | Qt::AlignCenter);
    label1->setFixedHeight(50);
    QFont font1= label1->font();
    font1.setPixelSize(20);
    label1->setFont(font1);

    label1->setGeometry(0,0,100,100 );
    resize(length*health/maxHealth, this->height(),1);

    QLabel *label2 = new QLabel(this);
    label2->setFrameStyle(QFrame::Plain | QFrame::Box);
    label2->setStyleSheet("background-color:red;");
    label2->setText("Player2");
    label2->setAlignment(Qt::AlignTop | Qt::AlignCenter);
    label2->setFixedHeight(50);
    QFont font2= label2->font();
    font2.setPixelSize(20);
    label2->setFont(font2);
    label2->setGeometry(SCORE_WIDTH - 100,0,100,100 );
    resize(length*health/maxHealth,this->height(),2);

    QPalette p(palette());
    p.setColor(QPalette::Window, QColor(255, 243, 240)); //bricks & box
    //p.setColor(QPalette::Window, QColor(224, 255, 224)); //forest

    this->setAutoFillBackground(true);
    this->setPalette(p);

    this->setFixedHeight(50);
}


void Score::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter1(this);
    QPainter painter2(this);

        painter1.save();
        painter1.setBrush(Qt::blue);
        if(!hp1.isNull())
            painter1.drawRect(hp1);
        painter1.restore();

        painter2.save();
        painter2.setBrush(Qt::green);
        if(!hp2.isNull())
            painter2.drawRect(hp2);
        painter2.restore();
}

void Score::slotDamage(int health,int ID){
   std::ofstream fout;
   if(ID==1){
        resize(length*health/maxHealth, this->height(),1);
        if(health<=0){
              std::ofstream fout;
                fout.open("Results.txt");
                fout << "Player2 WON!!!!";
                emit signalEndOfTheGame(2);
           }
   }
   else if(ID==2){
        resize(length*health/maxHealth,this->height(),2);
        if(health<=0){
                fout.open("Results.txt");
                fout << "Player1 WON!!!!";
                emit signalEndOfTheGame(1);
           }
   }
   fout.close();
}

void Score::resize(int width,int height,int ID){
    if (width < 0) width = 0;

    if(ID==1){
        hp1 = QRectF(100, 0, width,height);
        update();
    }else if(ID==2){
        hp2 = QRectF(SCORE_WIDTH - 100, 0, -width,height);
        update();
    }
}

三、下载链接

https://download.csdn.net/download/u013083044/88632686?spm=1001.2014.3001.5503

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud面试题——Sentinel

一&#xff1a;什么是Sentinel&#xff1f; Sentinel是一个面向分布式架构的轻量级服务保护框架&#xff0c;实现服务降级、服务熔断、服务限流等功能 二&#xff1a;什么是服务降级&#xff1f; 比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备…

干货|你必须要知道的机器视觉常识!

Part.1 机器视觉是什么 机器视觉是一种能够模拟人类视觉系统的技术&#xff0c;是计算机的“慧眼”&#xff0c;能够使计算机理解和解释图像或视频中的信息。 机器视觉包括图像处理、机械工程技术、控制、电光源照明、光学成像、传感器、模拟与数字视频技术、计算机软硬件技术…

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中&#xff0c;经常会…

C++ Qt开发:ProgressBar进度条组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。…

SpringBoot配置mysql加密之Druid方式

一、导入Druid依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version> </dependency>二、生成密文 方式1. 找到存放druid jar包的目录 1-1、在目录…

EasyExcel处理表头的缓存设置

在学习EasyExcel 时会发现针对使用类模型配置表头相关属性时&#xff0c;EasyExcel 会使用到缓存技术以提升表头的解析速度如下代码&#xff1a; 这些参数再何时设置的哪&#xff1f; 在easyExcel 基础参数设置中会有这个参数filedCacheLocation 。默认采用的使用线程级别的…

MVVM前端设计模式的发展与应用

在MVC模式中&#xff0c;随着代码量越来越大&#xff0c;Controller主要用来处理各种逻辑和数据转化的Controller首当其冲&#xff0c;变得非常庞大&#xff0c;MVC的简写变成了Massive-View-Controller&#xff08;意为沉重的Controller&#xff09; 我曾经接手老项目&#x…

什么是rocketmq❓

在大规模分布式系统中&#xff0c;各个服务之间的通信是至关重要的&#xff0c;而RocketMQ作为一款分布式消息中间件&#xff0c;为解决这一问题提供了强大的解决方案。本文将深入探讨RocketMQ的基本概念、用途&#xff0c;以及在实际分布式系统中的作用&#xff0c;并对Produc…

CBTC上海新能源锂电池展览会奋战华东!2024携手共赢!

2024CBTC上海新能源锂电池技术展览会|上海锂离子电池生产设备展览会 时 间&#xff1a;2024年7月24&#xff5e;26日 地 点&#xff1a;国家会展中心&#xff08;上海虹桥&#xff09; 发展前景&#xff1a; 随着科技的不断进步&#xff0c;锂电池市场逐渐成为全球能源市场的…

GD32f103系列教程—(SPI DMA方式软件实现篇)

DMA知识简介: DMA 控制器提供了一种硬件的方式在外设和存储器之间或者存储器和存储器之间传输数据&#xff0c;而无需 CPU 的介入&#xff0c;从而使 CPU 可以专注在处理其他系统功能上。 项目中需要采用DMA方式传输数据的原因&#xff1a;如果仅仅采用SPI接口进行寄存器通信&…

vue2项目vue-qrcode-reader 扫一扫二维码插件

vue2项目 vue-qrcode-reader 扫一扫二维码插件 问题所在解决办法成功展示 问题所在 今天在引导师弟做扫二维码功能&#xff0c;发现通过npm install --save vue-qrcode-reade安装死活就是报错TypeError: Object...) is not a function 解决办法 百度了很多大牛的博客&#…

【深度学习目标检测】三、基于深度学习的人物摔倒检测(python,yolov8)

深度学习目标检测方法则是利用深度神经网络模型进行目标检测&#xff0c;主要有以下几种&#xff1a; R-CNN系列&#xff1a;包括R-CNN、Fast R-CNN、Faster R-CNN等&#xff0c;通过候选区域法生成候选目标区域&#xff0c;然后使用卷积神经网络提取特征&#xff0c;并通过分类…

【高效开发工具系列】DataGrip入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

数据分享 I 全国市级商品房屋销售数据,shp/excel格式,2005-2020年数据

基本信息. 数据名称: 全国市级商品房屋销售数据 数据格式: Shp、excel 数据时间: 2005-2020年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1spxse商品房销售额&#xff08;亿元&#xf…

主卧卫生间门对着床,怎么设计才能让你好好睡觉呢?福州中宅装饰,福州装修

主卧卫生间门对着床&#xff0c;一抬眼就能和卫生间来一个对视&#xff0c;心里很膈应&#xff0c;那么怎么解决这个问题呢&#xff1f; 1️⃣门改方向 首先&#xff0c;你可以考虑把卫生间门的开门方向改一下。如果卫生间门是向外开的&#xff0c;你可以考虑把门换成向内开的…

吴恩达《机器学习》12-4-12-5:核函数 1、核函数 2

一、核函数 1 1. 多项式模型的局限性 在之前的学习中&#xff0c;了解到可以使用多项式模型来解决无法用直线进行分隔的分类问题。例如&#xff0c;对于判定边界的建模&#xff0c;可能会使用类似于以下形式的模型&#xff1a; 然而&#xff0c;这样的多项式模型在实际应用中…

ALV动态GUI标题

导语&#xff1a;快两个月没有分享内容了&#xff0c;积攒了一大堆&#xff0c;最近经历了一些变动&#xff0c;有些充实和忙碌&#xff0c;最近在做的客制化平台中&#xff0c;顾问需要在不同的按钮对应的ALV中&#xff0c;展示不同的GUI标题。 效果图&#xff1a; 实现方法&a…

大模型概述

文章目录 大模型语言大模型视觉大模型多模态大模型 大模型 所谓 大&#xff1a;模型结构大&#xff0c; 参数量大&#xff0c;训练数据量大 大模型包含数十亿个参数&#xff0c;模型大小可以达到数百GB甚至更大。这种巨大的模型规模为其提供了强大的表达能力和学习能力多任务…

网络安全——SQL注入实验

一、实验目的要求&#xff1a; 二、实验设备与环境&#xff1a; 三、实验原理&#xff1a; 四、实验步骤&#xff1a; 五、实验现象、结果记录及整理&#xff1a; 六、分析讨论与思考题解答&#xff1a; 七、实验截图&#xff1a; 一、实验目的要求&#xff1a; 1、…

【DC-DC】世微 AP9166 降压恒压芯片 18V 2A同步降压转换器

600KHz&#xff0c;18V&#xff0c;2A同步降压转换器 概述 AP9166是一款完全集成的效率2A同步整流降压转换器。AP9166运行在宽输出电流上以高效率 负载范围。此设备提供两个操作模式、PWM控制和PFM模式切换控制&#xff0c;允许更宽范围的高效率 负载AP9166至少需要现成标准的…