请选择 进入手机版 | 继续访问电脑版

QT实现简单打地鼠

[复制链接]
冰宇 发表于 2021-1-2 19:45:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
#编写一简朴的打地鼠游戏
设计了一个简朴的打地鼠,有分数显示和难度设置
简朴点说,原理就是在ui界面上将按钮当作地鼠,当点击到按钮后,按钮隐藏。将老鼠的照片作为按钮配景。
右击添加新文件,选择Qt,Qt Resource File
在资源里添加配景:
先添加前缀,再添加文件
内里的图片待会会用到
代码如下:
直接粘代码:
  1. #ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include #include namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    QTimer *timer1;//定时器    int score,game_flag,value;//socre为得分,game_flag为1时游戏开始,为0时游戏关闭,value为难度private slots:    void SetTimer();        void on_gameStart_clicked();//开始按钮槽函数    void on_gamePause_clicked();//暂停按钮槽函数    void on_gameStop_clicked();//竣事按钮槽函数    void on_mouse_1_clicked();    void on_mouse_2_clicked();    void on_mouse_3_clicked();    void on_mouse_4_clicked();private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H
复制代码
.cpp文件:
  1. ui->setupUi(this);    //定时器初始化    QTimer *timer1=new QTimer(this);    connect(timer1,SIGNAL(timeout()),this,SLOT(SetTimer()));    timer1->start(1000);    score=0;    game_flag=0;//即是0时体现游戏未开始,即是1时体现游戏开始    //将图片放入到按钮中,而且图片随按钮巨细变革相适应    ui->mouse_1->setStyleSheet("QPushButton{border-image:url(:/mouse/laoshu.jpeg)5 5 5 5}");    ui->mouse_2->setStyleSheet("QPushButton{border-image:url(:/mouse/laoshu.jpeg)5 5 5 5}");    ui->mouse_3->setStyleSheet("QPushButton{border-image:url(:/mouse/laoshu.jpeg)5 5 5 5}");    ui->mouse_4->setStyleSheet("QPushButton{border-image:url(:/mouse/laoshu.jpeg)5 5 5 5}");    ui->mouse_1->hide();    ui->mouse_2->hide();    ui->mouse_3->hide();    ui->mouse_4->hide();    ui->gamePause->setEnabled(false);//游戏未开始时暂停功能不可以    int nMin = 1;    int nMax = 4;    int nSingleStep = 1;    ui->pSpinBox->setPrefix("level");    ui->pSpinBox->setMinimum(nMin);  // 最小值    ui->pSpinBox->setMaximum(nMax);  // 最大值    ui->pSpinBox->setSingleStep(nSingleStep);//
复制代码
定时器槽函数:
  1. void MainWindow::SetTimer(){    value=ui->pSpinBox->value();    if(game_flag==1){        int xx=qrand()%200;        int yy=qrand()%200;        ui->mouse_1->setGeometry(30+xx,30+yy,80,80);        int aa=qrand()%200;        int bb=qrand()%200;        ui->mouse_2->setGeometry(30+aa,30+bb,80,80);        int cc=qrand()%200;        int dd=qrand()%200;        ui->mouse_3->setGeometry(30+cc,30+dd,80,80);        int ee=qrand()%200;        int ff=qrand()%200;        ui->mouse_4->setGeometry(30+ee,30+ff,80,80);        //差异的难度品级有差异数量的地鼠出现        if(value==1){            ui->label_showhard->setText("easy");            ui->mouse_1->show();            ui->mouse_2->hide();            ui->mouse_3->hide();            ui->mouse_4->hide();        }else if(value==2){            ui->label_showhard->setText("normal");            ui->mouse_1->show();            ui->mouse_2->show();            ui->mouse_3->hide();            ui->mouse_4->hide();        }else if(value==3){            ui->label_showhard->setText("hard");            ui->mouse_1->show();            ui->mouse_2->show();            ui->mouse_3->show();            ui->mouse_4->hide();        }else if(value==4){            ui->label_showhard->setText("very hard");            ui->mouse_1->show();            ui->mouse_2->show();            ui->mouse_3->show();            ui->mouse_4->show();        }    }}
复制代码
开始按钮槽函数:
  1. void MainWindow::on_gameStart_clicked(){    game_flag=1;    score=0;    ui->lcdNumber->display(score);    ui->gamePause->setEnabled(true);}
复制代码
暂停按钮:
  1. void MainWindow::on_gamePause_clicked(){    if(game_flag)    {        game_flag=0;    }    else    {        game_flag=1;    }}
复制代码
停止按钮
  1. void MainWindow::on_gameStop_clicked(){    game_flag=0;//游戏停止    if(score>50){//分数大于50时,弹窗good        QMessageBox::about(this," ","good!");    }else if(score>100){//分数大于100时,弹窗perfect        QMessageBox::about(this," ","perfect!");    }    this->score=0;//分数置零    ui->lcdNumber->display(this->score);    //地鼠隐藏    ui->mouse_1->hide();    ui->mouse_2->hide();    ui->mouse_3->hide();    ui->mouse_4->hide();    ui->gamePause->setEnabled(false);}
复制代码
每打击到一个地鼠时,分数加10,只有游戏开始时才有效
地鼠按钮槽函数:
  1. void MainWindow::on_mouse_1_clicked(){        if(game_flag==1){            this->score+=10;            ui->lcdNumber->display(this->score);            ui->mouse_1->hide();        }}
复制代码
剩余地鼠槽函数同理
效果如图:


来源:https://blog.csdn.net/qq_45468597/article/details/112062329
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )