




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第基于C#的winform實(shí)現(xiàn)數(shù)字華容道游戲數(shù)字華容道游戲類似于拼圖游戲,只需將數(shù)字1~15按順序排好即可。該游戲邏輯比較簡(jiǎn)單,易于編程實(shí)現(xiàn)。
游戲界面如圖:
編程準(zhǔn)備:
所需控件:label用于顯示時(shí)間,一個(gè)重新開(kāi)始的button,一個(gè)panel容器來(lái)存放數(shù)字塊(按鈕),再加一個(gè)timer來(lái)計(jì)時(shí)及判斷游戲是否結(jié)束。
主要代碼:
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];
}
數(shù)組a用于存放數(shù)字,隨機(jī)打亂順序并分配給buttons。buttons即游戲中的方塊。
Methods類:
classMethod
{
//數(shù)組打亂順序
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個(gè)按鈕
publicvoidAddButtons(Panelpanel,Button[,]buttons)
{
//數(shù)組隨機(jī)打亂順序
int[]s=NewSorting(a);
//每個(gè)按鈕的寬度及高度
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();
//設(shè)置按鈕相關(guān)屬性
butt.Size=newSystem.Drawing.Size(width,height);
butt.Location=newSystem.Drawing.Point(x0+(j+1)*width,y0+(i+1)*height);
butt.Visible=true;
//打亂順序的數(shù)組分配給每個(gè)button
butt.Text=s[i*buttons.GetLength(0)+j].ToString();
if(butt.Text=="16")
{
butt.Hide();
}
variables.buttons[i,j]=butt;
//手動(dòng)添加點(diǎn)擊事件
butt.Click+=newEventHandler(butt_Click);
//按鈕添加到容器
panel.Controls.Add(butt);
}
}
//自定義點(diǎn)擊事件
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;
}
//判斷兩個(gè)按鈕是否相鄰
即兩個(gè)按鈕的坐標(biāo)位置是否差一個(gè)寬度或者高度
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;
}
//交換兩個(gè)按鈕
交換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;
}
}
游戲中的數(shù)字方塊為Methods類中的AddButtons方法自動(dòng)生成的,數(shù)字方塊總共有16個(gè),其中15個(gè)的visible屬性為true,1個(gè)為false。
窗體界面代碼:
publicpartialclassForm1:Form
{
publicForm1()
{
InitializeComponent();
}
Methodmethod=newMethod();
intcount;
privatevoidForm1_Load(objectsender,EventArgse)
{
method.AddButtons(panel1,buttons);
label2.Text="0"+"S";
//初始時(shí)間
timer1.Start();
//啟動(dòng)計(jì)時(shí)器
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
//默認(rèn)100毫秒刷新一次
count+=1;
label2.Text=(count/10).ToString()+"S";
if(method.GameoverOrNot())
{
timer1.Stop();
MessageBox.Show("挑戰(zhàn)成功!");
}
}
privatevoidButtonR_Click(objectsender,EventArgse)
{
timer1.Stop();
for(inti=0;ibuttons.GetLength(0);i++)
for(intj
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)前一班元旦活動(dòng)方案
- 婚慶珠寶活動(dòng)方案
- 姜堰活動(dòng)策劃方案
- 女士之夜活動(dòng)策劃方案
- 孝道文化研學(xué)活動(dòng)方案
- 學(xué)校建校活動(dòng)方案
- 孝昌縣實(shí)踐活動(dòng)方案
- 獎(jiǎng)勵(lì)刮刮卡活動(dòng)方案
- 如何寫公司策劃方案
- 好玩營(yíng)銷活動(dòng)方案
- 航行通告教學(xué)課件
- 2023年護(hù)理考試-外科護(hù)理(副高)歷年考試真題試卷摘選答案
- 2022年廣東高考成績(jī)一分一段表重磅出爐
- 新版病人搬運(yùn)(輪椅)操作評(píng)分標(biāo)準(zhǔn)
- 重癥監(jiān)護(hù)ICU護(hù)理實(shí)習(xí)生出科考試試題及答案
- GB/Z 22074-2008塑料外殼式斷路器可靠性試驗(yàn)方法
- GB/T 32360-2015超濾膜測(cè)試方法
- 中藥學(xué)全套(完整版)課件
- 工程施工停止點(diǎn)檢查表
- 國(guó)開(kāi)專科《外國(guó)文學(xué)》十年期末考試題庫(kù)及答案
- 《滅火器維修》GA95-2015(全文)
評(píng)論
0/150
提交評(píng)論