(计算机c++编程第一个课程设计)高手数独游戏(最终完结完美解释版
这个是高等教育体系下,二本院校,大一计算机系的第一个课程设计, 编一个数独游戏! 用c++ 语言。 本人特拿出来与大家分享, 造福同学
#include<iostream>
#include<ctime>
#include<string>
#include<conio.h>
#include<iomanip>
using namespace std;
int Random[9][9]={ // 这是填好以后,正确的数独
{3,9,6,1,2,4,7,8,5},
{7,8,1,9,5,6,2,4,3},
{2,4,5,7,8,3,6,1,9},
{6,3,2,8,4,1,5,9,7},
{1,7,4,5,3,9,8,2,6},
{9,5,8,2,6,7,4,3,1},
{4,1,7,6,9,8,3,5,2},
{5,6,3,4,1,2,9,7,8},
{8,2,9,3,7,5,1,6,4}
};
int a[9][9]; //用于显示的数组
bool flag[9][9]; // 用于标记的数组
int cnt=0; //用于标记剩余的方框数
void gaoshoujiemian() // 显示第一个界面
{
printf(" =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n");
printf("\n\n\n\n\n\n\n\n\n\n 高手数独\n\n\n\n\n\n\n\n\n\n\n 高手公司重磅推出\n 请按任意键继续");
printf("\n =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=");
getch(); // 要用 #include<conio.h> 这个头文件 ; 函数用途:从控制台读取一个字符,但不显示在屏幕上
system("cls"); //执行DOS下的清屏命令。
}
void formal(int h[9][9],int f[9][9]) //初始化数组 , h 就是ramdom f就是a
{
int m,n,i,j,l,k;
while(true)
{
m=rand()%9; //9以内的随机数 , 不包括9
if(m==0||m==3||m==6)
{
break;
}
}
srand(time(NULL)); // 利用时间设置随机种子, 随机数初始化
while(true)
{
l=rand()%9;
if(l==1||l==2)
{
break;
}
}
srand(time(NULL));
while(true)
{
n=rand()%9;
if(n==0||n==3||n==6)
{
break;
}
}
srand(time(NULL));
for(i=0;i<9;i++)
{
int u;
u=h[i][m];
h[i][m]=h[i][m+l];
h[i][m+l]=u;
} // 两列交换
while(true)
{
k=rand()%9;
if(k==1||k==2)
{
break;
}
}
for(j=0;j<9;j++)
{
int p;
p=h[n][j];
h[n][j]=h[n+k][j];
h[n+k][j]=p;
} // 两行交换
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
f[i][j]=h[i][j]; // 把交换好的数组 给 要用于显示的数组 h 给 f 。
}
}
}
void copyArray(int from[9][9],int to[9][9]) //还原数组
{
int m,n,i,j,l,k;
while(true)
{
m=rand()%9;
if(m==0||m==3||m==6)
{
break;
}
}
srand(time(NULL)); // 利用时间设置随机种子, 随机数初始化!
while(true)
{
n=rand()%9;
if(n==0||n==3||n==6)
{
break;
}
}
srand(time(NULL));
while(true)
{
l=rand()%9;
if(l==1||l==2)
{
break;
}
}
srand(time(NULL));
while(true)
{
k=rand()%9;
if(k==1||k==2)
{
break;
}
}
for(i=0;i<9;i++)
{
int u;
u=from[i][m];
from[i][m]=from[i][m+l];
from[i][m+l]=u;
}
for(j=0;j<9;j++)
{
int p;
p=from[n][j];
from[n][j]=from[n+k][j];
fr
om[n+k][j]=p;
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
to[i][j]=from[i][j];
}
}
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
这个是高等教育体系下,二本院校,大一计算机系的第一个课程设计, 编一个数独游戏! 用c++ 语言。 本人特拿出来与大家分享, 造福同学
to[i][j]=from[i][j];
}
}
}
void newgame(int a[9][9],bool flag[9][9],int level) //挖去操作,设置难易程度
{
fill(&flag[0][0],&flag[8][8]+1,false); // 范立新 老在讲的,你应该懂的: 就是把 flag 数组里面的每个成员都标记为false (这步很关键)
int r,p=0; // r表示 挖去的空格。
if(level==0)
{
p=1;
r=2;
}
else if(level==1)
{
p=1;
r=15;
}
else if(level==2)
{
p=1;
r=20;
}
else if(level==3)
{
p=1;
r=25;
}
else if(level==4)
{
p=1;
r=30;
}
if(p==1)
{
srand(time(NULL)); // 随机数初始化
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 不存在。
{
cout<<"Invalid Game level"<<endl;
system ("pause"); // 暂停
}
}
void showArray(int a[9][9],bool flag[9][9]) // 显示数独当前状态
{
char col[9]={'0','1','2','3','4','5','6','7','8'};
system ("cls"); // 清屏
cout<<" 0 1 2 3 4 5 6 7 8 "<<endl;
cout<<" ╔═════╤═════╤═════╗"<<endl;
int i,j;
for(i=0;i<9;i++)
{
cout<<col[i]<<" ║";
for(j=0;j<9;j++)
{
if(a[i][j]!=0&&flag[i][j]==false)
{
cout<<setw(3)<<a[i][j];
}
if(a[i][j]==0)
{
cnt++; // cnt 是用来标记 方框数
cout<<setw(3)<<"□"; // setw 是 空格
}
if(a[i][j]!=0&&flag[i][j]==true) // 原来是方框的地方,现在输入了值了,那就如下这样。
{
cout<<setw(2)<<"_"<<a[i][j];
}
if((j+1)%3==0&&j!=8) // 什么时候 显示 │
{
cout<<" │";
}
}
cout<<" ║"<<endl;
if((i+1)%3==0&&i!=8)
{
cout<<"
…… 此处隐藏:2823字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




