#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
// 添加qss
QFile file(":/main.qss");
file.open(QIODevice::ReadOnly);
setStyleSheet(file.readAll());
ui->setupUi(this);
this->init();
this->cont();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::init()
{
setWindowTitle("Tic-Tac-Toe");
setFixedSize(630, 800);
this->clear();
QLabel *myinfo=new QLabel(" Powered By Lier-accuser | v1.0 ",this);
ui->statusbar->addPermanentWidget(myinfo);
if(!info::name1.isEmpty()) n1=info::name1;
if(!info::name2.isEmpty()) n2=info::name2;
ui->player1->setText(n1+":");
ui->player2->setText(n2+":");
}
void MainWindow::cont()
{
connect(ui->label_1, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_2, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_3, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_4, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_5, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_6, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_7, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_8, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->label_9, SIGNAL(click()), this, SLOT(onclick()));
connect(ui->restart, SIGNAL(clicked()), this, SLOT(restart()));
connect(ui->exit, SIGNAL(clicked()), this, SLOT(exit()));
connect(ui->clear, SIGNAL(clicked()), this, SLOT(clear()));
}
void MainWindow::clear()
{
QLabel* labels[]={ui->label_1,ui->label_2,ui->label_3,
ui->label_4,ui->label_5,ui->label_6,
ui->label_7,ui->label_8,ui->label_9};
for(int i=0; i<9; ++i){
labels[i]->setText("");
}
this->num=0;
player_flag=true;
}
int MainWindow::is_over()
{ // 0--玩家1获胜, 1--玩家2获胜, 2--棋没下完没人获胜, 3--棋下完了平局
QString stringArray[3][3]={
{ui->label_1->text(),ui->label_2->text(),ui->label_3->text()},
{ui->label_4->text(),ui->label_5->text(),ui->label_6->text()},
{ui->label_7->text(),ui->label_8->text(),ui->label_9->text()}
};
// 横着判断
for(int i=0;i<3;i++){
if(stringArray[i][0]==stringArray[i][1] && stringArray[i][1]==stringArray[i][2]){
if(stringArray[i][0]=="⭕" && stringArray[i][1]=="⭕") return 0;
else if(stringArray[i][0]=="✖️" && stringArray[i][1]=="✖️") return 1;
}
}
// 竖着判断
for(int j=0;j<3;j++){
if(stringArray[0][j]==stringArray[1][j] && stringArray[1][j]==stringArray[2][j]){
if(stringArray[0][j]=="⭕" && stringArray[1][j]=="⭕") return 0;
else if(stringArray[0][j]=="✖️" && stringArray[1][j]=="✖️") return 1;
}
}
// 斜着判断
if(stringArray[0][0]==stringArray[1][1] && stringArray[1][1]==stringArray[2][2]){
if(stringArray[0][0]=="⭕" && stringArray[1][1]=="⭕") return 0;
else if(stringArray[0][0]=="✖️" && stringArray[1][1]=="✖️") return 1;
}
if(stringArray[0][2]==stringArray[1][1] && stringArray[1][1]==stringArray[2][0]){
if(stringArray[0][2]=="⭕" && stringArray[1][1]=="⭕") return 0;
else if(stringArray[0][2]=="✖️" && stringArray[1][1]=="✖️") return 1;
}
// 没有分出胜负
if(num==9) return 3;
return 2;
}
void MainWindow::send_msg(int judge)
{
if(judge==2) return;
if(judge==0){
QString cout = n1+" 获胜";
QMessageBox::information(this, "获胜", cout);
int value=ui->score1->text().toInt();
++value;
ui->score1->setText(QString::number(value));
}
else if(judge==1){
QString cout = n2+" 获胜";
QMessageBox::information(this, "获胜", cout);
int value=ui->score2->text().toInt();
++value;
ui->score2->setText(QString::number(value));
}
else if(judge==3) QMessageBox::information(this, "平局", "平局");
num=9; // 快进到结尾
}
void MainWindow::onclick(){
QLabel* label = qobject_cast<QLabel*>(sender());
if(label && label->text() == "" && num!=9){
if(player_flag) label->setText("⭕");
else label->setText("✖️");
player_flag=!player_flag;
this->num++;
this->send_msg(this->is_over());
}
if(num==9) this->clear();
}
void MainWindow::exit()
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "确认退出", "是否确定要退出游戏?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
close();
}
}
void MainWindow::restart()
{
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "确认重新开始", "是否确定要重新开始游戏?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
clear();
ui->score1->setText(QString::number(0));
ui->score2->setText(QString::number(0));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip课程作业基于qt的井字棋小游戏c++源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论




























收起资源包目录
















共 15 条
- 1
资源评论


onnx
- 粉丝: 1w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 考计算机二级证书有用吗(1).docx
- 金融大数据解决方案(1).ppt
- 互联网+背景下应用型本科高校校企合作人才培养模式(1).docx
- 事业单位网站静态化探究(1).docx
- 软件部门年度工作总结(1).doc
- Delphi1042饲料配方管理系统2(1).doc
- 互联网产品及wap产品策划书模版(1)(1).doc
- 媒介代理信息化的解决方案0727(1).doc
- 浅议医院档案管理的信息化建设(1).docx
- 公司网站建设方案(1)(1).doc
- 关于感性品牌忠诚度影响网站用户体验的研究(1).docx
- 互联网时代的高职教育困境与出路探讨(1).docx
- 软件的定义—需求分析(1).ppt
- 大数据在高等教育质量评价中的应用(1).docx
- 人工智能和大数据在核电领域的应用研究(1).docx
- 数据库软件项目节能评估报告模板(1).docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
