目录
贪吃蛇小游戏
一.项目介绍及演示
1. 项目介绍
贪吃蛇游戏规则:简单来说,贪吃蛇游戏规则是玩家通过四个方向键来控制蛇的移动控制其在地图上吃豆子。蛇运动过程中撞到蛇身,则立即结束游戏
2. 项目演示

3. 窗口介绍
3.1 游戏大厅窗口

3.2 游戏关卡选择窗口

3.3 游戏房间窗口

二、创建项目及资源配置
1. 创建项目(QWidget)
在桌面上创建一个名为Snake的文件夹,用于存放项目代码
新建一个项目

2. 资源配置(图片声音素材)
在上述创建完成后,新建一个qrc文件,步骤如下:








此时资源文件,如图示:

三、项目实现
1. 游戏大厅
1.1 重写绘图事件
在gamehall.h文件中,进行重写绘图事件函数的声明

鼠标当到painEvent函数上点击Alt+Enter(回车),为painEvent函数添加定义

在上述过程后,开始编辑painEvent函数。
第一步:先实例化画家,使用QPainter painter(this)实例化一个画家,this是让画家在当前窗口(gamehall)进行绘制。注意在使用QPainter需要包含头文件#include<QPainter>
第二步:再实例化绘图设备,将图片加载到绘图设备中。注意在使用QPixmap需要包含头文件#include<QPixmap>
第三步:再进行绘画,使用drawPixmap()方法,参数1和参数2,表示绘制开始的坐标;参数3,表示绘制的宽度;参数4,表示绘制的高度;参数5,表示绘制的图片。
void GameHall::paintEvent(QPaintEvent *event)
{
//实例化画家,this:让画家在当前窗口进行绘制
QPainter painter(this);
//实例化绘图设备
QPixmap pix(":/res/game_hall.png");
//绘画 0,0从界面左上角开始绘画根据窗口的宽和高进行绘制
painter.drawPixmap(0,0,this->width(),this->height(),pix);
}
1.2 设置窗口大小、图标、标题
第一步,先修改窗口的大小通过setFixedSize()方法将窗口的宽度设置为1000,高度设置为800。
第二步,设置窗口的图标先通过QIcon()将图片加载到项目中,再通过setWindowIcon()方法设置到窗口中。
第三步,设置窗口的标题通过setWindowTitle()方法将文字设置到窗口标题中。
GameHall::GameHall(QWidget *parent)
: QWidget(parent)
, ui(new Ui::GameHall)
{
ui->setupUi(this);
//设置窗口大小
this->setFixedSize(1000,800);
//设置窗口的图标
this->setWindowIcon(QIcon(":/res/ico.png"));
//设置窗口标题
this->setWindowTitle("游戏大厅");
}
1.3 设置开始按钮样式
第一步,通过QPushButton创建一个游戏开始按钮,按钮文本设置为"开始游戏",this在父窗口中显示。
第二步,通过move移动按钮再窗口中的位置,消除按钮的边框。
第三步,修改按钮中的文本样式,需要先创建一个字体样式(字体为黑体,大小为20像素),最后通过setFont方法将字体样式加载到按钮中
GameHall::GameHall(QWidget *parent)
: QWidget(parent)
, ui(new Ui::GameHall)
{
ui->setupUi(this);
//设置窗口大小
this->setFixedSize(1000,800);
//设置窗口的图标
this->setWindowIcon(QIcon(":/res/ico.png"));
//设置窗口标题
this->setWindowTitle("游戏大厅");
//添加开始游戏按钮
QPushButton * startButton = new QPushButton("开始游戏",this);
//设置按钮的位置
startButton->move(450,600);
//消除按钮边框
startButton->setStyleSheet("QPushButton{border:0px}");
//创建字体样式
QFont font("黑体", 20);
//将字体样式加入到按钮文本中
startButton->setFont(font);
}
点击运行,此时游戏大厅绘制成功

2. 游戏关卡选择
2.1 创建GameSelect类
先创建一个新的类,名为为GameSelect,基类选择QWidget


最低0.47元/天 解锁文章
2064

被折叠的 条评论
为什么被折叠?



