貪吃蛇游戲課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁(yè)
貪吃蛇游戲課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁(yè)
貪吃蛇游戲課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁(yè)
貪吃蛇游戲課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁(yè)
貪吃蛇游戲課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、遼 寧 科 技 大 學(xué)課程設(shè)計(jì)說(shuō)明書(shū)設(shè)計(jì)題目: 基于C#的貪吃蛇游戲 學(xué)院、系: 裝備制造學(xué)院 專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生姓名: 葉佳佳 指導(dǎo)教師: 丁寧 成 績(jī): 2015年 12月 12日目錄一、概述11、用C#實(shí)現(xiàn)該設(shè)計(jì)的方法12、貪吃蛇游戲說(shuō)明1二、實(shí)驗(yàn)?zāi)康募霸O(shè)計(jì)要求11、實(shí)驗(yàn)?zāi)康?2、實(shí)驗(yàn)要求2三、課程設(shè)計(jì)具體實(shí)現(xiàn)21、概要設(shè)計(jì)21.1、設(shè)計(jì)思想21.2、主模塊實(shí)現(xiàn)21.3、主函數(shù)流程圖42、詳細(xì)設(shè)計(jì)52.1、設(shè)計(jì)思想52.2、具體模塊實(shí)現(xiàn):5四、調(diào)試過(guò)程及運(yùn)行結(jié)果101、調(diào)試過(guò)程102、實(shí)驗(yàn)結(jié)果11五、實(shí)驗(yàn)心得12六、參考資料13七、附錄:源代碼13一、概述1、用C#實(shí)現(xiàn)該

2、設(shè)計(jì)的方法首先應(yīng)該了解設(shè)計(jì)要求,然后按照功能設(shè)計(jì)出實(shí)際模塊,每個(gè)模塊都要完成特定的功能,要實(shí)現(xiàn)模塊間的高內(nèi)聚,低耦合。設(shè)計(jì)模塊是一個(gè)相當(dāng)重要的環(huán)節(jié),模塊的數(shù)量不宜太多,也不宜太少,要是每個(gè)模塊都能比較簡(jiǎn)單的轉(zhuǎn)換成流程圖。模塊設(shè)計(jì)完成后,就該給每個(gè)模塊繪制流程圖。流程圖要盡可能的簡(jiǎn)單且容易理解,多使用中文,補(bǔ)一些過(guò)長(zhǎng)的代碼,增加理解難度。此外,流程圖應(yīng)容易轉(zhuǎn)換成代碼。根據(jù)流程圖編寫(xiě)好代碼后在WindowsXP操作系統(tǒng),VS.NET2008開(kāi)發(fā)環(huán)境下進(jìn)行運(yùn)行測(cè)試,檢查錯(cuò)誤,最終設(shè)計(jì)出可行的程序。2、貪吃蛇游戲說(shuō)明游戲操作要盡可能的簡(jiǎn)單,界面要盡可能的美觀。編寫(xiě)程序?qū)崿F(xiàn)貪吃蛇游戲,貪吃蛇游戲是一個(gè)深

3、受人們喜歡的游戲:一條蛇在密閉的圍墻內(nèi),在圍墻內(nèi)隨機(jī)出現(xiàn)一個(gè)食物,通過(guò)鍵盤(pán)上的四個(gè)光標(biāo)鍵控制蛇向上下左右四個(gè)方向移動(dòng),蛇頭撞到食物,則表示食物被吃掉,這時(shí)蛇的身體長(zhǎng)一節(jié),同時(shí)計(jì)10分;接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動(dòng)過(guò)程中,撞到墻壁、障礙物或身體交叉(蛇頭撞到自己的身體),則游戲結(jié)束。游戲結(jié)束時(shí)輸出相應(yīng)得分。具體要求有以下幾點(diǎn): (1)對(duì)系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確,符合課題要求,實(shí)現(xiàn)相應(yīng)功能;可以加以其他功能或修飾,使程序更加完善、合理;(2)系統(tǒng)設(shè)計(jì)要實(shí)用,采用模塊化程序設(shè)計(jì)方法,編程簡(jiǎn)練、可用,功能全面;(3)說(shuō)明書(shū)、流程圖要清楚;二、實(shí)驗(yàn)?zāi)康募霸O(shè)計(jì)要求1、

4、實(shí)驗(yàn)?zāi)康?NET課程設(shè)計(jì)是教學(xué)實(shí)踐環(huán)節(jié)中一項(xiàng)重要內(nèi)容,進(jìn)行此課程設(shè)計(jì)旨在掌握基礎(chǔ)知識(shí)的基礎(chǔ)上,進(jìn)一步加深對(duì)VC#.NET技術(shù)的理解和掌握;提高和加強(qiáng)學(xué)生的計(jì)算機(jī)應(yīng)用及軟件開(kāi)發(fā)能力,使學(xué)生具備初級(jí)程序員的基本素質(zhì);培養(yǎng)學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題、查閱資料以及自學(xué)能力,以適應(yīng)信息管理行業(yè)日新月異的發(fā)展形勢(shì);本次課程設(shè)計(jì)是以學(xué)生獨(dú)立思考解決問(wèn)題為主,教師指導(dǎo)為輔,結(jié)合上機(jī)操作,完成指定的任務(wù),做出設(shè)計(jì)報(bào)告。2、實(shí)驗(yàn)要求利用Microsoft Visual Studio 2008 平臺(tái)設(shè)計(jì)制作一個(gè)貪吃蛇小游戲,要求如下:(1) 能夠記錄游戲成績(jī)(計(jì)分按照每吃一塊食物增加20累計(jì))(2) 可以暫停/繼續(xù)

5、游戲(通過(guò)按鈕實(shí)現(xiàn))(3) 蛇的身體能夠隨著吃到食物的數(shù)量逐漸變長(zhǎng)(4) 可以自己添加障礙物,要求設(shè)計(jì)成紅色墻壁(5) 積分每增加50分要求蛇相應(yīng)的加快速度(6) 要求在游戲的過(guò)程中添加背景音樂(lè)和隨機(jī)炸彈三、課程設(shè)計(jì)具體實(shí)現(xiàn)1、概要設(shè)計(jì)1.1、設(shè)計(jì)思想程序關(guān)鍵在于表示蛇的圖形及蛇的移動(dòng)。用一個(gè)小矩形快表示蛇的一節(jié)身體,身體每長(zhǎng)一節(jié),增加一個(gè)矩形塊,蛇頭(綠色)用三節(jié)表示。移動(dòng)時(shí)必須從蛇頭開(kāi)始,所以蛇不可以向相反的方向移動(dòng),如果不按任意鍵,蛇自行在當(dāng)前方向右前移,但按下有效方向鍵后,蛇頭朝該方向移動(dòng),一步移動(dòng)一節(jié)身體,所以按下有效方向鍵后,先確定蛇頭的位置,而后蛇的身體隨蛇頭移動(dòng),圖形的實(shí)現(xiàn)是從

6、蛇頭新位置開(kāi)始畫(huà)出蛇,這時(shí),由于未清屏的原因,原來(lái)的蛇的位置和新的位置差一個(gè)單位,所以看起來(lái)蛇多一節(jié)身體,所以將蛇的最后節(jié)用背景色覆蓋。食物的出現(xiàn)與消失也是畫(huà)矩形塊和覆蓋矩形塊。為了便于理解,定義兩個(gè)結(jié)構(gòu)體:食物與蛇,同時(shí)還定義了一個(gè)隨意的墻。然后利用圖形驅(qū)動(dòng),,制作美觀的游戲界面,通過(guò)隨機(jī)函數(shù)產(chǎn)生隨機(jī)的食物,控制游戲過(guò)程食物的出現(xiàn)。定義鍵盤(pán)操作控制游戲過(guò)程蛇的移動(dòng)方向,畫(huà)出邊界,并判斷游戲是否結(jié)束,統(tǒng)計(jì)游戲過(guò)程中蛇吃的食物數(shù)量,計(jì)算并輸出游戲成績(jī)。1.2、主模塊實(shí)現(xiàn)1snake的設(shè)計(jì)模塊 2. Form 的設(shè)計(jì)模塊1.3、主函數(shù)流程圖是開(kāi)始游戲蛇開(kāi)始移動(dòng)根據(jù)鍵盤(pán)控制蛇移動(dòng)方向判斷蛇頭和食物的

7、坐標(biāo)是否重合隨機(jī)生成下一個(gè)食物判斷蛇頭和自身及墻、炸彈是否重合游戲結(jié)束否否是是暫停是否繼續(xù)否2、詳細(xì)設(shè)計(jì)2.1、設(shè)計(jì)思想 首先進(jìn)入VS2008打開(kāi)文件新建一個(gè)項(xiàng)目,點(diǎn)擊windows窗體應(yīng)用程序,名字設(shè)為Snakes 。進(jìn)入Form的設(shè)計(jì)界面,首先我們都知道游戲最基本的功能有開(kāi)始,暫停,繼續(xù),退出,所以首先要先加4個(gè)button鍵來(lái)控制游戲,再加一個(gè)TextBox文本框來(lái)顯示成績(jī)。在窗體中加入Panel來(lái)實(shí)現(xiàn)貪吃蛇的運(yùn)動(dòng)空間,設(shè)置有一個(gè)游戲的界面運(yùn)動(dòng)空間。之后就要定義一個(gè)sakes類,來(lái)實(shí)現(xiàn)蛇的一些屬性與方法,首先明白這個(gè)游戲?qū)崿F(xiàn)的是貪吃蛇吃食物,所以還需要定義食物,食物被吃后要實(shí)現(xiàn)食物的重建

8、。玩游戲時(shí)還需要有控制鍵的設(shè)置,這一模塊可以選用Switch語(yǔ)句來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)基本的功能后要注意怎樣的情況會(huì)造成蛇的死亡,可以想到的有越界線,咬到自己都會(huì)死亡。隨著思想的成熟,覺(jué)得只吃食物好像太簡(jiǎn)單,所以在這個(gè)貪吃蛇游戲的基礎(chǔ)上又設(shè)置了一些障礙,加了幾堵墻,還設(shè)置了隨機(jī)的炸彈,這樣游戲就更有意思了,加上以前玩俄羅斯方塊的一些感覺(jué),還設(shè)置了游戲的不斷加速的模塊。2.2、具體模塊實(shí)現(xiàn):1、snake 屬性定義2、Form 屬性定義 3、創(chuàng)建蛇的模塊創(chuàng)建蛇的模塊和創(chuàng)建障礙物的思路想法是一致的,都是通過(guò)label實(shí)現(xiàn):4、創(chuàng)建食物模塊創(chuàng)建食物模塊和創(chuàng)建隨機(jī)炸彈思路是一致的,都是在一定范圍內(nèi)隨機(jī)出現(xiàn)。通過(guò)

9、坐標(biāo)點(diǎn)的方法來(lái)實(shí)現(xiàn)食物,食物是隨機(jī)出現(xiàn)的,而且一旦被吃掉就會(huì)立刻創(chuàng)建新的食物。而且還需要判斷食物出現(xiàn)的地方時(shí)是否與墻壁重合。5、蛇吃食物的模塊通過(guò)Timer 控件來(lái)設(shè)置時(shí)間,吃到食物之后身體增長(zhǎng),蛇的身體顏色是三色交替出現(xiàn),每吃到一個(gè)食物積分加10,身體加長(zhǎng)對(duì)應(yīng)增長(zhǎng)。而且還要判斷是否需要更改蛇的運(yùn)行速度。7、是否撞到自己模塊當(dāng)貪吃蛇自己碰到自己的身體時(shí)游戲結(jié)束8、游戲結(jié)束模塊9、初始化panel10、初始化Form并添加背景音樂(lè)(Kalimba.wav)11、控制蛇的運(yùn)動(dòng)方向四、調(diào)試過(guò)程及運(yùn)行結(jié)果1、調(diào)試過(guò)程(1)在實(shí)現(xiàn)撞障礙物的過(guò)程中,剛剛開(kāi)始的時(shí)候墻不能起作用,貪吃蛇總是能穿過(guò)障礙物,后來(lái)

10、才發(fā)現(xiàn)時(shí)障礙物的設(shè)置范圍出現(xiàn)了錯(cuò)誤。經(jīng)過(guò)不停的嘗試與計(jì)算才算出正確的范圍。(2)在實(shí)現(xiàn)固定墻的過(guò)程中是通過(guò)使用Label來(lái)實(shí)現(xiàn)的,跟創(chuàng)建貪吃蛇的思想是一樣的,但是在運(yùn)行過(guò)程中剛剛開(kāi)始的時(shí)候不出現(xiàn)障礙物,后來(lái)在老師的幫助下發(fā)現(xiàn)原來(lái)少一句話,需要在NowStar()函數(shù)中增加障礙物的顯示for (int i = 0; i <sk.Wall.Count; i+) this.panel1.Controls.Add(Label)sk.Walli);(3)在玩游戲的過(guò)程中發(fā)現(xiàn)食物會(huì)與墻壁還有炸彈重合的情況,然后通過(guò)分析原因,這與構(gòu)造食物時(shí)判斷食物與身體是否接觸的道理是一樣的,這里需要加一個(gè)循環(huán)語(yǔ)句來(lái)

11、判斷,如果不是墻的話才在這里創(chuàng)造食物。(4)在創(chuàng)造炸彈的實(shí)現(xiàn)過(guò)程中,總是在炸彈的右半邊任何位置都爆炸,通過(guò)一步一步的調(diào)試檢查是在判斷語(yǔ)句時(shí)右側(cè)的范圍太大,導(dǎo)致有半側(cè)沒(méi)有炸彈也爆炸。通過(guò)調(diào)試找到正確的范圍。2、實(shí)驗(yàn)結(jié)果(1) 游戲運(yùn)行主界面(2)幫助界面(3)結(jié)束界面 五、實(shí)驗(yàn)心得這次的課設(shè)對(duì)我來(lái)說(shuō)有很大的收獲,我學(xué)到了許多課本上沒(méi)有學(xué)到的知識(shí),這次我將將課本上的理論知識(shí)充分的轉(zhuǎn)化成了一些實(shí)用技能。通過(guò)這次自己制作的軟件,豐富了自己的實(shí)踐技能,擴(kuò)展課本專業(yè)的知識(shí)面。在這次設(shè)計(jì)的同時(shí),我又從中學(xué)到了許多東西。但由于我對(duì)這樣的軟件開(kāi)發(fā)還只是一個(gè)開(kāi)始,了解的不多,這其中或許還有很多的不足,有些模塊做的

12、不是很好,界面的設(shè)計(jì)及整體的布局還是比較簡(jiǎn)單。此外,在這一次的課程設(shè)計(jì)過(guò)程中,我上網(wǎng)查閱了大量的資料,對(duì)C#有了更深的理解,對(duì)于軟件工程這些輔助性的教材也鞏固了不少,為我這次的課設(shè)提供了很大的幫助,鍛煉了我的能力。更重要的是,它還讓我認(rèn)識(shí)到了自己的不足之處,在編程方面,我還是比較欠缺,以后的路任重道遠(yuǎn),我需要的事不斷地豐富自己,充實(shí)自己,這樣才能在程序設(shè)計(jì)方面有所收獲。 最后感謝老師在這次課程設(shè)計(jì)中對(duì)我們的悉心教導(dǎo),通過(guò)這次學(xué)習(xí),讓我們掌握了很多有關(guān)C#.NET的應(yīng)用知識(shí)。六、參考資料1 陳俊榮. ASP與網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)M. 北京:中國(guó)鐵道出版社,2005.2 張繡蘭. ASP網(wǎng)站建設(shè)實(shí)錄M.

13、 北京:北京希望電子出版社. 2008.3 李華. DreamWeaver8網(wǎng)頁(yè)設(shè)計(jì)程序教程M. 北京:清華大學(xué)出版社. 2004.4 江開(kāi)耀. 軟件工程M. 西安:西安電子科技大學(xué)出版社.七、附錄:源代碼snake源代碼如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Collections;using System.Drawing;using System.ComponentModel;usi

14、ng System.Data;namespace Snake class snake public Point food_p;/定義食物的位置 private Label food; /定義食物 public Label Food /食物屬性 get return food; set food = value; private ArrayList body = new ArrayList(); /定義食物定義食物鏈表 public ArrayList Body /食物鏈表屬性 get return body; set body = value; /定義障礙物 上下左右各面墻 蛇撞墻即死 pri

15、vate ArrayList wall = new ArrayList(); public ArrayList Wall get return wall; set wall = value; private ArrayList wall1 = new ArrayList(); public ArrayList Wall1 get return wall1; set wall1 = value; private ArrayList wall2 = new ArrayList(); public ArrayList Wall2 get return wall2; set wall2 = value

16、; private ArrayList wall3 = new ArrayList(); public ArrayList Wall3 get return wall3; set wall3 = value; public void CreateSnake()/使用Label進(jìn)行創(chuàng)建一個(gè)蛇 int left = 20; Label lb; for (int i = 0; i < 2; i+) lb = new Label(); lb.Name = "label" + i.ToString(); lb.BackColor = Color.Green; lb.Width

17、= 10; lb.Height = 10; lb.Top = 0; lb.Left = left; body.Add(lb); left -= 10; public void CreateWall()/使用Label進(jìn)行創(chuàng)建障礙物 int left = 200; Label lb0; for (int i = 0; i < 10; i+ ) lb0 = new Label(); lb0.Name = "label" + i.ToString(); lb0.BackColor = Color.Red; lb0.Width = 10; lb0.Height = 10; l

18、b0.Top = 50; lb0.Left = left; wall.Add(lb0); left -= 10; public void CreateWall1() int left = 200; Label lb1; for (int i = 0; i < 10; i+) lb1 = new Label(); lb1.Name = "label" + i.ToString(); lb1.BackColor = Color.Red; lb1.Width = 10; lb1.Height = 10; lb1.Top = 310; lb1.Left = left; wal

19、l1.Add(lb1); left -= 10; public void CreateWall2() int top = 200; Label lb2; for (int i = 0; i < 10; i+) lb2 = new Label(); lb2.Name = "label" + i.ToString(); lb2.BackColor = Color.Red; lb2.Width = 10; lb2.Height = 10; lb2.Left = 50; lb2.Top = top; wall2.Add(lb2); top -= 10; public void

20、 CreateWall3() int top = 200; Label lb3; for (int i = 0; i < 10; i+) lb3 = new Label(); lb3.Name = "label" + i.ToString(); lb3.BackColor = Color.Red; lb3.Width = 10; lb3.Height = 10; lb3.Left = 260; lb3.Top = top; wall3.Add(lb3); top -= 10; /創(chuàng)建食物 public void CreateFood() Random rand = n

21、ew Random(); food_p.X = rand.Next(36) * 10;/限定食物物所能出現(xiàn)的橫坐標(biāo) food_p.Y = rand.Next(36) * 10;/限定食物物所能出現(xiàn)的橫坐標(biāo) for (int i = 0; i < body.Count; i+) if (food_p.Y = (Label)bodyi).Top && food_p.X = (Label)bodyi).Left) this.CreateFood(); break; /判斷食物和所見(jiàn)障礙物是否重合 for (int i = 0; i < wall.Count; i+) if

22、 (food_p.Y = (Label)this.Walli).Top && food_p.X = (Label)this.Walli).Left) this.CreateFood(); else if (food_p.Y = (Label)this.Wall1i).Top && food_p.X = (Label)this.Wall1i).Left) this.CreateFood(); else if (food_p.X = (Label)this.Wall2i).Left && food_p.Y = (Label)this.Wall2i).

23、Top) this.CreateFood(); else if (food_p.X = (Label)this.Wall3i).Left && food_p.Y = (Label)this.Wall3i).Top) this.CreateFood(); food = new Label(); food.Width = 10; food.Height = 10; food.Top = food_p.Y; food.Left = food_p.X; /加載食物圖片 food.Image = Snake.Properties.Resources.food; /蛇吃食物 通過(guò)timer

24、進(jìn)行速度的設(shè)置 public Panel EatFood(Panel panel1, Timer timer1, TextBox textBox1, TextBox textBox2) if (Label)body0).Top = food_p.Y && (Label)body0).Left = food_p.X) panel1 = this.DeFood(panel1); Label lb = new Label();/增加蛇身 lb.Name = "label" + body.Count.ToString(); int i=body.Count%3; i

25、f(i=0) lb.BackColor = Color.DimGray; else if(i=1) lb.BackColor = Color.DeepPink; else lb.BackColor = Color.DeepSkyBlue; lb.Width = 10; lb.Height = 10; lb.Top = (Label)bodybody.Count - 1).Top; lb.Left = (Label)bodybody.Count - 1).Left; body.Add(lb); textBox1.Text = Convert.ToString(Convert.ToInt32(te

26、xtBox1.Text) + 10); textBox2.Text = textBox1.Text; if (Convert.ToInt32(textBox2.Text) < Convert.ToInt32(textBox1.Text) textBox2.Text = textBox1.Text; /修改速度 if (textBox1.Text = "50") timer1.Interval = 150; else if (textBox1.Text = "100") timer1.Interval = 100; else if (textBox1

27、.Text = "150") timer1.Interval = 80; else if (textBox1.Text = "200") timer1.Interval = 50; else if (textBox1.Text = "250") timer1.Interval = 20; return panel1; /吃過(guò)后銷毀再創(chuàng)建食物 public Panel DeFood(Panel panel1) panel1.Controls.Remove(food); this.CreateFood(); panel1.Controls

28、.Add(food); return panel1; /Form 源代碼:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Collections;using System.Media;namespace Snake public partial class Form1

29、: Form public Form1() InitializeComponent(); private snake sk = new snake(); /構(gòu)造一個(gè)蛇的對(duì)象 private int dir = 3; /初始時(shí)要運(yùn)動(dòng)的方向(向右) private Point bomb_b; /定義炸彈 private Label bomb; public void CreatBomb()/創(chuàng)建炸彈 Random rand = new Random(); bomb_b.X = rand.Next(20) * 10; bomb_b.Y = rand.Next(20) * 10; bomb = new

30、 Label(); bomb.Width = 10; bomb.Height = 10; bomb.Top = bomb_b.Y; bomb.Left = bomb_b.X; bomb.Image = Snake.Properties.Resources.b2; /判斷隨機(jī)炸彈是否與隨機(jī)食物重合 if (bomb_b.X = sk.food_p.X && bomb_b.Y = sk.food_p.Y) CreatBomb(); /清除炸彈 public Panel DeBomb(Panel panel1) panel1.Controls.Remove(bomb); return

31、 panel1; private int diring = -1; /正在運(yùn)動(dòng)的方向 private void button1_Click(object sender, EventArgs e) /開(kāi)始 textBox1.Text = "0" button3.Enabled = true; timer1.Start(); panel1 = sk.DeFood(panel1); this.CreatBomb(); panel1.Controls.Add(bomb); private void button2_Click(object sender, EventArgs e)

32、/暫停 timer1.Stop(); private void button3_Click(object sender, EventArgs e) /新游戲 textBox1.Text = "0" timer1.Interval = 200; button3.Enabled = false; panel1.Controls.Clear(); sk.Body.Clear(); sk.CreateSnake(); NowStart(); dir = 3; diring = -1; timer1.Stop(); private void NowStart()/初始化 /再pane

33、l中添加蛇的身體 for (int i = 0; i < sk.Body.Count; i+) this.panel1.Controls.Add(Label)sk.Bodyi); /再panel中添加障礙物 for (int i = 0; i < sk.Wall.Count; i+) this.panel1.Controls.Add(Label)sk.Walli); for (int i = 0; i < sk.Wall1.Count; i+) this.panel1.Controls.Add(Label)sk.Wall1i); for (int i = 0; i <

34、sk.Wall2.Count; i+) this.panel1.Controls.Add(Label)sk.Wall2i); for (int i = 0; i < sk.Wall3.Count; i+) this.panel1.Controls.Add(Label)sk.Wall3i); private void GameOver() /結(jié)束游戲 panel1.Controls.Remove(sk.Food); PictureBox over = new PictureBox(); over.Image = Snake.Properties.Resources.the_end; ove

35、r.Width = 360; over.Height = 360; this.panel1.Controls.Add(over); timer1.Stop(); panel1 = this.DeBomb(panel1); MessageBox.Show("你本次的得分為:" + textBox1.Text+",歷史最高分為:"+textBox2.Text); private void panel1_Paint(object sender, PaintEventArgs e) /初始化panel NowStart(); private void Form1

36、_Load(object sender, EventArgs e) /初始化Form創(chuàng)建蛇的對(duì)象 sk.CreateSnake(); sk.CreateWall(); sk.CreateWall1(); sk.CreateWall2(); sk.CreateWall3(); this.CreatBomb(); SoundPlayer music = new SoundPlayer("H:Kalimba.wav"); music.Play(); /this.Draws(); private void HitSelf() /撞擊自己 for (int i = 1; i <

37、 sk.Body.Count; i+) if (Label)sk.Body0).Top = (Label)sk.Bodyi).Top && (Label)sk.Body0).Left = (Label)sk.Bodyi).Left) GameOver(); break; public void move()/控制蛇的前進(jìn) for (int i = sk.Body.Count - 1; i > 0; i-) /判斷是否撞墻(所建的障礙物) if (Label)sk.Body0).Top = (Label)sk.Walli).Top && (Label)sk.

38、Walli).Left - 90 <= (Label)sk.Body0).Left && (Label)sk.Body0).Left <= (Label)sk.Walli).Left + 20) GameOver(); break; else if (Label)sk.Body0).Top = (Label)sk.Wall1i).Top && (Label)sk.Wall1i).Left - 90 <= (Label)sk.Body0).Left && (Label)sk.Body0).Left <= (Label)sk.

39、Wall1i).Left + 20) GameOver(); break; else if (Label)sk.Body0).Left = (Label)sk.Wall2i).Left && (Label)sk.Wall2i).Top -90 <= (Label)sk.Body0).Top && (Label)sk.Body0).Top<= (Label)sk.Wall2i).Top + 20) GameOver(); break; else if (Label)sk.Body0).Left = (Label)sk.Wall3i).Left && (Label)sk.Wall3i

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論