#编写一简朴的打地鼠游戏
设计了一个简朴的打地鼠,有分数显示和难度设置
简朴点说,原理就是在ui界面上将按钮当作地鼠,当点击到按钮后,按钮隐藏。将老鼠的照片作为按钮配景。
右击添加新文件,选择Qt,Qt Resource File
在资源里添加配景:
先添加前缀,再添加文件
内里的图片待会会用到
代码如下:
直接粘代码:
- #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文件:
- 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);//
复制代码 定时器槽函数:
- 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(); } }}
复制代码 开始按钮槽函数:
- void MainWindow::on_gameStart_clicked(){ game_flag=1; score=0; ui->lcdNumber->display(score); ui->gamePause->setEnabled(true);}
复制代码 暂停按钮:
- void MainWindow::on_gamePause_clicked(){ if(game_flag) { game_flag=0; } else { game_flag=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,只有游戏开始时才有效
地鼠按钮槽函数:
- 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |