增加了主界面,修改了一些bug

#include <iostream>
#include<ctime>
#include<conio.h>
#include<fstream>
#include<iomanip>
#include<cstdlib>
#include<windows.h>
using namespace std;
const int tms=7,pdh=45,pdj=362880;
struct wj{int gq;bool b[tms+1];void cj(){gq=1;for(int i=1;i<=tms;i++)b[i]=0;}
}wj;
string sdtm[tms+1][10]={{"         "},{//1"          ","  61 3  2 ","  5   81 7","      7 34","   9  6378","   32795  "," 57 3  9 2"," 19 76    "," 8 24  76 "," 64  1 25 "},{//"          "," 1  83   2"," 57   1   ","    5 9 64"," 7 4  859 ","   3 1 4  ","  514  3 6"," 36 7 4   ","    6   79"," 8   52  3"},{"          ","    4 9   ","  8  2 7  ","  2 5 71 6"," 3  8   6 "," 76     31","  1   6  2"," 2 59 8 4 ","   9 7  1 ","    6 5   "},{"          ","       945","   6      "," 52 1 38 7","  9 31    ","   3 8 1  ","     46 2 "," 7 52 8 19","       3  "," 861      "},{"          ","  7 1 3 6 ","  5     7 "," 3   5   1"," 5  3 4  8"," 4 7   1 2"," 9  7 2  4"," 2   7   3","  3     4 ","  6 5 9 2 "},{"          ","  9    64 "," 4        "," 1  36  72","   46    9","    9 3   "," 2    54  "," 92  57  8","         5"," 34    6  "},{"          ","   7   9  "," 2  5 7  6","  8 1 4 7 ","  4  1  3 "," 6 1   8 9","  9  8  6 ","  5 8 9 1 ","  1 6 3  2","   6   3  ",}
};
//基本函数
void sc(string s[],int b[10][10]);
void scpd(char t);
bool pd(string s[],int x);
bool pd1(string s[]);
void out(string s,int x);
void zt();
void color(const char *s, int color);
//
void gzjs();
void sdyx();
void zzjs();
void yx();
void xy(int x);
int main(){sdyx();return 0;
}
void color(const char *s, int color)
{HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | color);printf(s);SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7);
}
void scpd(char t){if(t=='1')color("1",4);if(t=='2')color("2",4);if(t=='3')color("3",4);if(t=='4')color("4",4);if(t=='5')color("5",4);if(t=='6')color("6",4);if(t=='7')color("7",4);if(t=='8')color("8",4);if(t=='9')color("9",4);return;
}
void sc(string s[],int b[10][10]){cout<<"___________________\n";for(int i=1;i<=9;i++){cout<<"|";for(int j=1;j<=9;j++){if(b[i][j]==1){scpd(s[i][j]);}elsecout<<s[i][j];if(j%3==0)cout<<"|";elsecout<<' ';}if(i%3==0)cout<<"\n|_____|_____|_____|";cout<<"\n";}return;
}
void out(string s,int x){for(int i=0;i<s.size();i++){cout<<s[i];Sleep(x);}return;
}
void zt(){cout<<"请按任意键继续. . .";char a=_getch();return;
}
void sdyx(){while(1){system("cls"); cout<<"------------------------------------数独游戏------------------------------------\n\n";cout<<"0:退出游戏     1:开始游戏     2:规则介绍     3:作者介绍\n";char s=_getch();while(s<'0'||s>'3')s=_getch();s-='0';switch(s){case 0:{return;break;}case 1:{yx();break;}case 2:{gzjs();break;}case 3:{zzjs();break;}default:{system("cls");cout<<"输入错误,请重新输入!!!";break;}}}return;
}
void xy(int x){int b[10][10];string a[10];for(int i=1;i<10;i++){a[i]=sdtm[x][i];for(int j=1;j<10;j++){b[i][j]=(sdtm[x][i][j]!=' ');}}while(1){system("cls");int tot=0;for(int i=1;i<=9;i++)for(int j=1;j<=9;j++)if(a[i][j]!=' ')tot++;if(tot==81){if(pd1(a)){sc(a,b); system("cls");out("恭喜您通关了这个数独",30);wj.b[x]=1;wj.gq++;cout<<"\n";zt(); return;}else{system("cls");out("很抱歉,您的填写有误,是否重新开始(y/n)",45);char qw=_getch();while(qw!='y'&&qw!='n')qw=_getch();if(qw=='y')xy(x);}system("cls");}cout<<"您正在游戏的是"<<x<<"号数独\n"; sc(a,b);Sleep(400);cout<<"0:退出     1:填写     2:帮助\n";char s=_getch();while(s<'0'||s>'2')s=_getch();s-='0';if(s==0){system("cls");out("已成功退出!!!",40);cout<<"\n";zt();return;}if(s==1){cout<<"请输入填写的坐标(先行再列)以及填写的数";int x,y,k;cin>>x>>y>>k;while(x<1||x>9||y<1||y>9||k<0||k>9||b[x][y]==1){Sleep(400);system("cls");if(b[x][y]==1){cout<<"这个格子是系统产生的数,不可以随意更改!!!";}elsecout<<"输入错误,请重新输入!!!";zt();system("cls");sc(a,b);cout<<"0:退出     1:填写     2:删除\n";cout<<"请输入填写的坐标(先行再列)以及填写的数";cin>>x>>y>>k;}if(k==0){b[x][y]=0;a[x][y]=' ';out("删除成功!!!",20);}else{if(b[x][y]==2)out("更改成功!!!",20);elseout("填写成功!!!",20);b[x][y]=2,a[x][y]=k+'0';}}if(s==2){system("cls");cout<<"当您需要删除您自己所填写的数字时,只需要填写坐标再输入0即可。\n";zt();continue;}}
}
void yx(){srand(time(0));int x=rand()%tms+1;xy(x);
}
void gzjs(){while(1){system("cls");cout<<"0:退出     1:数独介绍     2:玩法技巧\n";char s=_getch();while(s!='0'&&s!='1'&&s!='2')s=_getch();s-='0';if(s==0)return;if(s==1){system("cls");color("介绍:",4);out("\n  数独 (英语:Sudoku)是一种逻辑性的数字填充游戏,玩家须以数字填进每一格,而每行、每列和每个宫(即3x3的大格)有齐1至9所有数字。游戏设计者会提供一部分的数字,使谜题只有一个答案。一个已解答的数独其实是一种多了宫的限制的拉丁方阵,因为同一个数字不可能在同一行、列或宫中出现多于一次。\n\n",20);Sleep(400);color("规则:",4);out("\n  数独(九宫格)的规律是每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。\n\n",20);Sleep(400);color("好处:",4);out("\n  玩数独首先观察力的提升有好处,无容置疑,即使你看懂了再多,再难的技巧,若无版法观察,无权法应用也是白搭;第二,逻辑推理能力,数独本身就是一个逻辑推理类的游戏,在每一步出数的时候需要利用盘面的数字进行推导,在你做其他事的时候利用数独这种分析判断力,也会对问题的理解更为深刻;第三,心态,发现不少人说,觉得烦的时候,一道数独就能让心情平复下来,在解题的时候全神贯注,往往时间在不经意间流逝,同样的,当你被数独题难到时,也要保持平和的心态,过于浮躁则很难找到突破点。\n\n",20);Sleep(400);zt();}if(s==2){system("cls");color("1:",4);out("先找数字最多的(观察整个表格,哪个数字出现最多),再利用游戏规则进行推内断填入,最容易容填。\n\n",20);Sleep(200);color("2:",4);out("填的时候尽可能把一个数字(指1-9中其中一个)填完。\n\n",20);Sleep(100);color("3:",4);out("对于则于数字少而二个数字无法直接确定的,只能先假设,然后往下推断,若无矛盾的,则原假设正确,不用改。而后来推断出现矛盾了,则原先假设不成立,位置对调即可。\n\n",30);Sleep(300);color("4:",4);out("一行或一列、一个九宫格剩余数字不超过3个了,就可以利用前后左右行与列推断填写。\n\n",25);Sleep(250);color("5:",4);out("当您需要删除您自己所填写的数字时,只需要填写坐标再输入0即可。\n\n",20);Sleep(150);zt();}}return;
}
void zzjs(){system("cls");cout<<"                                  作者介绍\n";cout<<"姓名:YYF     年龄:12     就读学校:湄小(601)班\n";cout<<"业余爱好:编程、下棋\n";zt();return;
}
bool pd1(string s[]){int H,J;for(int i=1;i<10;i++){H=0,J=1;for(int j=1;j<10;j++)H+=s[i][j]-'0',J*=s[i][j]-'0';if(H!=pdh||J!=pdj)return 0;}for(int i=1;i<10;i++){H=0,J=1;for(int j=1;j<10;j++)H+=s[j][i]-'0',J*=s[j][i]-'0';if(H!=pdh||J!=pdj)return 0;}for(int i=0;i<=6;i+=3){for(int j=0;j<=6;j+=3){H=0,J=1;for(int l=1;l<=3;l++){for(int k=1;k<=3;k++){int x=l+i,y=k+j;H+=s[x][y]-'0',J*=s[x][y]-'0';}}if(H!=pdh||J!=pdj)return 0;}}H=0,J=1;return 1;
} 

c++数独游戏2.0相关推荐

  1. c++数独游戏3.0

    最近更新了数独游戏 1:使玩家的游戏记录可以存档 2:修复了闯关时输入第十关会错误的bug 3:换了输出颜色的程序(感谢饼干) #include<iostream> #include< ...

  2. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

  3. Leetcode0037--Sudoku Solver 数独游戏

    [转载请注明]http://www.cnblogs.com/igoslly/p/8719622.html 来看一下题目: Write a program to solve a Sudoku puzzl ...

  4. python数独游戏源代码100行_python实现解数独程序代码

    偶然发现linux系统附带的一个数独游戏,打开玩了几把.无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了. 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的. 下面就记录一下我写 ...

  5. python数独游戏源代码_使用Python编写数独游戏自动出题程序

    数独是一个很好玩的游戏,可以锻炼推理能力.下面的代码可以自动生成数独游戏题目. from random import shuffle, randrange def generate(): # 初始网格 ...

  6. 2014/School_C_C++_A/6/“数独”游戏

    你一定听说过"数独"游戏. 如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重复. 数独 ...

  7. 【dfs】数独游戏(ybtoj dfs-1-2)

    数独游戏 ybtoj dfs-1-3 题目大意 给出一个未完成的数独,让你完成它 输入样例 4.....8.5.3..........7......2.....6.....8.4......1.... ...

  8. c语言编程数独游戏,编程做数独游戏

    数独游戏非常好玩,可以训练玩家的逻辑推理能力.数独游戏的规则是: 1.在9×9的大九宫格内,已给定若干数字,其他宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字. 2.必须满足的条件:每一行 ...

  9. python数独游戏源代码100行_python实现自动解数独小程序

    跟朋友最近聊起来数独游戏,突发奇想使用python编写一个自动计算数独解的小程序. 数独的规则不再过多阐述,在此描述一下程序的主要思路: (当前程序只针对于简单的数独,更复杂的还待深入挖掘) 1.计算 ...

最新文章

  1. Response.Redirect 打开新窗体的两种方法
  2. sql server 日期
  3. 帮腾讯云拿下行业第一的程序员们,不穿格子衫和人字拖
  4. HBase中的时间维度
  5. Hiring data scientists
  6. 服务器脚本执行sql文件命令行,sh命令执行sql脚本
  7. java学习体会论文_Java I/O学习心得一
  8. spring-注入array集合
  9. 字符串拼接成insert语句[简单记录]
  10. 经典面试题(47):以下代码将输出的结果是什么?
  11. 滚轮y坐标html,web交互之js事件
  12. Partition Array by Odd and Even
  13. CTCS列控系统原理--详细学习笔记
  14. 数字移动c语言课程设计,《移动应用开发》课程设计.doc
  15. 美国大学 计算机,U.S.News美国大学计算机专业排名
  16. 第二版 手把手教你如何建立自己的Linux系统
  17. c语言数字字符一起读,如何同时输入字符串和数字
  18. csrf 功能 及 csrf装饰器使用
  19. 当你的游戏道具,被做成了生意......
  20. Arduino DRV8825驱动两相步进电机

热门文章

  1. 腾讯云轻量应用服务器CentOS系统使用docker安装tomcat,MySQL 并发布SSM maven项目
  2. 微电网数字孪生 | 智能时代,部署源网荷储一体化管控平台
  3. redisson中的看门狗机制总结
  4. 投资入门第 3 步:技术分析法(常用技术分析)
  5. SQL -- 游标(详细)
  6. 微服务网关spring cloud gateway入门详解
  7. LDPC码简介(一)
  8. 逃避错误意味着失去成长的机会——与孩子谈学习中的弱项(音频)
  9. 新农慕课python项目答案_2020中国大学MOOC(慕课)Python编程基础题目及答案
  10. 0x01.被动信息收集