Qt技术:C++初级开发Qt小程序贪吃蛇(qt编写贪吃蛇详细代码)

小编最为边缘计算机专业的大学生,最近涉及了一下Qt技术,特意记下来学习心得和大家分享。

Qt技术作为C 的一个扩展是十分强大的,它不仅仅是一个C 库,它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。这次小编就简单写了一个GUI程序,为了致敬经典,选择了贪吃蛇小游戏。

好了,话不多说,上干货。

1、首先是两个头文件,mainWidget.h文件和GameWidget.h文件

#ifndef MAINWIDGET_H

#include <QLabel>

#include <QFont>

class mainWidget : public QWidget

{

Q_OBJECT

public:

mainWidget(QWidget *parent = 0);

~mainWidget();

//void resizeEvent(QResizeEvent *);

private:

QPushButton *startbtn;

QPushButton *exitbtn;

GameWidget *g;

QLabel *label;

signals:

public slots:

void exitSlot();

void startSlot();

};

#endif // MAINWIDGET_H

class GameWidget : public QWidget

{

Q_OBJECT

public:

explicit GameWidget(QWidget *parent = 0);

~GameWidget();

void paintEvent(QPaintEvent *);

void keyPressEvent(QKeyEvent *);

private:

QPushButton *upbtn;

QPushButton *leftbtn;

QPushButton *downbtn;

QPushButton *rightbtn;

QPushButton *startbtn;

QPushButton *returnbtn;

int direction;

int snake[100][2];

int snake1[100][2];

int foodcount;

QTimer *timer;

int foodx,foody;

int score;

int level;

QLabel *scorelabel;

QLabel *levellabel;

QLabel *scoreshow;

QLabel *levelshow;

QString str1,str2;

QSound *sound;

QSound *sound1;

signals:

void UpSignal();

void DownSignal();

void LeftSignal();

void RightSignal();

public slots:

void upbtnSlot();

void startbtnSlot();

void returnbtnSlot();

void timeoutSlot();

};

#endif // GAMEWIDGET_H

2、接下来是三个源文件,GameWidget.cpp、main.cpp、mainWidget.cpp

#include \”GameWidget.h\”

#define LEFT 2

#define RIGHT 3

GameWidget::GameWidget(QWidget *parent) : QWidget(parent)

{

this->setAutoFillBackground(true);

this->setWindowTitle(\”Game Start\”);

this->setWindowIcon(QIcon(\”:/new/prefix1/img/1.png\”));

QPalette palette;

palette.setBrush(QPalette::Background,QBrush(QPixmap(\”:/new/prefix1/img/green.jpg\”).scaled(this->size())));

this->setPalette(palette);

//声音区

sound=new QSound(\”:/listen/img/5611.wav\”);

sound1=new QSound(\”:/listen/img/die.wav\”);

//按钮区

upbtn=new QPushButton(\”↑\”,this);

rightbtn=new QPushButton(\”→\”,this);

rightbtn->setGeometry(QRect(420,130,40,30));

downbtn=new QPushButton(\”↓\”,this);

downbtn->setGeometry(QRect(380,170,40,30));

startbtn=new QPushButton(\”开始\”,this);

startbtn->setGeometry(QRect(350,220,40,30));

returnbtn=new QPushButton(\”返回\”,this);

returnbtn->setGeometry(QRect(410,220,40,30));

//设置分数等级为0

score=0;

level=0;

//显示分数等级标签区

QFont font;

font.setFamily(\”Consolas\”);

font.setBold(true);

font.setPixelSize(19);

//判断蛇是否撞到自身

for(int i=1;i<=foodcount;i )

{

if(snake[0][0]==snake[i][0]&&snake[0][1]==snake[i][1])

{

sound1->play();

memcpy(snake,snake1,sizeof(snake));

timer->stop();

//判断蛇是否撞到墙体

if(snake[0][0]<0||snake[0][0]>=COL||snake[0][1]<0||snake[0][1]>=ROW)

{

sound1->play();

memcpy(snake,snake1,sizeof(snake));

timer->stop();

if(QMessageBox::question(this,\”提示\”,\”游戏结束,是否重新游戏\”,QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes)

{

QTime t;

int i;

}

this->update();

}

#include \”mainWidget.h\”

#include <QApplication>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

mainWidget w;

w.show();

return a.exec();

}

mainWidget::~mainWidget()

{

delete startbtn;

delete exitbtn;

}

void mainWidget::exitSlot()

{

if(QMessageBox::question(this,\”退出游戏\”,\”是否退出当前游戏\”,QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)

{

delete this;

exit(0);

}

}

void mainWidget::startSlot()

{

g=new GameWidget(this);

g->show();

}

剩下的就是一些资源文件了,在这里就不一一解释了。

看一下完成图。

Qt技术:C++初级开发Qt小程序贪吃蛇(qt编写贪吃蛇详细代码)

开始页面

Qt技术:C++初级开发Qt小程序贪吃蛇(qt编写贪吃蛇详细代码)

游戏主页面

Qt技术:C++初级开发Qt小程序贪吃蛇(qt编写贪吃蛇详细代码)

提示页面

这个小程序用到的算法不是很多,但是涉及的Qt知识还是比较多的,初次分享Qt知识,大神看见轻点喷。T

想要完整源代码小伙伴们评论区哟,请关注“包火火工作室”。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月3日 上午10:12
下一篇 2023年4月3日 上午10:28

相关推荐

  • 科研项目自筹经费说明范文

    科研项目自筹经费说明范文科研项目自筹经费说明范文,但许多高校的图书均在体制内,但大多数院校无法做到有效、通畅。毕业之后要继续创业,或者开大公司上班,是每个高中毕业生的必经之路。尤其…

    科研百科 2024年11月27日
    6
  • javaweb项目申报管理系统

    JavaWeb项目申报管理系统 随着数字化时代的到来,企业项目管理的方式也在不断变化。传统的项目申报和管理方式已经无法满足现代企业的需求,因此,开发一款高效的JavaWeb项目申报…

    科研百科 2024年12月19日
    1
  • 办公类网站有哪些(办公网站哪个好)

    办公网站哪个好? 随着互联网的发展,办公网站已经成为了企业日常办公的重要工具。选择一个好用的办公网站可以大大提高员工的工作效率,以下是几个受欢迎的办公网站,供您参考。 1. Goo…

    科研百科 2024年6月4日
    98
  • 广西水利发展集团有限公司正式成立 刘宁蓝天立刘小明出席有关活动

    广西新闻网南宁12月27日讯(记者 陈贻泽)12月27日,广西水利发展集团有限公司正式成立。自治区党委书记、自治区人大常委会主任、环北部湾广西水资源配置工程建设工作领导小组组长刘宁…

    科研百科 2024年4月29日
    142
  • 农副食品加工业MES系统

    农副食品加工业MES系统:提高效率,降低成本 随着农业和食品加工业的不断发展,农副食品加工业MES系统成为了提高生产效率和降低成本的重要工具。 MES系统是一种集数据采集、控制、分…

    科研百科 2024年10月30日
    0
  • 爱辉区“三聚焦”建强街道党群服务中心推进市域社会治理体制现代化

    爱辉区扎实推进“党旗耀边疆”实践活动,落实基层党建重点任务“擂台赛”工作,积极打造区域覆盖、开放融合、集约高效的党群服务中心体系,切实发挥基层党组织政治引领、加强治理、为民服务功能…

    科研百科 2023年1月11日
    132
  • 项目 技术指标 经济指标

    项目 技术指标 经济指标 在项目管理中,技术指标是一个重要的组成部分,它们描述了项目的性能,质量和效率,是衡量项目成功的重要指标。在这篇文章中,我们将探讨项目中的技术指标,以及如何…

    科研百科 2024年11月16日
    0
  • 合同管理的程序

    合同管理的程序 合同管理是组织管理中至关重要的一部分。合同管理可以帮助组织确保合同的有效性和合规性,同时也可以帮助组织减少风险和损失。以下是合同管理的程序: 1. 合同审查:合同审…

    科研百科 2025年1月6日
    0
  • 大学生参加科研项目对学术的影响结论

    大学生参加科研项目对学术的影响结论大学生参加科研项目对学术的影响结论1. 在科研、相关体育运动的组织与设计、市场服务、新职业领域的设计、研究和实施等方面,策划、协调、指导、推进和研…

    科研百科 2024年11月22日
    2
  • 陈安敏军事科学院

    陈安敏军事科学院: 引领中国军事科技前沿 陈安敏军事科学院是中国的军事科学研究机构之一,成立于1982年,是中国最早成立的军事科学院之一。它致力于推动中国军事科技的发展,为中国的国…

    科研百科 2024年11月11日
    4