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

相关推荐