QT實現簡單打地鼠
#編寫一簡單的打地鼠遊戲
設計了一個簡單的打地鼠,有分數顯示和難度設定
簡單點說,原理就是在ui介面上將按鈕當作地鼠,當點選到按鈕後,按鈕隱藏。將老鼠的照片作為按鈕背景。
右擊新增新檔案,選擇Qt,Qt Resource File
在資源裡新增背景:
先新增字首,再新增檔案
裡面的圖片待會會用到
程式碼如下:
直接粘程式碼:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include <QSpinBox>
#include <QWidget>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
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();
}
}
剩餘地鼠槽函式同理
效果如圖:
相關文章
- 如何用js寫一個簡單的迷宮和打地鼠遊戲JS遊戲
- UPC 5502: 打地鼠遊戲遊戲
- Qt基於SDL庫簡單實現YUV影片播放QT
- Laya實戰-打地鼠JS版本的ES6重構JS
- Qt右鍵選單實現QT
- QT實現簡易串列埠助手QT串列埠
- AspectJ簡單實現
- FastClick簡單實現AST
- Promise 簡單實現Promise
- ReadableStream 簡單實現
- Express 簡單實現Express
- 報表工具實現單據套打
- QT - 13.1.1 ListView 的簡單使用QTView
- 精簡版 koa 簡單實現
- 瀑布流簡單實現
- 如何簡單實現ELT?
- 感知機簡單實現
- ArrayList的簡單實現
- 實現簡單的BitMap
- 簡單版Promise實現Promise
- 簡單實現vuex原理Vue
- AOP的簡單實現
- 物件池簡單實現物件
- React 簡單實現(一)React
- 簡單的 HashMap 實現HashMap
- vue 實現原理及簡單示例實現Vue
- 《Qt 5.12實戰》簡介QT
- 智慧家居簡單實現---使用ESP8266簡單實現和APP通訊APP
- [Linux]簡單的shell實現Linux
- Redux 原理和簡單實現Redux
- React實現簡單易用ToastReactAST
- MapReduce原理及簡單實現
- java實現簡單的JDBCJavaJDBC
- Flutter實現簡單爆炸效果Flutter
- 簡單的實現vue原理Vue
- 簡單的實現React原理React
- Kotlin超簡單實現StepViewKotlinView
- Elasticsearch 實現簡單搜尋Elasticsearch