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)
上一篇 2024年5月9日 上午8:15
下一篇 2024年5月9日 上午8:26

相关推荐

  • 国企党建品牌展播

    国企党建品牌展播 国企党建是国有企业的重要基础,是保证国有企业健康发展、实现中华民族伟大复兴的重要保障。近年来,我们公司在国企党建方面积极探索,推出了一系列品牌活动,旨在提高党的建…

    科研百科 2024年12月5日
    0
  • 湖南省哪些机构大学可以开具科技查新报告-(湖南省科技查新机构有哪些)

    湖南省可以开具科技查新报告的有3个,其中教育部有2个,科技部有1个,具体介绍如下: 一、掌桥科研科技查新 网站链接:查新-科技查新-查新机构-【掌桥科研】 掌桥科研科技查新由中国化…

    科研百科 2024年4月8日
    109
  • 科研项目申报人员推荐信科研项目申报人员推荐信

    尊敬的评审委员会: 我谨代表XXX实验室,向贵机构申报的科研项目“XXX”提供推荐信。 我作为XXX实验室的一名研究人员,与XXX实验室有着长期的合作历史,对于实验室在XXX领域的…

    科研百科 2024年6月12日
    52
  • idea 主题推荐

    好的,以下是一篇以“idea主题推荐”为标题,字数在2000左右的中文文章: 什么是Idea? Idea是一种由微软公司开发的一种软件开发工具,它最初用于Windows操作系统的开…

    科研百科 2024年10月31日
    0
  • 退休党员监督管理存在的问题

    退休党员监督管理存在的问题 退休党员是中国共产党的重要力量,他们具有丰富的工作经验和知识,是监督和指导新党员的重要力量。然而,退休党员在监督管理方面存在一些问题,需要加以重视和解决…

    科研百科 2024年12月9日
    1
  • 财政部青海监管局:健全工作机制 发挥垂管优势 推动机关党建高质量发展

    近年来,青海监管局深入贯彻落实新时代党的建设总要求和财政部党组《关于进一步加强监管局党建工作的意见》,充分发挥党建双重管理体制优势,坚持以推动党建高质量发展为主线,谋划提出“夯实基…

    科研百科 2024年6月9日
    63
  • 刘斌海海

    刘斌海海是一位出色的企业家,他在创业的道路上经历了许多的困难和挑战,但是他始终保持着坚定的信念和乐观的态度。在他的领导下,公司不断发展,取得了巨大的成功。 刘斌海海创业的初衷是为了…

    科研百科 2024年12月4日
    0
  • 管理智慧-九月份学校工作台账(学校九月份工作安排)

    管理智慧:九月份学校工作台账 一、校务处 1)召开全体教职工会议,宣传、贯彻年度战略发展纲要(学期工作计划) 2)统筹协调制定学校日周月期工作台历及各科室工作台帐;建立并运行周中层…

    科研百科 2024年5月31日
    74
  • 计划合同管理

    计划合同管理是一种有效的管理方法,能够帮助企业有效地管理合同,提高合同执行效率,降低风险。本文将介绍计划合同管理的基本概念、优点以及如何实施。 什么是计划合同管理? 计划合同管理是…

    科研百科 2024年8月21日
    35
  • 健全完善机关党的建设工作领导小组会议制度

    健全完善机关党的建设工作领导小组会议制度 近年来,随着社会的不断发展和进步,机关党的建设已成为党的建设的重要组成部分。机关党的建设工作领导小组会议是机关党的建设的重要组织形式之一,…

    科研百科 2024年11月29日
    5