Qt实战之贪吃蛇(1)

这篇博客记录了作者初次使用Qt开发贪吃蛇小游戏的过程,参考了Qt学习资源和网上资料。游戏包含了特殊食物、障碍物、游戏难度控制及登录结束界面。通过QtDesigner创建开始界面,自定义Processcliked()槽函数处理按钮点击事件,同时详细讲解了食物和蛇的设置细节。
摘要由CSDN通过智能技术生成

这是第一次用Qt写的有实际意义的小游戏,主要参考资料来自于Qt学习之路(2)和Qt文档,以及网上一些零碎的博客资料,还有很多可以优化的地方,以及一些小bug.

实现功能:蛇的移动会改变自身的颜色,蛇的头部会随着蛇的移动而转动方向,实现了特殊食物和特殊障碍物,以及游戏难度的控制,和游戏登陆界面和结束界面的控制.

[0]:开始界面的设置,为了方便起见,我使用了QtDesigner制作了开始界面,它设置了开始界面的几个按钮,以及按下之后会出现的东西,具体的实现主要是靠一个自己定义的Processcliked()槽函数,它响应所有按钮的点击,并且进行相应的处理.注意::这里涉及到的一个问题是如何判断是哪一个按钮的clicked()的信号呢?方法就是利用Sender()函数获取相应的发送端,然后进行判断.

代码如下:

#ifndef SNAKE_START_DLG_H
#define SNAKE_START_DLG_H
#include <QDialog>

namespace Ui {
class Snake_Start_Dlg;
}
class Snake;
class GameWindow;
class Snake_Start_Dlg : public QDialog
{
    Q_OBJECT

public:
    explicit Snake_Start_Dlg(QWidget *parent = 0);
    ~Snake_Start_Dlg();

private slots:
    void processcliked();
private:
    Ui::Snake_Start_Dlg *ui;
    GameWindow* gamewindow;

};
#endif // SNAKE_START_DLG_H

//snake_start_dlg.cpp
#include "snake_start_dlg.h"
#include "QPushButton"
#include "qdebug.h"
#include "constant.h"
#include "GameWindow.h"
#include "ui_snake_start_dlg.h"

extern int originalspeed;//声明这个变量
Snake_Start_Dlg::Snake_Start_Dlg(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Snake_Start_Dlg)
{
    ui->setupUi(this);
    setWindowTitle(tr("贪吃蛇主界面"));
    ui->HelpText->setVisible(false);//隐藏帮助
    ui->selection->setVisible(false);//隐藏设置
}
Snake_Start_Dlg::~Snake_Start_Dlg()
{
    delete ui;
}
void Snake_Start_Dlg::processcliked()
{
    QPushButton* btn =static_cast<QPushButton*>(sender()); //获取点击的按钮
    if(btn->objectName()=="start")//判断按钮情况
    {
         hide();
         gamewindow = new GameWindow(this);//建立游戏窗口
         gamewindow->show();
     }
    else if(btn->objectName()=="end")
        this->close();//退出游戏

    else if(btn->objectName()=="help")
         ui->HelpText->s
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值