linux和Qt打地鼠代码
时间: 2023-10-29 09:06:58 浏览: 128
linux环境下用QT实现打地鼠游戏源码共享
5星 · 资源好评率100%
以下是在 Linux 和 Qt 中实现的简单打地鼠游戏代码,你可以参考:
mainwindow.h 文件:
```
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QTimer *timer;
int score;
private slots:
void showMole();
void hitMole();
};
#endif // MAINWINDOW_H
```
mainwindow.cpp 文件:
```
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QPixmap>
#include <QRandomGenerator>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
score(0)
{
ui->setupUi(this);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(showMole()));
connect(ui->label, SIGNAL(clicked()), this, SLOT(hitMole()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showMole()
{
int x = QRandomGenerator::global()->bounded(300);
int y = QRandomGenerator::global()->bounded(200);
ui->label->move(x, y);
ui->label->setPixmap(QPixmap(":/images/mole.png"));
ui->label->show();
timer->start(1000);
}
void MainWindow::hitMole()
{
if (ui->label->pixmap() != nullptr) {
score++;
ui->label->setPixmap(QPixmap(":/images/hit.png"));
QTimer::singleShot(500, ui->label, [=](){
ui->label->setPixmap(QPixmap());
});
}
ui->lcdNumber->display(score);
}
```
在上面的代码中:
- 在 showMole() 函数中,通过 QRandomGenerator::global() 随机生成地鼠出现的位置,并设置 ui->label 的位置和显示地鼠图片,定时器 timer 每隔一定时间启动一次 showMole() 函数。
- 在 hitMole() 函数中,判断点击的位置和地鼠位置是否重叠,如果重叠则得分加 1,同时设置 ui->label 显示被打中的图片,通过定时器 QTimer::singleShot() 实现打中地鼠后地鼠消失的动画效果。
在项目中,还需要添加地鼠图片和被打中的图片(命名为 mole.png 和 hit.png),并在 .qrc 文件中添加资源。
最后,编译运行程序即可实现简单的打地鼠游戏。
阅读全文