C贪吃蛇游戏课程设计试验报告_第1页
C贪吃蛇游戏课程设计试验报告_第2页
C贪吃蛇游戏课程设计试验报告_第3页
C贪吃蛇游戏课程设计试验报告_第4页
C贪吃蛇游戏课程设计试验报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、概述 11、用C#实现该设计的方法 12、贪吃蛇游戏说明 1二、实验目的及设计要求 11 、实验目的 12、实验要求 2三、课程设计具体实现 21 、概要设计 21.1、设计思想 2.1.2、主模块实现 2.1.3、主函数流程图 4.2、详细设计 52.1、设计思想 5.2.2、具体模块实现: 5.四、调试过程及运行结果 101 、调试过程 102、实验结果 1 1五、实验心得 12六、参考资料 13七、附录:源代码 13.NET课程设计'、概述1、用C#实现该设计的方法首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能, 要实现模块间的高内聚,低耦合

2、。设计模块是一个相当重要的环节,模块的数量不宜太多, 也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模 块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加 理解难度。此外,流程图应容易转换成代码。根据流程图编写好代码后在 WindowsXP操作系统,VS.NET2008开发环境下进行运行测 试,检查错误,最终设计出可行的程序。2、贪吃蛇游戏说明游戏操作要尽可能的简单,界面要尽可能的美观。编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围 墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右

3、四个方向移 动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计 10分;接着又出现食 物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的 身体),则游戏结束。游戏结束时输出相应得分。具体要求有以下几点:(1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可 以加以其他功能或修饰,使程序更加完善、合理;(2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;(3)说明书、流程图要清楚;二、实验目的及设计要求1、实验目的.NET课程设计是教学实践环节中一项重要内容, 进行此课程设计旨在掌握基础知识的基 础上,进一步加

4、深对 VC#.NET技术的理解和掌握;提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势;本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指 定的任务,做出设计报告。2、实验要求利用Microsoft Visual Studio 2008平台设计制作一个贪吃蛇小游戏,要求如下:(1) 能够记录游戏成绩(计分按照每吃一块食物增加20累计)(2)可以暂停/继续游戏(通过按钮实现)(3)蛇的身体能够随着吃到食物的数量逐渐变长(4)可以自己添加障碍物,要求设计成

5、红色墙壁(5)积分每增加50分要求蛇相应的加快速度(6)要求在游戏的过程中添加背景音乐和随机炸弹三、课程设计具体实现1、概要设计1.1、设计思想程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长 一节,增加一个矩形块,蛇头(绿色)用三节表示。移动时必须从蛇头开始,所以蛇不可以 向相反的方向移动,如果不按任意键,蛇自行在当前方向右前移,但按下有效方向键后,蛇 头朝该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇 的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原 来的蛇的位置和新的位置差一个单位,所以看起来蛇多一

6、节身体,所以将蛇的最后节用背景 色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体: 食物与蛇,同时还定义了一个随意的墙。然后利用图形驱动,制作美观的游戏界面,通过随机函数产生随机的食物,控制游戏过程食物的出现。定义键盘操作控制游戏过程蛇的移动方 向,画出边界,并判断游戏是否结束,统计游戏过程中蛇吃的食物数量 ,计算并输出游戏成绩。1.2、主模块实现1. snake的设计模块"定义陣陽物 上下左右各一面墻 蛇H埴即死privat e ArrayL 1 st wall = new ArrayList (); public Ai:rayList 甲alljpr

7、ivat e ArrayList walll = new ArrayLisl(): public ArryLis Wallli,.*private ArrayLizt wall? = new ArriyList(): public ArrayLizt Vail2(7771private Arragiirt wall3 = nev ArrayList (): public ArrayList Wall3|. . . |/定文覧物private ArrayLisi public ArravLitbody = new ArrayLif: () ;/定义食物無吏Body /食物质表属性仁二"

8、使用Labell行创逢一个拢 public void Creat eSrtahe ()., . | /使用Label®行创逢陣碍物-public void public void public void public void "创建箕物Great eWall ()|Great eWalll 0 .Great eVall2()Creat eVallS (), T,public void Crest eFood()|. . . |"蛇吃官物通过t mer®行凍度的设置public Panetl EatFood(t'aziel panel 1, Ti

9、niE-r tlmerlj TezLBox textBox 1,/吃过后诸毁再创建食物public Panel DeFoadtPanel panel! )|. . . |TextBox textBox2)|. . .|2. Form的设计模块"创建炸弹public void GreatBomb"清楚炸弹()口public Piel DeBomb(Panel panel 1 )T7|private int di ring = -1:/7正在运动的方向"开始privat e void butt ortl Click (object senderj"暂僖_pr

10、ivat e void butt ori2 Click (object senderjprivate void buttort3 Click(object sender"初贻化Event Args g)|T , JEvent Arg: s e)|., . |Event Args &) |.,.privat e void NowStart |"结束游戏privat e void GaeOver (),., |77初贻化private void panell_Paint (object sendee FAintEtT-rLtAi;f/初始化Form创逢蛇的对象priva

11、t e void Forml_Load (object sender, Eve)t Ai 2S e)|, r, |"撞击自己private void HitSelf ()|r. J/控制蛇的前进public void move ()|h H . |/tuner控件具傣实现private void timer 1 I ick (object a ends Event Ar e)|L ,/惶制蛇的移动方向'protected override bool ProcessDisIogKey(Ky.- keyPata)T77"退岀pr ivat e void butt on4

12、_Click (object senderj Event Ar 胡,| "鮭续'ptivat e void button5_Click(object senderjArg5 e).,"帮他pr ivat e void butt on6_Click (object sender. Event Ar gs e) |. , J1.3、主函数流程图2、详细设计2.1、设计思想首先进入VS2008丁开文件新建一个项目,点击windows窗体应用程序,名字设为Snakes。 进入Form的设计界面,首先我们都知道游戏最基本的功能有开始,暂停,继续,退出,所以 首先要先加4个bu

13、tt on键来控制游戏,再加一个TextBox文本框来显示成绩。在窗体中加入 Panel来实现贪吃蛇的运动空间,设置有一个游戏的界面运动空间。之后就要定义一个sakes类,来实现蛇的一些属性与方法,首先明白这个游戏实现的是贪吃蛇吃食物,所以还需要定 义食物,食物被吃后要实现食物的重建。玩游戏时还需要有控制键的设置,这一模块可以选 用Switch语句来实现。实现基本的功能后要注意怎样的情况会造成蛇的死亡,可以想到的有 越界线,咬到自己都会死亡。随着思想的成熟,觉得只吃食物好像太简单,所以在这个贪吃 蛇游戏的基础上又设置了一些障碍,加了几堵墙,还设置了随机的炸弹,这样游戏就更有意 思了,加上以前玩

14、俄罗斯方块的一些感觉,还设置了游戏的不断加速的模块。2.2、具体模块实现:1、snake属性定义public Pc mt food_p:/走义竄韧的位養private Label food; /走宣食物 public Label Food "宜物属性 g若t return food: set food = value: private ArrayList body = new ArrayList 0 ;"定义食物定义食物61 恚 public ArrayList Body "食物桶夷属性g若t return body; set body = value; &quo

15、t;定义障涓物 上下左右各一面墻 蛇存垢即吨private ArryLi?t wall = new ArrayList ():public ArrayList Wallj,"private ArrayList Awalll = new ArrayList 0 : public ArrayList Wall 1;.,private ArrayList wa!12 = new ArrayList();public ArrayList WaI12|77T|private ArrayList VFallS = nev ArrayList ();public ArrayLis+ Wall3r

16、A.2、Form属性定义private snike sk = new sn.ike ();"构造一个蛇的对象private int dir = 3;/初谿时要运云方向(向右/定义炸弹private Foint bombb:private Label bomb:3、创建蛇的模块创建蛇的模块和创建障碍物的思路想法是一致的,都是通过label实现:"使用Label逬行创建一个蛇public void GreateSnake()irrt left = 20:Label lb :for (int 1 = 0; i < 2; i卄)lb = new Labe 1():lb<

17、 Name = label"' 4- i. ToSt ring ():lfci. BackColor = Color, Green;¥idth =10;Height = ID:lb.Top = 0;lb.Left = left:body. Add(lb):left -= tO;4、创建食物模块创建食物模块和创建随机炸弹思路是一致的,都是在一定范围内随机出现。通过坐标点的方法来实现食物,食物是随机出现的,而且一旦被吃掉就会立刻创建新的食物。而且还需要判断食物出现的地方时是否与墙壁重合。/创建食物public void GreateFoodORaridom rand =

18、 new 尺andimO ;f ood_p. X = rand*Next (36) * 10 :/限走食物物所能出现的狷坐标f aod_p. Y = rand.Next (36) * 10;"限定食樹物阳能出现的耦坐标for (int i = 0; i < body. Count; i+)if (food p. Y = (Label) body i), Top 齟 food p. X = (Label) body i). Left) - _this* Great eFood(5 ;break;1/判断食物和所见障蹲物是香重合for (int i = 0; i < wall

19、. Count: i+)if (food_p. Y = (Label)this.¥«11 i. Top &A food_p, X 二工(1)this. Vaili).Lef-t)this. Great eFood ();else if Cfood_p. Y = (Label) this* Wall 1 i)* Top &.& f ood_p. K = (L abe 1)thi3. Wall 1 i). Left) this. Great eFood():else if food p. X = ( abel) this, Wall2iLeft 昭 fo

20、od p, Y = (l.at-el)this. Wall2i). Top) this* Creat eFoad(5 :else if (fgd-pSr= (Lab-sl)this.Wall3LiJ),Left 恥 foodj.T = J(Label)this.¥all3HU.IppJ this CrateFocidO ;1food - new Label ();food, Width = 10:food. Height = lfl;food* Top = food_p*Y;f oodLef t 二 f ood_p. X :"加载翼物图片food. Image = Snak

21、e. PropertiesfoDt±:15、蛇吃食物的模块通过Timer控件来设置时间,吃到食物之后身体增长,蛇的身体颜色是三色交替出现,每 吃到一个食物积分加10,身体加长对应增长。而且还要判断是否需要更改蛇的运行速度。/呢吃宜物通过±5肛进行速虞的设掘public P'irie 1 EatFoodtFane丄 panellj Timer tlmsr 1, TextBox textBoalj TestE'ox textBox2) if (body 0) > Top = food p* Y && (Label) body 0) * Le

22、ft = f ood_p. X) 'panel 1 = this*DeFood(panel 1):Label lb = new Label () : /加蛇身lb* Name = lab el 4- body. Couirt* ToStrmg ():int i=body,Count%3:if (i=0)lb.fiackColor = Coler, DimGray;else if (i=l)lb. BackColor = Color, DeepPink :elselb.BackCalor = Color* DeepSkyElue:lb. Width = 10;lb. Height = 1

23、0;lb. Top 二 (Lab el) body body. Couixt - 1 K Top :lb. Left 二 (Label) body body. Count - 1). Left ; body. Add(lb);t extEoz 1. Text = Convt?r1:. ToString(Convert. Tolrxt 32 (textBoxl. Text) + 10):t extEox2.Text = textBoxl.Text;if (Cdivert. Tolnt32(textBox2.Text) < Converts Tolnt32(textBox1.Text)J t

24、extBox2.Text = textBoxl.Text;"修改谨度if (textBoxl. Text = " SO"')timer I. Interval = 150:else if (textBox 1. Text = TDD")t inter 1. Tnt erval = W0: else if (t ext Bax 1. Text = " ISO"1)11 mftr 1. Tnt flrTTB 1 = SPl else if (t eirtBoK 1. Text = " 200")tijnerk

25、Interval = 50;else if (t extEoxL Text =250")tinter 1, Interval 二 20 ;return panel 1:7、是否撞到自己模块当贪吃蛇自己碰到自己的身体时游戏结束/捷击自己private void Hit Self ()for (int i = 1. i < sk,Body, Count: i+)Iif (Label) sk. Body0). Top = (Label) sk. Bodyil). Top Afe (Label) sk. Body0).Left = (LabeL) sk. Bodyi). Left) G

26、ameOver ():break:8、游戏结束模块"结束游戏private void GameOver ()panel! Cont rols Reniove (sk. Food);Fictur eE o? over = new PictureBou ():veImage = Snake* Proper! ies. r.esourcez:* +he_end;over. Width = 360;over.Height = 360;this panel 1. CorrtrtilM.站er);timer 1. St op ():pane11 = this» Defionb(pane

27、l1);MessageBc-y. Show(,Y你本;欠的得分为:"4- tewtBoKl. IeKt+"» 历史最高分药:"+textBox2. TeKt) 9、初始化panel"初始化pan"private void panell_Paint (object senderj 7- aintEentAje)NowSt art ():"初始化private void NowStart ()/7再panel中添加轮的身体for (int i = 0: i < sk.Body.Count: i+)this,panelL C

28、ont rois Add (Label) sk. Body i);"再pael*添加障碍物for (int i = 0; 1 < sk.Fall.Count: i+)this.panelL Cant rols. Add.(Label) sk, Wall i);for (int i = 0; i < sk*Vfall 1, Count : 1-H-)this.panHL Cont rois. Add (Label) sk,'Wall 1 i);for (int i = 0; i < sk, WalI2,Count; i+)this* panelL Cont t

29、ols. AddC(Label) sk* Wall2 i):for (int i = 0; i < sk.Walls,Count; i+)this.panell. Cont rols. Add.(Label)sk. Wall3i);10、初始化Form并添加背景音乐(Kalimba.wav)/初始化FOE创建蛇的对象private void Forml Loadtobject sander, EverrtArs e) -sk. CreateSriake ();sk. Great eVail ():sk-CreateValllO ;sk,Cr eat 63112();sk» Gr

30、eat eWall 3();this.CreatBomb():SriundPlayer music = nev SojiidPlayerkKaliniba< vav");music.Play():/this. Draws():11、控制蛇的运动方向/控制蛇的移动方向protected override bool ProcessDialogKeyCKe'-? keyData)it ch (keyData)case Keys*Up:/diring - dirbdir = 0;break;case Dow:/ diring = dir:dir = 1;break:case K

31、ey:7»Left:/ di ring = dir,dir = 2:break:case Right:/ di ring = dir:dir = 3;break:if (keyDala = Kevs.Up | | keyData =Down | | keyData -= Keys» Left | | keyDat a -= XeysRi琴ht)return alse;elsereturn base. ProcessDialogKey(keyData):四、调试过程及运行结果1、调试过程(1) 在实现撞障碍物的过程中,刚刚开始的时候墙不能起作用,贪吃蛇总是能穿过障碍 物,后来

32、才发现时障碍物的设置范围出现了错误。经过不停的尝试与计算才算出正确的范 围。(2) 在实现固定墙的过程中是通过使用Label来实现的,跟创建贪吃蛇的思想是一样的, 但是在运行过程中刚刚开始的时候不出现障碍物,后来在老师的帮助下发现原来少一句话,需要在NowStar()函数中增加障碍物的显示for (int i = 0; i <sk.Wall.Count; i+) this.pa nel1.Co ntrols.Add(Label)sk.Walli);(3) 在玩游戏的过程中发现食物会与墙壁还有炸弹重合的情况,然后通过分析原因,这与构造食物时判断食物与身体是否接触的道理是一样的,这里需要加一

33、个循环语句来判断,如果不是墙的话才在这里创造食物。(4) 在创造炸弹的实现过程中,总是在炸弹的右半边任何位置都爆炸,通过一步一步的调 试检查是在判断语句时右侧的范围太大,导致有半侧没有炸弹也爆炸。通过调试找到正确的 范围。2、实验结果(1) 游戏运行主界面(2) 帮助界面游戏介绍:1. 通过上.下.左*右鮭制竝的移取2. 陀每吃惮总-节r积分加讥3. 每决积分當加50抱的連度舍相应的变快.4、在运动的过程中SS碰卵久里色,峻为炸弾,卜心巌! !祝蜩运确走(3) 结束界面五、实验心得回顾这个实习过程,发现这次的实训对我来说有很大的收获,我学到了许多课本上没有 学到的知识,以前只是纸上谈兵,这次我

34、将将课本上的理论知识充分的转化成了一些实用技 能。通过这次自己制作的软件,丰富了自己的实践技能,扩展课本专业的知识面,使我受益 匪浅,同时也体验到了搞软件开发发的困难度。在这次设计的同时,我又从中学到了许多东 西。但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足, 有些模块做的不是很好,界面的设计及整体的布局还是比较简单,没有突出特色来,这也可 能使我这个小项目的不足之处,在这里也恳请老师能够对我的小系统知名不足并加以改正。此外,在这一次的课程设计过程中,我上网查阅了大量的资料,对C#有了更深的理解,对于软件工程这些辅助性的教材也巩固了不少,为我这次的课设提供了很大

35、的帮助,锻炼了 我的能力。更重要的是,它还让我认识到了自己的不足之处,在编程方面,我还是比较欠缺, 以后的路任重道远,我需要的事不断地丰富自己,充实自己,这样才能在程序设计方面有所 收获。我想要写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候可能就会 游刃有余了。在编程是我们碰到了很多的困难,这就需要我们多与别人交流。三人行必有我 师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。在编程的过程中我们也看 到了有良好的编程风格是十分重要的,至少在时间效率上就体现了这一点。养成良好的习惯, 代码的缩进编排,变量的命名规则要始终保持一致,这些都是提高我们编程的注意点。还有 在变

36、成中最能体现简单的原则。所以我们要思考讨论简单的程序,这样简单的方法更容易被 人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案 不能满足要求时再考虑复杂的方案。最后感谢程铭老师在这一学期中对我们的悉心教导,通过这一学期的学习,让我们掌握了很多有关C#.NET勺应用知识,感谢您给我们提供了一个锻炼自我能力提高自我能力的机会。六、参考资料1陈俊荣.ASP与网络数据库技术MD .北京:中国铁道出版社,2005.2张绣兰.ASP网站建设实录MD .北京:北京希望电子出版社.2008.3李华.DreamWeaver8网页设计程序教程M .北京:清华大学出版社.2004.4

37、江开耀.软件工程M .西安:西安电子科技大学出版社.七、附录:源代码snake源代码如下:using System;using System.Collectio ns.Ge neric;using Syste m. Li nq;using System.Text;using System.Wi ndows.Forms;using System.Collectio ns;using System.Drawi ng;using System.Comp onen tModel;using System.Data;n amespace Sn akeclass sn akepublic Poi nt f

38、ood_p;定义食物的位置private Label food; 定义食物public Label Food食物属性get retur n food; set food = value; private ArrayList body = new ArrayList(); / 定义食物定义食物链表public ArrayList Body/ 食物链表属性get retur n body; set body = value; 定义障碍物上下左右各面墙蛇撞墙即死private ArrayList wall = new ArrayList();public ArrayList Wallget retu

39、rn wall; set wall = value; private ArrayList wall1 = new ArrayList();public ArrayList Wall1get return wall1; set wall1 = value; private ArrayList wall2 = new ArrayList();public ArrayList Wall2get return wall2; set wall2 = value; private ArrayList wall3 = new ArrayList();public ArrayList Wall3get ret

40、urn wall3; set wall3 = value; public void CreateS nake()使用 Label 进行创建一个蛇 int left = 20;Label lb;for (int i = 0; i < 2; i+)lb = new Label();lb.Name = "label" + i.ToStri ng(); lb.BackColor = Color.Gree n; lb.Width = 10;lb.Height = 10;lb.Top = 0;lb. Left = left;body.Add(lb);left -= 10;publ

41、ic void CreateWall()使用 Label进行创建障碍物 int left = 200;Label lb0;for (i nt i = 0; i < 10; i+ )lb0 = new Label();lb0.Name = "label" + i.ToStri ng();lb0.BackColor = Color.Red; lb0.Width = 10;lb0.Height = 10;lb0.Top = 50;lb0.Left = left;wall.Add(lb0);left -= 10;public void CreateWall1()int lef

42、t = 200;Label lb1;for (int i = 0; i < 10; i+)lb1 = new Label();lb1.Name = "label" + i.ToStri ng();lb1.BackColor = Color.Red; lb1.Width = 10;lb1.Height = 10;lb1.Top = 310;Ib1丄eft = left;wall1.Add(lb1);left -= 10;public void CreateWall2()int top = 200;Label lb2;for (int i = 0; i < 10;

43、i+)lb2 = new Label();lb2.Name = "label" + i.ToStri ng(); lb2.BackColor = Color.Red; lb2.Width = 10;lb2.Height = 10;lb2.Left = 50;lb2.Top = top;wall2.Add(lb2);top -= 10;public void CreateWall3()int top = 200;Label lb3;for (int i = 0; i < 10; i+)lb3 = new Label();lb3.Name = "label&qu

44、ot; + i.ToStri ng();lb3.BackColor = Color.Red;lb3.Width = 10;lb3.Height = 10;lb3.Left = 260;lb3.Top = top;wall3.Add(lb3);top -= 10;/创建食物public void CreateFood()Ran dom rand = new Ran dom();food_p.X = ran d.Next(36) * 10;/限定食物物所能出现的横坐标food_p.Y = ran d.Next(36) * 10;/限定食物物所能出现的横坐标 for (i nt i = 0; i &

45、lt; body.Co unt; i+)if (food_p.Y = (Label)bodyi).Top && food_p.X = (Label)bodyi).Left) this.CreateFood();break;判断食物和所见障碍物是否重合for (i nt i = 0; i < wall.Co unt; i+)if (food_p.Y = (Label)this.Walli).Top && food_p.X = (Label)this.Walli).Left)this.CreateFood();else if (food_p.Y = (Labe

46、l)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).Top)this.CreateFood();else if (food_p.X = (Label)this.Wall3i).Left && food_p.Y = (Label)this.Wall3i).Top)this.CreateFood()

47、;food = new Label();food.Width = 10;food.Height = 10;food.Top = food_p.Y;food.Left = food_p.X;/加载食物图片food .Im age = Sn ake.Properties.Resources.food;/蛇吃食物通过timer进行速度的设置public Panel EatFood(Pa nel pan el1, Timer timer1, TextBox textBox1, TextBox textBox2) if (Label)body0).Top = food_p.Y && (L

48、abel)body0).Left = food_p.X) 一 一pan el1 = this.DeFood(pa nel1);Label lb = new Label();/ 增加蛇身lb.Name = "label" + body.Cou nt.ToStri ng();int i=body.Cou nt%3;if(i=0)lb.BackColor = Color.DimGray;else if(i=1)lb.BackColor = Color.DeepPi nk;elselb.BackColor = Color.DeepSkyBlue;lb.Width = 10;lb.H

49、eight = 10;lb.Top = (Label)bodybody.Cou nt - 1).Top;lb.Left = (Label)bodybody.Cou nt - 1).Left;body.Add(lb);textBox1.Text = Con vert.ToStri ng(Co nvert.Tol nt32(textBox1.Text) + 10); textBox2.Text = textBox1.Text;if (Co nvert.Tol nt32(textBox2.Text) < Con vert.ToI nt32(textBox1.Text) textBox2.Tex

50、t = textBox1.Text;修改速度if (textBox1.Text = "50")timer1.I nterval = 150;else if (textBoxl.Text = "100")timerl.l nterval = 100;else if (textBoxl.Text = "150") timerl.l nterval = 80;else if (textBox1.Text = "200") timer1 .In terval = 50;else if (textBox1.Text = &q

51、uot;250") timer1.I nterval = 20;return pan el1;吃过后销毁再创建食物 public Panel DeFood(Panel panel1)pan el1.C on trols.Remove(food); this.CreateFood();pan el1.Co ntrols.Add(food); return pan el1; /Form源代码: using System;using System.Collectio ns.Ge neric;using System.Comp onen tModel;using System.Data;us

52、ing System.Drawi ng;using Syste m. Li nq;using System.Text;using System.Wi ndows.Forms;using System.Collectio ns;using System.Media;n amespace Sn akepublic partial class Form1 : Formpublic Form1()In itializeComp onen t();private sn ake sk = new sn ake();构造一个蛇的对象private int dir = 3;/初始时要运动的方向(向右)priv

53、ate Poi nt bomb_b; 定义炸弹private Label bomb;public void CreatBomb() 创建炸弹Ran dom rand = new Ran dom();bomb_b.X = ran d.Next(20) * 10;bomb_b.Y = ran d.Next(20) * 10;bomb = new Label();bomb.Width = 10;bomb.Height = 10;bomb.Top = bomb_b.Y;bomb.Left = bomb_b.X;bomb .Im age = Sn ake.Properties.Resources.b2;

54、判断随机炸弹是否与随机食物重合if (bomb_b.X = sk.food_p.X && bomb_b.Y = sk.food_p.Y) CreatBomb();/清除炸弹public Panel DeBomb(Panel panel1)pan el1.C on trols.Remove(bomb);return pan el1;private int diri ng = -1;/ 正在运动的方向private void butt on 1_Click(object sen der, Eve ntArgs e) /开始 textBox1.Text = "0"

55、butt on 3.E nabled = true;timer1.Start();pan el1 = sk.DeFood(pa nel1);this.CreatBomb();pan el1.C on trols.Add(bomb);private void butt on 2_Click(object sen der, Eve ntArgs e) /暂停 _timer1.Stop();private void butt on 3_Click(object sen der, Eve ntArgs e) /新 游戏textBox1.Text = "0"timer1.I nterval = 200;butt on 3.E nabled = false;pan el1.Co ntrols.Clear();sk.Body.Clear();sk.CreateS nake();NowStart();dir = 3;diri ng = -1;timer1.Stop();private void NowStart() 初始化/再pan e中添加蛇的身体for (int i = 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论