目录
一、前言
双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由1-33(共33个)号码组成,蓝色球号码区由1-16(共16个)号码组成。投注时用户选择6个红球号、1个蓝球号组成一注,机选6个红球、1个蓝球,其中红球号码不能有重复。
中几个号码就可以得到对应奖级的奖金,如下表:
中奖号码数量(个) | 奖金(元) |
3 | 5 |
4 | 20 |
5 | 20000 |
6 | 20 0000 |
7 | 500 0000 |
二、代码部分
2.1 头文件
用到"QString":用于处理字符串的类,"QDebug":用于调试输出的类,"Ctime"、"Cstdlib":用于后面创建随机数, "QPixmap"、"QPainter":显示ui背景的类。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QString>
#include<QDebug>
#include<ctime>
#include<cstdlib>
#include<QPixmap>
#include<QPainter>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
//void paintEvent(QPaintEvent *event);
private slots:
void userNum();
void judge(int usernum,int i);
void overCode();
bool isSave(int user[],int len, int usernum);
void on_pushButton_clicked(bool checked);
private:
Ui::Widget *ui;
int user[7]={0};
int zj[7]={0};
int num=0;
bool tag=true;
};
#endif // WIDGET_H
2.2 源文件
2.2.1 widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//设置该页面标题
this->setWindowTitle("双色球");
//设置随机数种子
srand(time(NULL));
//利用信号和槽机制实现功能,当界面上名为ok的按钮被点击时,当前对象的userNum槽函数将被调用。
connect(ui->ok,SIGNAL(clicked(bool)),this,SLOT(userNum()));
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(overCode()));
}
Widget::~Widget()
{
delete ui;
}
//设置页面背景
/*void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,width(),height(),QPixmap("E:\second\qtProject\prgSSQ1\ssq.jpg"));
}*/
//去重
bool Widget::isSave(int user[],int len, int usernum)
{
//判断是否有重复值
for(int i=0;i<len;i++)
{
if(user[i]== usernum)
{
return true;
}
}
return false;
}
void Widget::on_pushButton_clicked(bool checked)
{
//点击开奖按钮,生成随机红球
for(int i=0;i<6;i++)
{
int h=rand()%33+1;
int a=isSave(zj,7,h);
if(a)
{
i--;
continue;
}
zj[i]=h;
if(i==0) //这里也可以使用for循环
{
ui->zj_num1->setText(QString::number(zj[0]));
}
else if(i==1)
{
ui->zj_num2->setText(QString::number(zj[1]));
}
else if(i==2)
{
ui->zj_num3->setText(QString::number(zj[2]));
}
else if(i==3)
{
ui->zj_num4->setText(QString::number(zj[3]));
}
else if(i==4)
{
ui->zj_num5->setText(QString::number(zj[4]));
}
else if(i==5)
{
ui->zj_num6->setText(QString::number(zj[5]));
}else if(i==6)
{
ui->zj_num7->setText(QString::number(zj[6]));
}
}
//生成随机蓝球
int l=rand()%16+1;
zj[6]=l;
ui->zj_num7->setText(QString::number(zj[6]));
}
void Widget::userNum() //用户输入号码
{
//将输入的数据全部清零
for(int i = 0; i < 7; i++)
{
user[i] = 0;
}
tag = true;
if(tag)
{
judge(ui->user_num1->text().toInt(),0);
if(!tag) return;
judge(ui->user_num2->text().toInt(),1);
if(!tag) return;
judge(ui->user_num3->text().toInt(),2);
if(!tag) return;
judge(ui->user_num4->text().toInt(),3);
if(!tag) return;
judge(ui->user_num5->text().toInt(),4);
if(!tag) return;
judge(ui->user_num6->text().toInt(),5);
if(!tag) return;
judge(ui->user_num7->text().toInt(),6);
if(!tag) return;
tag=true;
}
}
//判断用户输入的号码是否有误
void Widget::judge(int usernum, int i)
{
if(tag){
if(i < 6){
if(usernum>33||usernum<1)
{
ui->user_msg->setText(QString::number(usernum).append("本次输入的号码超出范围,红球范围为1~33"));
tag=false;
return ;
}
//判断红球是否有重复
int a=isSave(user,7,usernum);
if(a)
{
ui->user_msg->setText(QString::number(usernum).append("号码重复,请重新输入"));
tag=false;
return ;
}
//如果输入的数没有重复或超范围,则存入数组
else{
user[i]=usernum;
ui->user_msg->setText("购买成功");
}
}
else
{
//判断蓝球是否在范围内
if(usernum>16||usernum<1)
{
ui->user_msg->setText(QString::number(usernum).append("本次输入的号码超出范围,蓝球范围为1~16"));
tag=false;
return ;
}
//将第6个数存入数组
user[6]=usernum;
}
}
}
void Widget::overCode()
{
//遍历用户输入数组和机器随机生成的数组
int num=0;
for(int i=0;i<6;i++)
{
for(int j=0;j<6;j++)
{
if(user[i]==zj[j])
{
num++;
}
}
}
//有相同则计数
if(user[6]==zj[6])
{
num++;
}
switch (num) {
case 1:
ui->msg->setText("恭喜您只有一个号码相同,获得一次参与感");
break;
case 2:
ui->msg->setText("恭喜您只有两个号码相同,获得一次参与感");
break;
case 3:
ui->msg->setText("恭喜您中奖5元");
break;
case 4:
ui->msg->setText("恭喜您中奖20元");
break;
case 5:
ui->msg->setText("恭喜您中奖2w");
break;
case 6:
ui->msg->setText("恭喜您中奖20w");
break;
case 7:
ui->msg->setText("恭喜您中奖500w");
break;
default:
ui->msg->setText("感谢参与");
break;
}
}
2.2.1 main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
三、ui界面
3.1 模版页
用户先输入用户号码,点击确认按钮判断号码是否有误,若有误则修改后再次点击确认,若无误则点击开奖。