Qt编写小游戏

这篇具有很好参考价值的文章主要介绍了Qt编写小游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Qtcreator编写代码实现做一个类似飞机躲避障碍物的小游戏,使用WASD键进行移动飞行,在允许范围内可以安全飞行,但当碰触到边缘时飞机坠毁,游戏重新开始.具体解释步骤以注释为主

具体代码如下:

dialog.h:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QMessageBox>
#include <QKeyEvent>
#include <QPainter>
#include <QPixmap>
#include <QDebug>
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    int j;//保存窗口的宽度,全局变量
    int k;//保存窗口的高度,全局变量
private:
    Ui::Dialog *ui;

protected:
    void keyPressEvent(QKeyEvent * event);//键盘按钮触发的槽函数
    void paintEvent(QPaintEvent * event);//布置背景的槽函数
};

#endif // DIALOG_H

dialog.cpp:

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    resize(800,450);//调整窗口界面的大小
    j=this->width();//实时获取窗口界面宽度
    k=this->height();//实时获取窗口界面高度
    ui->fly_label->move(j/2,2*k/3);//移动飞机到窗口的特定坐标位置
    QPixmap pic(":/new/prefix1/normal.png");//飞机图标对象
    QSize picSize(ui->fly_label->width(),ui->fly_label->height());//规定飞机目标的大小
    pic = pic.scaled(picSize,Qt::KeepAspectRatioByExpanding);//飞机图标伸展模式
    ui->fly_label->setPixmap(pic);//设置设定好后的飞机图标
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::keyPressEvent(QKeyEvent *event)
{
    int code = event->key();//获取按键对象
    if(code == Qt::Key_A)
    {
        int x=ui->fly_label->x();//获取飞机此刻横坐标
        int y=ui->fly_label->y();//获取飞机此刻纵坐标
        //将图标替换为左移的图标
        QPixmap pic(":/new/prefix1/left.png");
        QSize picSize(ui->fly_label->width(),ui->fly_label->height());
        pic = pic.scaled(picSize,Qt::KeepAspectRatioByExpanding);
        ui->fly_label->setPixmap(pic);
        ui->fly_label->move(x-10,y);//在原先坐标上进行移动,左移10像素
    }else if(code == Qt::Key_D)
    {
        int x=ui->fly_label->x();
        int y=ui->fly_label->y();
        QPixmap pic(":/new/prefix1/right.png");
        QSize picSize(ui->fly_label->width(),ui->fly_label->height());
        pic = pic.scaled(picSize,Qt::KeepAspectRatioByExpanding);
        ui->fly_label->setPixmap(pic);
        ui->fly_label->move(x+10,y);
    }
    else if(code == Qt::Key_W)
    {
        int x=ui->fly_label->x();
        int y=ui->fly_label->y();
        QPixmap pic(":/new/prefix1/normal.png");
        QSize picSize(ui->fly_label->width(),ui->fly_label->height());
        pic = pic.scaled(picSize,Qt::KeepAspectRatioByExpanding);
        ui->fly_label->setPixmap(pic);
        ui->fly_label->move(x,y-10);
    }
    else if(code == Qt::Key_S)
    {
        int x=ui->fly_label->x();
        int y=ui->fly_label->y();
        QPixmap pic(":/new/prefix1/down.png");
        QSize picSize(ui->fly_label->width(),ui->fly_label->height());
        pic = pic.scaled(picSize,Qt::KeepAspectRatioByExpanding);
        ui->fly_label->setPixmap(pic);
        ui->fly_label->move(x,y+10);
    }
    //设定飞机坠毁条件,即飞机的参考点超出规定允许坐标范围
    if(ui->fly_label->x()<=0||ui->fly_label->y()<=0||ui->fly_label->x()>=this->width()-60||ui->fly_label->y()>=this->height()-60)
    {
        //弹窗界面
        QMessageBox::information(this,"对局结束","请重新开始游戏");
        //获取此刻窗口大小
        j=this->width();
        k=this->height();
        //重新将飞机恢复到起始图标
        QPixmap pic(":/new/prefix1/normal.png");
        ui->fly_label->setPixmap(pic);
        //游戏重新开始始终让飞机位于窗口的特定比例位置
        ui->fly_label->move(j/2,2*k/3);
    }
}
//设定窗口背景界面
void Dialog::paintEvent(QPaintEvent *event)
{
    QPainter painter(this); // 创建画家类对象
    QPixmap pic(":/new/prefix1/beijing(1).png");
    painter.drawPixmap(0,0,width(),height(),pic);
}

程序运行界面如下:

开局界面:

Qt编写小游戏

按下A键效果:

Qt编写小游戏

按下D键效果:

Qt编写小游戏

按下W效果:

Qt编写小游戏

按下S效果:

Qt编写小游戏

当飞机触碰到界面边缘:

Qt编写小游戏

将窗口拉伸后,重新开始游戏飞机还是会到设定比例位置:文章来源地址https://www.toymoban.com/news/detail-505513.html

Qt编写小游戏

到了这里,关于Qt编写小游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python编写简易猜数字小游戏(附完整代码)

    Python编写简易猜数字小游戏(附完整代码) 猜数字游戏是一款非常经典的小游戏,本文将介绍如何使用Python编写一个简易的猜数字游戏,并提供完整的源代码。 首先,让我们了解一下游戏规则。游戏开始时,程序会随机生成一个1到100之间的数字,玩家需要通过输入数字来猜

    2024年02月08日
    浏览(55)
  • chatgpt赋能python:Python简单小游戏制作教程——让你学会编写游戏代码

    Python是一种高级编程语言,越来越受欢迎,因为它易于学习和使用,而且灵活性非常高。在这篇文章中,我们将教你如何用Python编写一个简单的小游戏。让我们开始吧! 在编写代码之前,你需要安装以下工具: Python编程语言 Pygame游戏框架 步骤一:设置游戏场景 首先,你需

    2024年02月11日
    浏览(40)
  • 如何使用Python编写小游戏?

    大家好,我是沐尘而生,如果你是一个热爱编程的小伙伴,又想尝试游戏开发,那么这篇文章一定能满足你的好奇心。不废话,让我们马上进入Python游戏开发的精彩世界吧! Python游戏开发的魅力 编写小游戏不仅仅是锻炼编程技能的好方法,更是展现创意和享受成果的绝佳途

    2024年02月12日
    浏览(28)
  • 十行代码编写一个Python小游戏,你准备好了吗?(文末赠书)

    准备好了吗?我们即将开始激动人心的游戏编程之旅。 或许你之前学习过一点编程,但若是你从没接触过游戏编程,那么你仍然会对游戏程序的运行感到不解。游戏程序不像计算一个公式或谜题,得到答案之后程序就结束了,游戏程序一直是处于运行中的,只要你不主动退出

    2024年03月20日
    浏览(41)
  • 【Qt】三种方式实现抽奖小游戏

    简介 本文章是基本Qt与C++实现一个抽奖小游戏,用到的知识点在此前发布的几篇文章。 下面是跳转链接: 【Qt控件之QLabel】用法及技巧 链接: https://blog.csdn.net/MrHHHHHH/article/details/133691441?spm=1001.2014.3001.5501 【Qt控件之QPushButton】用法及技巧 链接: https://blog.csdn.net/MrHHHHHH/article

    2024年02月07日
    浏览(35)
  • 使用QT制作贪吃蛇小游戏(含登录注册界面)

    login.h register.h user.h userlist.h widget.h login.cpp main.cpp register.cpp user.cpp userlist.cpp widget.cpp login.ui register.ui widget.ui

    2024年02月13日
    浏览(27)
  • 利用python编写小游戏,用python编写的游戏

    大家好,小编为大家解答利用python编写小游戏的问题。很多人还不知道用python编写的游戏,现在让我们一起来看看吧! 小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Pythonpython简单新年祝福代码。 今日主题 你玩过游戏吗? 你喜

    2024年01月15日
    浏览(33)
  • 通关大一编程实践,用C++基础和Qt实现FlappyBird小游戏

    目录 内容简介 项目要求 项目实现 素材导入 核心思路 思路的转变:从main到mainwindow 如何让游戏动起来 如何设计一个物体类 如何从键盘输入操作 如何绘制图片  如何初始化 项目源码 该项目实现了基于Qt的FlappyBird动画游戏开发,我会从素材导入开始带大家熟悉Qt开发的全过程

    2023年04月09日
    浏览(26)
  • python编写小游戏详细教程,用python做简单的小游戏

    本篇文章给大家谈谈如何用python编写一个简单的小游戏,以及如何用Python做小游戏让别人玩,希望对各位有所帮助,不要忘了收藏本站喔。 玩法:上下控制起跳躲避 玩法:三个相连就能消除 玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的。 玩法:童年经典,

    2024年02月07日
    浏览(37)
  • Java小游戏练习---超级玛丽代码实现

    B站教学视频: 01_超级玛丽_创建窗口_哔哩哔哩_bilibili 素材提取: 【超级会员V2】我通过百度网盘分享的文件:Java游戏项目… 链接:百度网盘 请输入提取码 提取码:k6j1 复制这段内容打开「百度网盘APP 即可获取」 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同

    2024年02月06日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包