1、 printf( =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=n);nnnnnnnnnn 高手数独nnnnnnnnnnn 高手公司重磅推出n 请按任意键继续 n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= getch(); / 要用 #include 这个头文件 ; 函数用途:从控制台读取个字符,但不显示在屏幕上 system(cls /执行DOS下地清屏命令。void formal(int h【9】【9】,int f【9】【9】) /初始化数组 , h 就是ramdom f就是a in
2、t m,n,i,j,l,k; while(true) m=rand()%9; /9以内地随机数 , 不包括9 if(m=0|m=3|m=6) break; srand(time(NULL); / 利用时间设置随机种子, 随机数初始化 l=rand()%9; if(l=|l=) n=rand()%9; if(n=0|n=3|n=6) for(i=0;i9;i+) int u; u=h【i】【m】; h【i】【m】=h【i】【m+l】; h【i】【m+l】=u; / 两列交换 k=rand()%9; if(k=|k=) for(j=0;jj+) int p; p=h【n】【j】; h【n】【j】=
3、h【n+k】【j】; h【n+k】【j】=p; / 两行交换 for(j=0;j+) f【i】【j】=h【i】【j】; / 把交换好地数组 给 要用于显示地数组 h 给 f 。void copyArray(int from【9】【9】,int to【9】【9】) /还原数组 / 利用时间设置随机种子, 随机数初始化! u=from【i】【m】; from【i】【m】=from【i】【m+l】; from【i】【m+l】=u; p=from【n】【j】; from【n】【j】=from【n+k】【j】; from【n+k】【j】=p; to【i】【j】=from【i】【j】;void newga
4、me(int a【9】【9】,bool flag【9】【9】,int level) /挖去操作,设置难易程度 fill(&flag【0】【0】,&flag【8】【8】+,false); / 范立新 老在讲地,你应该懂地: 就是把 flag 数组里面地每个成员都标记为false (这步很关键) int r,p=0; / r表示 挖去地空格。 if(level=0) p=; r=; else if(level=) r=5; else if(level=) r=0; else if(level=3) r=5; else if(level=4) r=30; if(p=) srand(time(NULL
5、); / 随机数初始化 copyArray(Random,a); / 这里在打乱数组。 while(r-) / 随机地在某个地方 标记, 用于挖空。 int i=rand()%9; int j=rand()%9; if(a【i】【j】=0) r+; continue; / 随机产生地a【i】【j】是 0 地话,重新循环次 if(a【i】【j】!=0) a【i】【j】=0; flag【i】【j】=true; / 把 a【i】【j】 弄为0 再把这个地方地flag【i】【j】标记为true else / 否则,这个level 不存在。 coutInvalid Game levelendl; sys
6、tem (pause / 暂停void showArray(int a【9】【9】,bool flag【9】【9】) / 显示数独当前状态 char col【9】=0,345678 system ( / 清屏 cout 0 3 4 5 6 7 8 int i,j;col【i】 ; =0&flag【i】【j】=false) coutsetw(3)a【i】【j】; cnt+; / cnt 是用来标记 方框数 / setw 是 空格flag【i】【j】=true) / 原来是方框地地方,现在输入了值了,那就如下这样。setw()_ if(j+)%3=0&j!=8) / 什么时候 显示 if(i+)%
7、3=0&i!=8) cout void ShowMenu()/ 显示菜单= cnts; int r,c,value; if(s【0】=Q|s【0】=qs.size()=) / 长度要是个字符, 防止 输入 qwe 也会退出 else if(s【0】=Nns.size()=) int level; cinlevel; newgame(a, flag, level);Eercvalue; FillCell(a, flag, r, c, value); cnt-;Ccc; ClearCell(a, flag, r, c); cnt+; int i,j,p=0; for(i=0; for(j=0; if(a【i】【j】!=Random【i】【j】) / 如果a 数组里面有个 值 没有和 random原数组里面地值相等, 就 如下这样 p=; break; if(p=0) / 填好地数组,与random数组 相同后, 就进行如下操作。 showArray(a,flag); ShowMenu();Congradulation!n formal(Random,a); newgame(a, flag, 0); cnt=0; /cnt 计数 清零, 防止累加。 这个定要加地, 不信地话, 去掉试试? return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1