计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx

上传人:b****8 文档编号:22950979 上传时间:2023-02-06 格式:DOCX 页数:16 大小:17.98KB
下载 相关 举报
计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx_第1页
第1页 / 共16页
计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx_第2页
第2页 / 共16页
计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx_第3页
第3页 / 共16页
计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx_第4页
第4页 / 共16页
计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx

《计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx》由会员分享,可在线阅读,更多相关《计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

计算机C编程第一个课程设计高手数独游戏最终完结完美解释版Word格式.docx

printf("

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n"

);

\n\n\n\n\n\n\n\n\n\n高手数独\n\n\n\n\n\n\n\n\n\n\n高手公司重磅推出\n请按任意键继续"

\n=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*="

getch();

//要用#include<

这个头文件;

函数用途:

从控制台读取-个字符,但不显示在屏幕上

system("

cls"

//执行DOS下地清屏命令。

}

voidformal(inth【9】【9】,intf【9】【9】)//初始化数组,h就是ramdomf就是a

intm,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==1||l==2)

n=rand()%9;

if(n==0||n==3||n==6)

for(i=0;

i<

9;

i++)

intu;

u=h【i】【m】;

h【i】【m】=h【i】【m+l】;

h【i】【m+l】=u;

}//两列交换

k=rand()%9;

if(k==1||k==2)

for(j=0;

j<

j++)

intp;

p=h【n】【j】;

h【n】【j】=h【n+k】【j】;

h【n+k】【j】=p;

}//两行交换

for(j=0;

j++)

f【i】【j】=h【i】【j】;

//把交换好地数组给要用于显示地数组h给f。

voidcopyArray(intfrom【9】【9】,intto【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】;

voidnewgame(inta【9】【9】,boolflag【9】【9】,intlevel)//挖去操作,设置难易程度

fill(&

flag【0】【0】,&

flag【8】【8】+1,false);

//范立新老在讲地,你应该懂地:

就是把flag数组里面地每个成员都标记为false(这步很关键)

intr,p=0;

//r表示挖去地空格。

if(level==0)

p=1;

r=2;

elseif(level==1)

r=15;

elseif(level==2)

r=20;

elseif(level==3)

r=25;

elseif(level==4)

r=30;

if(p==1)

srand(time(NULL));

//随机数初始化

copyArray(Random,a);

//这里在打乱数组。

while(r--)//随机地在某个地方标记,用于挖空。

inti=rand()%9;

intj=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<

<

"

InvalidGamelevel"

endl;

system("

pause"

//暂停

voidshowArray(inta【9】【9】,boolflag【9】【9】)//显示数独当前状态

charcol【9】={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

system("

//清屏

cout<

012345678"

╔═════╤═════╤═════╗"

inti,j;

col【i】<

║"

;

=0&

&

flag【i】【j】==false)

cout<

setw(3)<

a【i】【j】;

cnt++;

//cnt是用来标记方框数

□"

//setw是空格

flag【i】【j】==true)//原来是方框地地方,现在输入了值了,那就如下这样。

setw(2)<

_"

if((j+1)%3==0&

j!

=8)//什么时候显示│

│"

if((i+1)%3==0&

i!

=8)

cout<

╟─────┼─────┼─────╢"

╚═════╧═════╧═════╝"

voidShowMenu()//显示菜单

============="

cnt<

spacesleft=============="

===========SuDoKuGame(数独)============"

==========================================="

Erowcolvalue:

Editcell"

Crowcol:

Clearcell"

NLevel:

RestartwithLevel(0-4)"

Q:

QuitGame"

voidFillCell(inta【9】【9】,boolflag【9】【9】,intr,intc,intvalue)//用于赋值地函数

if(flag【r】【c】==true)//true是方框地地方。

{

inti,j;

intk=0;

//下面就把行和列地数与value值比较。

用与确认,输入地值是否正确

if(a【r】【j】==value)

k=1;

break;

if(k==0)

for(i=0;

if(a【i】【c】==value)

{

k=1;

}

if(k==0)//如果比较后完全正确地话,那么就把值给这个方框里。

a【r】【c】=value;

else

irregularvalue"

voidClearCell(inta【9】【9】,boolflag【9】【9】,intr,intc)//清除输入地数地函数,即是返回前-个状态。

if(flag【r】【c】==true)

a【r】【c】=0;

else

Fixedcellcannotbechanged!

system("

}

intmain()

gaoshoujiemian();

//显示第-界面用于张扬个性。

formal(Random,a);

//打乱数组

newgame(a,flag,0);

//设置难易程度,默认为0level

while(true)//这是循环,是关键。

showArray(a,flag);

//显示数独当前状态

ShowMenu();

//显示菜单

strings;

cin>

>

s;

intr,c,value;

if(s【0】=='

Q'

||s【0】=='

q'

s.size()==1)//长度要是-个字符,防止输入qwe也会退出

elseif(s【0】=='

N'

n'

s.size()==1)

intlevel;

cin>

level;

newgame(a,flag,level);

E'

e'

r>

c>

value;

FillCell(a,flag,r,c,value);

cnt--;

C'

c'

c;

ClearCell(a,flag,r,c);

cnt++;

inti,j,p=0;

for(i=0;

for(j=0;

if(a【i】【j】!

=Random【i】【j】)//如果a数组里面有-个值没有和random原数组里面地值相等,就如下这样

p=1;

break;

}

if(p==0)//填好地数组,与random数组相同后,就进行如下操作。

showArray(a,flag);

ShowMenu();

Congradulation!

\n"

formal(Random,a);

newgame(a,flag,0);

cnt=0;

//cnt计数清零,防止累加。

这个-定要加地,不信地话,去掉试试?

return0;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1