拼图游戏C#代码.docx
《拼图游戏C#代码.docx》由会员分享,可在线阅读,更多相关《拼图游戏C#代码.docx(20页珍藏版)》请在冰豆网上搜索。
拼图游戏C#代码
声明:
本游戏由14477-Ly所写,可以转载,须说明出处
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceConsoleApplication1
{
classProgram
{
publicstaticintx1,y1;//定义两个数用来移动数组作为参考坐标
staticint[,]ss=newint[20,20];//定义一个静态二维数组做为参考数组
staticint[,]sss=newint[20,20];//定义一个静态二维数组做为移动数组
staticboolpan=false;//判断真假值用于程序跳出
staticintiii=0;//用于统计步数
staticint[,]paixu=newint[20,20];//用来存储对应难度的排行榜
staticint[]tongjishuzu={0,0,0,0,0,0,0};//统计各难度的排行
staticboolyanse11=false;//用来判断是否产生随机背景颜色
staticboolyanselll=false;//用来判断是否产生随机字体颜色
///
///对数组进行排序
///
///
///
publicstaticvoidpaixushuzu(intx,intnandu)//用直接选择排序方式对排行榜进行排序
{
if(x>10)
x=10;
for(inti=1;i{
intb=0;
for(intj=0;j<=x-i;j++)
{
if(paixu[nandu-3,j]>=paixu[nandu-3,b])
b=j;
else
continue;
}
inth;
h=paixu[nandu-3,b];
paixu[nandu-3,b]=paixu[nandu-3,x-i];
paixu[nandu-3,x-i]=h;
}
}
///
///输出排行榜
///
///
publicstaticboolshuchu()
{
intxxxf=0;
boolxxxxxx=false;
while(true)
{
Console.WriteLine("请选择排行榜:
A.3*3B.4*4C.5*5D.6*6E.7*7F.8*8G.9*9");
paochuyichang(xxxxxx);
string[]jieshou=jieshoufanghuizifuchang();
if("A"==jieshou[1]||"B"==jieshou[1]||"C"==jieshou[1]||"D"==jieshou[1]||"E"==jieshou[1]||"F"==jieshou[1]||"G"==jieshou[1]||"a"==jieshou[1]||"b"==jieshou[1]||"c"==jieshou[1]||"d"==jieshou[1]||"e"==jieshou[1]||"f"==jieshou[1]||"g"==jieshou[1])
{
switch(jieshou[0])
{
case"A":
xxxf=0;break;
case"B":
xxxf=1;break;
case"C":
xxxf=2;break;
case"D":
xxxf=3;break;
case"E":
xxxf=4;break;
case"F":
xxxf=5;break;
case"G":
xxxf=6;break;
}
break;
}
else
{
Console.Clear();
xxxxxx=true;
continue;
}
}
if(tongjishuzu[xxxf]==0)
{
Console.WriteLine("您所玩游戏次数为零,没有任何排行!
");
}
else
{
Console.Clear();
Console.WriteLine("{0}*{1}排行榜为:
",xxxf+3,xxxf+3);
inttemp=tongjishuzu[xxxf];
if(temp>10)
{
temp=10;
}
for(inti=0;i{
Console.WriteLine("No.{0}:
\t\t{1}",i+1,paixu[xxxf,i]);
}
}
Console.WriteLine("请按任意键返回!
");
ConsoleKeyInfoch=Console.ReadKey(true);//定义一个从键盘接受字符的变量
Console.Clear();
returnfalse;
}
///
///输出游戏提示玩法
///
///
publicstaticbooldes()
{
Console.Write("\t\t本游戏为数字拼图1.1版本,在w,a,s,d基础\n\t上增加方向键控制数字板移动\n\n\t界面仍然很简陋,仅有控制台,但已很接近图形界面\n\n\t其中数字为可移动板,空格为可移动位置\n\n\t按任意键返回...");
ConsoleKeyInfoch=Console.ReadKey(true);//定义一个从键盘接受字符的变量
Console.Clear();
returnfalse;
}
///
///产生随机数组
///
///
publicstaticvoidcankaoshuzu(intcd)//用于产生随机数组
{
int[]num=newint[cd*cd];
int[]newNum=newint[cd*cd];//定义一个二维数组
inti,j,r=cd*cd-1,k=0;
intn;
inttmp;
Randomrand=newRandom();
for(i=0;i{
num[i]=i;
}
///这个算法只需要循环你的数范围的次数而已
for(i=0;i{
n=rand.Next(0,r);//随机产生一个0~cd*cd之间的数,r的初始值是cd
newNum[i]=num[n];//把产生的随机数当成num的下标赋给newNum数组
tmp=num[n];//然后把num[n]和它最后一个数交换(num[r]),这是避免重复
num[n]=num[r];
num[r]=tmp;
r--;//自减,下次产生的随机数就可以从0到8了,
}
intx=1;//给出顺序值参考数组值变量
for(intix=0;ix{
for(intixx=0;ixx{
ss[ix,ixx]=x;
x++;
}
}
for(i=0;i<=cd-1;i++)
{
for(j=0;j<=cd-1;j++)
{
sss[i,j]=newNum[k];
k=k+1;
}
}
}
///
///用来输出参考数组和移动之后的数组排列
///
///
publicstaticvoidprint(intcd)//用来输出参考数组和移动之后的数组排列
{
for(inti=0;i<=cd-1;i++)//输出移动数组
{
for(intj=0;j<=cd-1;j++)
{
if(sss[i,j]!
=0)
{
Console.Write("{0,-4}",sss[i,j]);//指定字符串宽带度,并输出。
}
else
{
x1=i;
y1=j;
charx='';
Console.Write("{0,-4}",x);//指定字符串宽带度,并输出。
}
}
Console.Write("\t");
for(intjx=0;jx<=cd-1;jx++)//输出参考数组数组
{
if(ss[i,jx]!
=cd*cd)
Console.Write("{0,-4}",ss[i,jx]);//指定字符串宽带度,并输出。
else
{
charxxxxxx='';
Console.Write("{0,-4}",xxxxxx);
}
}
Console.Write("\n");
}
}
///
///判断指令是否正确,否则抛出异常
///
///
publicstaticvoidpaochuyichang(boolpangduang)//用来判断输入指令错误抛出异常
{
if(pangduang)
{
Console.WriteLine("您输入指令有误请重新输入:
");
}
}
///
///返回字符串的字符
///
///
publicstaticstring[]jieshoufanghuizifuchang()//从控制台接受一个按键并将其转换成字符串返回
{
ConsoleKeyInfoch;//定义一个从键盘接受字符的变量
ch=Console.ReadKey(true);//从键盘接受后复制给变量,加上true可以使其输入键不在控制台上显示
string[]