欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 贪吃蛇项目

贪吃蛇项目

2025/2/24 18:22:13 来源:https://blog.csdn.net/m0_64238541/article/details/142289200  浏览:    关键词:贪吃蛇项目

今天我们用所需的qt知识,做一个贪吃蛇小游戏,感兴趣的铁子可以跟着我一起实现一下这个游戏,它伴随了我们整个童年,我今天实现的就是最原版的贪吃蛇小游戏。

Gitee源码:贪吃蛇游戏源码


目录

1.项目背景

2.项目环境

3.准备工作

5.项目实现

5.1实现思路

5.1.1GameHall

5.1.2SetSelect

5.1.3GameSelect

5.1.4GameRoom

5.1.5游戏结束

5.2项目源码

6.项目总结


1.项目背景

贪吃蛇(Snake)是一个经典的电子游戏,它的历史可以追溯到20世纪70年代的早期电子游戏。在这个游戏中,玩家控制一条不断移动的蛇,通过吃食物来增加蛇的长度,同时避免撞到墙壁或蛇自己的身体。游戏的难度随着蛇的长度增加而逐渐提升,玩家的目标是尽可能地获得更高的分数。最早的贪吃蛇游戏是1976年由Gremlin公司推出的《Blockade》。该游戏的核心机制是通过控制一条线条状的“蛇”,让它尽可能地长,同时避免撞到自己或游戏场地的边界。

在本次实现的贪吃蛇项目中,为了降低游戏难度,我们取消蛇撞击墙壁会导致游戏结束的情况,只做出蛇碰到自身会导致游戏结束的设定,来让我们一起来看看这个游戏吧!

2.项目环境

QT Creator开发软件

3.准备工作

1.贪吃蛇项目我们分为四个窗口来分别实现,分别是GameHal(游戏大厅)、SetSelect(游戏设置)、GameSelect(难度选择)、GameRoom(游戏房间)

2.提前准备好贪吃蛇游戏所需要的图片、音乐以及音效

4.项目演示

接下来给大家演示一下实现的贪吃蛇

贪吃蛇游戏 2024-09-15 22-08-41

5.项目实现

5.1实现思路

想要实现贪吃蛇小游戏,我们必须对QT中有哪些功能做到了如指掌,对每个库中的方法也做到大体了解,其次,我们可以借助QT助手,对所需要的功能进行查找。在这里,我画了一个思维导图,供大家参考,里面把实现每个窗口的各个功能都进行了展示,相信大家一看就明白了。

由于图片太大,这里分节点展示

5.1.1GameHall

说明:实现游戏大厅,重要的是按钮的设置,“开始游戏”按钮和“游戏设置”按钮都要关联信号            槽,设置点击音效,点击开始游戏按钮,进入GameSelect窗口,点击游戏设置按钮,            进入SetSelect窗口

5.1.2SetSelect

说明:在这个窗口中,设置了back返回按钮,点击back,回到GameHall窗口,设置了帮助               和开发者按钮,在这里我设置了超链接,关联信号和槽,设置点击音效,点击进入相             关网页

5.1.3GameSelect

说明:在这个窗口中设置back按钮,三种模式选择按钮,简单模式,正常模式,困难模式,            设置了历史战绩按钮

        简单模式:点击按钮,进入游戏简单模式,蛇移动速度为200

        正常模式:点击按钮,进入游戏正常模式,蛇移动速度为100

        困难模式:点击按钮,进入游戏困难模式,蛇移动速度为50

        实现不同按钮控制蛇的不同移速,主要用到的是QT中的定时器,QTimer

        历史战绩:我们要准备好一个txt文件,从GameRoom的积分中读取到积分,然后写到                              txt中

历史战绩窗口

5.1.4GameRoom

说明:GameRoom中涉及到的操作众多,图片放不下,有需要思维导图的铁汁可以私信

在这个窗口中,就是我们玩游戏的界面了,有记录积分,我们的初始积分默认为3,设置开始按钮和暂停按钮,还有四个游戏方向键,以及退出GameRoom的按钮。

关于积分:小蛇每次吃一个食物,积分都会加1

开始按钮:点击按钮,小蛇开始移动,游戏播放背景音乐

暂停按钮:点击按钮,小蛇停止移动,游戏音乐暂停

四个方向键:控制小蛇的移动方向

退出按钮:点击按钮,弹出弹窗,点击Yes,回到GameHall窗口,点击No,回到游戏

5.1.5游戏结束

对于游戏结束,我们也做了对于的画面显示

大家可以根据自己的想法设置游戏结束画面

5.2项目源码

由于代码众多,我们在这里只显示GameHall的代码,我会将源码放在Gitee中,有需要的铁汁可以自行参考。

GameHall源码

#include "gamehall.h"
#include "ui_gamehall.h"
#include"gameselect.h"
#include"setselect.h"
#include<QPainter>
#include<QPixmap>
#include<QIcon>
#include<QPushButton>
#include<QFont>
#include<QSound>
#include<QWidget>GameHall::GameHall(QWidget *parent): QWidget(parent), ui(new Ui::GameHall)
{ui->setupUi(this);//调整窗口大小this->setFixedSize(1314,767);//设置窗口图标this->setWindowIcon(QIcon(":res/ico.png"));this->setWindowTitle("贪吃蛇游戏");//设置按钮字体的格式QFont font("隶书",24);//创建开始游戏按钮QPushButton *strBtn=new QPushButton(this);QPushButton *setBtn=new QPushButton(this);strBtn->move(550,600);strBtn->setFont(font);strBtn->setText("开始游戏");setBtn->move(550,670);setBtn->setFont(font);setBtn->setText("游戏设置");//去掉边框,设置样式strBtn->setStyleSheet("QPushButton{border:0px;}");setBtn->setStyleSheet("QPushButton{border:0px;}");//设置按钮信号槽//new一个窗口出来GameSelect *gameSelect=new GameSelect;SetSelect *setSelect=new SetSelect;//设置按钮音效connect(strBtn,&QPushButton::pressed,this,&GameHall::strPressed);connect(setBtn,&QPushButton::pressed,this,&GameHall::setPressed);connect(strBtn,&QPushButton::clicked,[=](){this->close();//将开始游戏窗口设置的和贪吃蛇游戏窗口一样大gameSelect->setGeometry(this->geometry());gameSelect->show();});connect(setBtn,&QPushButton::clicked,[=](){this->close();setSelect->setGeometry(this->geometry());setSelect->show();});}GameHall::~GameHall()
{delete ui;
}void GameHall::paintEvent(QPaintEvent *event)
{//游戏大厅,绘制一张背景图//实例化画家对象QPainter painter(this);//绘图设备QPixmapQPixmap pix(":res/game_hall.png");//绘画painter.drawPixmap(0,0,this->width(),this->height(),pix);
}//设置按钮音效
void GameHall::setPressed()
{//设置点击音效QSound::play(":res/clicked.wav");
}void GameHall::strPressed()
{//设置点击音效QSound::play(":res/clicked.wav");
}

6.项目总结

1.蛇移动撞墙不死,只有撞到自己才游戏结束,可以改进为撞墙也会游戏结束,推迟到下一个版本优化
2.连续点击开始按钮,会响起多个游戏音乐,可以放到下一个版本改进
3.历史战绩只能保存最新的一个记录,可以借助C语言的文件管理,让所有游戏记录都保存下来
4.点击退出按钮时,要让小蛇停止移动,版本有待优化
5.历史战绩窗口,读取完文件后忘记关闭文件,有待优化


以上就是贪吃蛇项目的简述,希望可以帮助到铁汁们,大家下期再见!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词