




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第基于C#的winform实现数字华容道游戏数字华容道游戏类似于拼图游戏,只需将数字1~15按顺序排好即可。该游戏逻辑比较简单,易于编程实现。
游戏界面如图:
编程准备:
所需控件:label用于显示时间,一个重新开始的button,一个panel容器来存放数字块(按钮),再加一个timer来计时及判断游戏是否结束。
主要代码:
variables类:
classvariables
{
publicstaticint[]a=newint[16]{1,2,3,4,5,6,7,8,9,10,11,12,13,
14,15,16};
publicstaticButton[,]buttons=newButton[4,4];
}
数组a用于存放数字,随机打乱顺序并分配给buttons。buttons即游戏中的方块。
Methods类:
classMethod
{
//数组打乱顺序
publicint[]NewSorting(int[]a)
{
Randomr=newRandom();
for(inti=0;ia.Length;i++)
{
inttemp=a[i];
intrandomindex=r.Next(0,a.Length);
a[i]=a[randomindex];
a[randomindex]=temp;
}
returna;
}
//向容器中添加16个按钮
publicvoidAddButtons(Panelpanel,Button[,]buttons)
{
//数组随机打乱顺序
int[]s=NewSorting(a);
//每个按钮的宽度及高度
intwidth=32;
intheight=32;
intx0=panel.Location.X;
inty0=panel.Location.Y;
for(inti=0;ibuttons.GetLength(0);i++)
for(intj=0;jbuttons.GetLength(1);j++)
{
Buttonbutt=newButton();
//设置按钮相关属性
butt.Size=newSystem.Drawing.Size(width,height);
butt.Location=newSystem.Drawing.Point(x0+(j+1)*width,y0+(i+1)*height);
butt.Visible=true;
//打乱顺序的数组分配给每个button
butt.Text=s[i*buttons.GetLength(0)+j].ToString();
if(butt.Text=="16")
{
butt.Hide();
}
variables.buttons[i,j]=butt;
//手动添加点击事件
butt.Click+=newEventHandler(butt_Click);
//按钮添加到容器
panel.Controls.Add(butt);
}
}
//自定义点击事件
publicvoidbutt_Click(Objectsender,EventArgse)
{
Buttonbutt=senderasButton;
Buttonbutt_16=Find_Button16();
//判断是否相邻,如果相邻则交换
if(Neighboor(butt,butt_16))
{
swap(butt,butt_16);
butt_16.Focus();
}
}
//找出隐藏的按钮即16所在的按钮
publicButtonFind_Button16()
{
for(inti=0;ibuttons.GetLength(0);i++)
for(intj=0;jbuttons.GetLength(1);j++)
{
if(buttons[i,j].Visible==false)
returnbuttons[i,j];
}
returnnull;
}
//判断两个按钮是否相邻
即两个按钮的坐标位置是否差一个宽度或者高度
publicboolNeighboor(Buttonbutt1,Buttonbutt2)
{
intx1=butt1.Location.X;
inty1=butt1.Location.Y;
intx2=butt2.Location.X;
inty2=butt2.Location.Y;
if(((x1==x2)(Math.Abs(y1-y2)==butt1.Height))||((y1==y2)(Math.Abs(x1-x2)==butt1.Width)))
{
returntrue;
}
returnfalse;
}
//交换两个按钮
交换text与visible
publicvoidswap(Buttonbutt1,Buttonbutt2)
{
strings=butt1.Text;
butt1.Text=butt2.Text;
butt2.Text=s;
boola=butt1.Visible;
butt1.Visible=butt2.Visible;
butt2.Visible=a;
}
//判断游戏是否完成
publicboolGameoverOrNot()
{
for(inti=0;ibuttons.GetLength(1);i++)
for(intj=0;jbuttons.GetLength(0);j++)
{
if(int.Parse(variables.buttons[i,j].Text)!=(i*buttons.GetLength(0)+j+1))
returnfalse;
}
returntrue;
}
}
游戏中的数字方块为Methods类中的AddButtons方法自动生成的,数字方块总共有16个,其中15个的visible属性为true,1个为false。
窗体界面代码:
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
Methodmethod=newMethod();
intcount;
privatevoidForm1_Load(objectsender,EventArgse)
{
method.AddButtons(panel1,buttons);
label2.Text="0"+"S";
//初始时间
timer1.Start();
//启动计时器
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
//默认100毫秒刷新一次
count+=1;
label2.Text=(count/10).ToString()+"S";
if(method.GameoverOrNot())
{
timer1.Stop();
MessageBox.Show("挑战成功!");
}
}
privatevoidButtonR_Click(objectsender,EventArgse)
{
timer1.Stop();
for(inti=0;ibuttons.GetLength(0);i++)
for(intj
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年榆林市公共交通总公司招聘(57人)笔试参考题库附带答案详解
- 纺织品设计师证书考试评估体系试题及答案
- 幼儿园聘用幼儿教师临时用工劳动合同书
- 家电营销策划合同协议书
- 中小学送餐合同协议书
- 合股协议书合同
- 个人保安员合同协议书
- 分钱合同协议书
- 合同协议书合同模板
- 合同协议书定金
- 医院产科培训课件:《地中海贫血的产前筛查》
- 烟花爆竹行业特种作业人员安全管理培训
- 8.1陶瓷器及宋代五大名窑(全国导游基础知识-第五版-)
- 可爱卡通立冬手抄报
- 婴幼儿体格测量胸围的测量
- 日本人的衣食住行课件
- 幼儿园故事课件:《胸有成竹》
- 锂离子电池内阻的影响因素
- 工程质量问题整改回执单
- 第9章-辅助技术与环境改造
- 民事非法强占土地上诉状模板
评论
0/150
提交评论