C 语言简单打字游戏实现(图形化界面版)


 上次写的是控制台版,这次换成了图形化 QT 界面版的,但是有很多小 bug 还未完善,等有时间再说!

我的代码:

/*------------------- mainwindow.ui -------------*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    // 随机数
    srand((unsigned int)time(NULL));
    // 随机字母
    for(int i = 0; i < 20; i++)
        arr[i] = rand() % 26 + 'a';
    // 添加结束符标志 \0
    arr[20] = '\0';

    // 重置界面
    ui->label->setText(arr);
    ui->textEdit->setText("");
    ui->label_2->setText("");
    // 时间开始
    start_time = time(NULL);
}

void MainWindow::on_pushButton_2_clicked()
{
    // 结束时间
    end_time = time(NULL);
    // 获取文本内容
    QString txt = ui->textEdit->toPlainText();
    // 去除文本中的空格
    const char * temp = txt.toStdString().data();
    int i = 0;
    while(*temp++ == arr[i++])
        value++;
    // 设置结果显示值
    QString res = QString("Right: %1%   Time: %2(s)").arg(value/20.0*100).arg(end_time - start_time);
    ui->label_2->setText(res);
}
/*---------------- mainwindow.cpp ---------------*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    // 随机数
    srand((unsigned int)time(NULL));
    // 随机字母
    for(int i = 0; i < 20; i++)
        arr[i] = rand() % 26 + 'a';
    // 添加结束符标志 \0
    arr[20] = '\0';

    // 重置界面
    ui->label->setText(arr);
    ui->textEdit->setText("");
    ui->label_2->setText("");
    // 时间开始
    start_time = time(NULL);
}

void MainWindow::on_pushButton_2_clicked()
{
    // 结束时间
    end_time = time(NULL);
    // 获取文本内容
    QString txt = ui->textEdit->toPlainText();
    // 去除文本中的空格
    const char * temp = txt.toStdString().data();
    int i = 0;
    while(*temp++ == arr[i++])
        value++;
    // 设置结果显示值
    QString res = QString("Right: %1%   Time: %2(s)").arg(value/20.0*100).arg(end_time - start_time);
    ui->label_2->setText(res);
}
/*-------------------------- mainwindow.h ---------------------------*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <time.h>
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    unsigned int start_time;    // 开始时间
    unsigned int end_time;  // 结束时间
    int value = 0;  // 计数器
    char arr[21];
};

#endif // MAINWINDOW_H
最后修改:2019 年 04 月 24 日 01 : 01 AM

发表评论