emmmmm
我不会美化
我不会美化
我不会美化
++++++++++++++、
重要的事情说三遍
一美化就各种未知的bug
鉴于课设时间即将截止,所以不好意思的去匆匆结尾
等这阵子消停了,应该会回来在美化美化
+++++上 代码
gamerplayer.h
#ifndef GAMEPLAYER_H
#define GAMEPLAYER_H
#include <QString>
struct player01{
//char name[20];
int ID;//0,1==red,black
bool cunzhang;//1==yes
double ticket_001;//被投的 cunzhang
double ticket_002;//拥有的
double ticket_003;//被投的
bool life;//0,1==die ,alive
//int number;//i
QString words;
int eye;//1==open ,0==closed
};
extern struct player01 player[10];
class gameplayer
{
public:
gameplayer();
};
#endif // GAMEPLAYER_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_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();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void on_pushButton_5_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_radioButton_clicked();
void on_radioButton_2_clicked();
void on_radioButton_3_clicked();
void on_radioButton_4_clicked();
private:
Ui::MainWindow *ui;
int n,red,black,j,count,i;//参赛人数,红黑人数,村长序号,计数器
int a4=0,b=0;//第一次发言所需
int a0, temp1,temp2;//左右发言所需
int a1=0,a2=0,a3=0;//天黑了请闭眼
int day=3;//红黑夜
int a5=0,a6;//投票杀人所需
};
#endif // MAINWINDOW_H
gameplayer.cpp
#include "gameplayer.h"
struct player01 player[10];
gameplayer::gameplayer()
{
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>
#include <QString>
#include "gameplayer.h"
#include "stdlib.h"
#include "time.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->stackedWidget->setCurrentWidget(ui->page);
srand((unsigned)time(NULL));
ui->groupBox->hide();
ui->groupBox_4->hide();
}
MainWindow::~MainWindow()
{
delete ui;
}
//开始游戏
void MainWindow::on_pushButton_clicked(){
n=ui->comboBox->currentText().toInt();//获取n
ui->stackedWidget->setCurrentWidget(ui->page_2);//跳转到游戏界面
qDebug()<<n;
}
//结束游戏
void MainWindow::on_pushButton_2_clicked(){
this->close();
}
//初始化
void MainWindow::on_pushButton_3_clicked(){
if(n%2==0)
{
red=n/2;
black=n/2;
}
else{
red=n/2+1;
black=n/2;
}//红黑身分数
for(int i=0;i<n;i++)
{
player[i].life=1;
player[i].cunzhang=0;
player[i].ticket_001=0;
player[i].ticket_002=1;
player[i].ticket_003=0;
if(red==0) player[i].ID=1;
else if(black==0) player[i].ID=0;
else {
player[i].ID=rand()%2;
if(player[i].ID==0) red--;
else black--;
}//ID
}
if(n%2==0)
{
red=n/2;
black=n/2;
}
else{
red=n/2+1;
black=n/2;
}//红黑身分数
QMessageBox::information(this,"天","进入白昼");
ui->stackedWidget->setCurrentWidget(ui->page_6);
ui->label_15->setText(QString::number(a4));
}
//第一次发言
void MainWindow::on_pushButton_8_clicked(){
player[a4].words=ui->lineEdit_2->text();
ui->lineEdit_2->setText("");
if(a4==n-1)
{
ui->stackedWidget->setCurrentWidget(ui->page_3);
}
a4++;
ui->label_15->setText(QString::number(a4));
}
//村长的投票 ready
void MainWindow::on_pushButton_5_clicked()
{
b++;
QString str001;
i=0;
while(player[i++].life==0);
i--;
str001=QString::number(i);
ui->label_5->setText(str001);
ui->groupBox_2->hide();
ui->groupBox->show();
}
//村长的投票
void MainWindow::on_pushButton_4_clicked(){
int t;
t=ui->comboBox_2->currentText().toInt();
player[t].ticket_001+=1;
if(i==n-1)
{
int temp;
for(int k=0;k<n;k++)
{
if(k==0) {
temp=player[0].ticket_001;
j=0;
}
else if(player[k].ticket_001>temp) {
temp=player[k].ticket_001;
j=k;
}
}//找cunzhang
//cout<<player[j].name<<"玩家为村长!"<<endl;
QString m0=QString::number(j);
QMessageBox::information(this,"tips:","村长是"+m0);
player[j].cunzhang=1;
if(day==0)
{
if(a2%2==0) player[j].ticket_002=1;
}
else if(day==1)
{
if(a3%2==0) player[j].ticket_002=1;
}
else if(n%2==0) player[j].ticket_002=1.5;
else player[j].ticket_002=0.5;//cunzhang的初始化
for(int k=0;k<n;k++) player[k].ticket_001=0;//置零
ui->stackedWidget->setCurrentWidget(ui->page_5);
if(day=rand()%2==0)
{
QMessageBox::information(this,"day","进入红夜");
}//red
else
{
QMessageBox::information(this,"day","进入黑夜");
}//black
a0=0;
while(player[a0].life==0) a0++;
ui->label_12->setText(QString::number(a0));
}
else {
while(player[i++].life==0);
QString m1=QString::number(i);
ui->label_5->setText(m1);
}
}
//发言顺序
//左初始化
void MainWindow::on_radioButton_clicked(){
temp1=n,temp2=j;
while(temp2-->=0)
{
if(temp2==-1) temp2=n-1;
if(player[temp2].life==1)
{
break;
}
}
ui->label_9->setText(QString::number(temp2));
a0=0;
count=0;
ui->groupBox_3->hide();
ui->groupBox_4->show();
}
//右初始化
void MainWindow::on_radioButton_2_clicked(){
temp1=n,temp2=j;
while(temp2++>=0)
{
if(temp2==n) temp2=0;
if(player[temp2].life==1)
{
break;
}
}
ui->label_9->setText(QString::number(temp2));
a0=1;
count=0;
}
//按顺序发言
void MainWindow::on_pushButton_6_clicked(){
if(a0==0)//left
{
while(count!=n)
{
if(player[temp2].life==1)
{
player[temp2].words=ui->lineEdit->text();
ui->lineEdit->setText("");
do{
count++;
temp2++;
if(temp2==n) temp2=0;
}while(player[temp2].life==0);
ui->label_9->setText(QString::number(temp2));
break;
}
else
{
temp2++;
if(temp2==n) temp2=0;
}
}
a5=-1;
do{
a5++;
}while(player[a5].life==0);
ui->label_18->setText(QString::number(a5));
}
else//right
{
while(count!=n)
{
if(player[temp2].life==1)
{
player[temp2].words=ui->lineEdit->text();
ui->lineEdit->setText("");
do{
count++;
temp2--;
if(temp2==-1) temp2=n-1;
}while(player[temp2].life==0);
ui->label_9->setText(QString::number(temp2));
break;
}
else
{
temp2--;
if(temp2==-1) temp2=n-1;
}
}
}
if(count==n)
{
ui->stackedWidget->setCurrentWidget(ui->page_7);
count=0;
a5=-1;
do{
a5++;
}while(player[a5].life==0);
ui->label_18->setText(QString::number(a5));
}
}
//夜来了,请闭眼
//open
void MainWindow::on_radioButton_3_clicked(){
player[a0].eye=1;
a2++;
}
//close
void MainWindow::on_radioButton_4_clicked(){
player[a0].eye=0;
a3++;
}
void MainWindow::on_pushButton_7_clicked(){
do{
a0++;
}while (player[a0].life==0);
if(a0>=n)
{
ui->stackedWidget->setCurrentWidget(ui->page_4);
a0=0;
QMessageBox::information(this,"day","进入白昼");
}
ui->label_12->setText(QString::number(a0));
}
//投票杀人
void MainWindow::on_pushButton_9_clicked(){
do{
a5++;
if(a5==n) break;
}while(player[a5].life==0);
ui->label_18->setText(QString::number(a5));
int t;
t=ui->comboBox_3->currentText().toInt();
player[t].ticket_003+=player[a5].ticket_002;
if(a5==n)
{
int t1=0,tt;
while(player[t1].life==0) t1++;
tt=player[t1].ticket_003;
for(int k=t1+1;k<n;k++)
{
if(tt<player[k].ticket_003)
{
tt=player[k].ticket_003;
t1=k;
}
}
for(int k=0;k<n;k++)
{
player[k].ticket_003=0;
}//清零
player[t1].life=0;
if(player[t1].ID==0)//死者的后事处理***********************************************************
{
QMessageBox::information(this,"ID",QString::number(t1)+"号玩家死亡!身份是red");
red--;
}
else
{
QMessageBox::information(this,"ID",QString::number(t1)+"号玩家死亡!身份是black");
black--;
}
if(player[t1].cunzhang==1)
{
player[t1].cunzhang=0;
QMessageBox::information(this,"村长","村长已死亡,请重新选举村长!");
ui->stackedWidget->setCurrentWidget(ui->page_3);
}//村长没了,选村长去
else
{
if(day=rand()%2==0)
{
QMessageBox::information(this,"day","进入红夜");
}//red
else
{
QMessageBox::information(this,"day","进入黑夜");
}//black
ui->stackedWidget->setCurrentWidget(ui->page_5);//进入夜晚
a0=0;
while(player[a0].life==0) a0++;
ui->label_12->setText(QString::number(a0));
}
if(red==0)
{
QMessageBox::information(this,"0.0","black胜利");
ui->stackedWidget->setCurrentWidget(ui->page);
}
if(black==0)
{
QMessageBox::information(this,"0.0","red胜利");
ui->stackedWidget->setCurrentWidget(ui->page);
}
}
}
UI是在一个widget上添加stackwidget
通过翻页来实现游戏界面的变化