游戲設(shè)計(jì)俄羅斯方塊實(shí)驗(yàn)報(bào)告_第1頁
游戲設(shè)計(jì)俄羅斯方塊實(shí)驗(yàn)報(bào)告_第2頁
游戲設(shè)計(jì)俄羅斯方塊實(shí)驗(yàn)報(bào)告_第3頁
游戲設(shè)計(jì)俄羅斯方塊實(shí)驗(yàn)報(bào)告_第4頁
游戲設(shè)計(jì)俄羅斯方塊實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

江蘇省惠山中等專業(yè)學(xué)校實(shí)驗(yàn)報(bào)告課程名稱:C#程序設(shè)計(jì)實(shí)驗(yàn)名稱:游戲設(shè)計(jì):俄羅斯方塊班級(jí):G1241姓名:鮑順亮日期:2014.6指導(dǎo)教師:衛(wèi)洛斌成績實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)?zāi)康模憾砹_斯方塊是一個(gè)經(jīng)典的游戲,要完成這個(gè)項(xiàng)目需要設(shè)計(jì)的面也十分廣。通過完成這個(gè)項(xiàng)目可以了解自己的知識(shí)掌握程度以及對(duì)知識(shí)點(diǎn)的靈活運(yùn)用程度,并且能讓我們充分了解軟件開發(fā)的具體流程。對(duì)在校生來說,這是一個(gè)讓我們?nèi)跁?huì)貫通的好機(jī)會(huì),也是為以后的程序?qū)W習(xí)打好了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。實(shí)驗(yàn)相關(guān)理論:C#程序設(shè)計(jì)、窗體程序設(shè)計(jì)、多線程、鎖、數(shù)據(jù)讀寫。實(shí)驗(yàn)設(shè)備和環(huán)境:軟件環(huán)境:Windowsserver2008操作系統(tǒng):VisualStudio2008實(shí)驗(yàn)步驟:分析并設(shè)計(jì)軟件結(jié)構(gòu)。劃分軟件模塊。實(shí)現(xiàn)具體模塊。調(diào)試并修改軟件。優(yōu)化軟件。5.游戲流程展示:開始開始開始游戲進(jìn)入配置窗體,配置游戲信息。開始游戲進(jìn)入配置窗體,配置游戲信息。配置磚塊樣式配置磚塊樣式配置熱鍵、環(huán)境設(shè)置6.實(shí)驗(yàn)數(shù)據(jù)記錄及分析:6.實(shí)驗(yàn)數(shù)據(jù)記錄及分析:環(huán)境配置截圖窗體如下:在參數(shù)配置這個(gè)窗體中主要用到了熱鍵、以及數(shù)據(jù)的讀寫,這里使用的是XML文件的數(shù)據(jù)讀寫。將參數(shù)的配置信息寫入到XML文件中,需要使用的時(shí)候在從XML文件中讀取。首先編寫一個(gè)基本的XML文檔,用于存放默認(rèn)的設(shè)置用戶可以不經(jīng)過配置直接進(jìn)入游戲。示例代碼如下:<BlockSet><Type><ID>0000001100011000000000000</ID></Type><Key><DownKey>83</DownKey></Key><Surface><CoorWidth>15</CoorWidth></Surface></BlockSet>讀取XML文件數(shù)據(jù)的代碼如下://獲取默認(rèn)的xml文件XmlTextReaderreader;if(File.Exists("BlockSet.xml")) reader=newXmlTextReader("BlockSet.xml");//獲取用戶配置的XML文件//獲取用戶配置的XML文件Assemblyasm=Assembly.GetExecutingAssembly();//獲取組件Streamsm=asm.GetManifestResourceStream("project.BlockSet.xml");reader=newXmlTextReader(sm);//構(gòu)造流stringkey="";try{while(reader.Read()){if(reader.NodeType==XmlNodeType.Element){if(reader.Name=="ID"){key=reader.ReadElementString().Trim();info.Add(key,"");} } } }寫數(shù)據(jù)到XML文件中:XmlDocumentdoc=newXmlDocument();doc.LoadXml("<BlockSet></BlockSet>");XmlNoderoot=doc.SelectSingleNode("BlockSet");//寫磚塊信息for(inti=0;i<info.Length;i++){XmlElementxelType=doc.CreateElement("Type");XmlElementxelID=doc.CreateElement("ID"); }//快捷鍵XmlElementxelKey=doc.CreateElement("Key");XmlElementxelSurface=doc.CreateElement("Surface");XmlElementxelCoorWidth=doc.CreateElement("CoorWidth");xelCoorWidth.InnerText=_coorWidth.ToString();xelSurface.AppendChild(xelCoorWidth);//保存doc.Save("BlockSet.xml");

磚塊樣式配置截圖窗體如下:通過鼠標(biāo)單擊來實(shí)現(xiàn)選擇不同的色塊,用重繪來實(shí)現(xiàn)實(shí)時(shí)顯示配置的磚塊樣式。具體代碼如下:if(e.Button!=MouseButtons.Left)磚塊樣式配置截圖窗體如下:通過鼠標(biāo)單擊來實(shí)現(xiàn)選擇不同的色塊,用重繪來實(shí)現(xiàn)實(shí)時(shí)顯示配置的磚塊樣式。具體代碼如下:if(e.Button!=MouseButtons.Left)return;intx,y;x=e.X/31;//x軸y=e.Y/31;//y軸strArr[x,y]=!strArr[x,y];//10轉(zhuǎn)換boolb=strArr[x,y];Graphicsdraw=lblmodel.CreateGraphics();SolidBrushshuazi=newSolidBrush(b?blockColor:Color.Black);draw.FillRectangle(shuazi,31*x+1,31*y+1,30,30);//填充draw.Dispose();//釋放draw使用一個(gè)內(nèi)容為空的標(biāo)簽,用這個(gè)標(biāo)簽來顯示選擇的顏色并及時(shí)的刷新改變色塊的顏色。具體代碼如下://改變顏色ColorDialogColorDialog1=newColorDialog();ColorDialog1.ShowDialog();blockColor=ColorDialog1.Color;labelColor.BackColor=ColorDialog1.Color;lblmodel.Invalidate();//刷新色塊的顏色添加、修改、刪除、保存按鈕的實(shí)現(xiàn)。首先將已經(jīng)存在的信息寫入到listview中,然后通過選擇listview的項(xiàng)目來更改具體項(xiàng)目中的值,使用不同的按鈕來實(shí)現(xiàn)對(duì)listview中項(xiàng)目不同的操作,最后將相應(yīng)的數(shù)值裝換為對(duì)應(yīng)的顏色碼和編碼。需要注意的是,應(yīng)該判斷當(dāng)前色塊是否已經(jīng)存在。代碼如下://添加按鈕的代碼boolpd=false;//判斷圖案是否為空foreach(booliinstrArr){if(i){pd=true;break;}}if(!pd){MessageBox.Show("當(dāng)前圖案為空,請(qǐng)?jiān)诖翱谧髠?cè)區(qū)域繪制圖案!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);//如果為空則提示return;}//將邏輯值轉(zhuǎn)換為字符值,判斷哪些方塊被填充了StringBuilderstrb=newStringBuilder(25);foreach(booliinstrArr){strb.Append(i?"1":"0");}//賦值stringblockString=strb.ToString();//檢查是否有重復(fù)的圖案foreach(ListViewItemitinlsvBlockSet.Items){if(it.SubItems[0].Text==blockString){MessageBox.Show("當(dāng)前圖案已存在!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}}//添加信息到listviewListViewItemitem=newListViewItem();item=lsvBlockSet.Items.Add(blockString);item.SubItems.Add(Convert.ToString(blockColor.ToArgb()));//修改按鈕的代碼if(lsvBlockSet.SelectedItems.Count==0){MessageBox.Show("請(qǐng)選擇任意一個(gè)選項(xiàng)進(jìn)行修改","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}boolpd=false;//判斷圖案是否為空foreach(booliinstrArr){if(i){pd=true;break;}}//如果為空則提示if(!pd){MessageBox.Show("當(dāng)前圖案為空,請(qǐng)?jiān)诖翱谧髠?cè)區(qū)域繪制圖案!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}//將邏輯值轉(zhuǎn)換為字符值,判斷哪些方塊被填充了StringBuilderstrb=newStringBuilder(25);foreach(booliinstrArr){strb.Append(i?"1":"0");}stringblockString=strb.ToString();foreach(ListViewItemitinlsvBlockSet.Items){if(it.SubItems[0].Text==blockString){MessageBox.Show("當(dāng)前圖案已存在!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}}//檢查是否有重復(fù)的圖案lsvBlockSet.SelectedItems[0].SubItems[0].Text=strb.ToString();lsvBlockSet.SelectedItems[0].SubItems[1].Text=Convert.ToString(blockColor.ToArgb());//刪除按鈕的實(shí)現(xiàn)代碼如下:if(lsvBlockSet.SelectedItems.Count==0){MessageBox.Show("請(qǐng)選擇圖案!","信息",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}lsvBlockSet.Items.Remove(lsvBlockSet.SelectedItems[0]);btnClear.PerformClick();//刪除按鈕的實(shí)現(xiàn)for(inti=0;i<5;i++){for(intj=0;j<5;j++){strArr[i,j]=false;}}lblmodel.Invalidate();游戲界面截圖如下:分析:這里通過重繪,以及定時(shí)器來實(shí)現(xiàn)整個(gè)游戲的流程。給定時(shí)器設(shè)置一個(gè)時(shí)間間隔,每過多少秒就刷新一次,并同時(shí)實(shí)現(xiàn)磚塊的下落。因?yàn)闀?huì)涉及到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論