《2022年课程方案贪吃蛇编制》由会员分享,可在线阅读,更多相关《2022年课程方案贪吃蛇编制(14页珍藏版)》请在金锄头文库上搜索。
1、个人资料整理仅限学习使用课程设计成果说明书题目:贪吃蛇游戏的编制学生姓名:杜恩荣学号: 100604120 学院:数理与信息学院班级: A10计算机指导教师:亓常松老师浙江海洋学院教务处2018 年 7 月 8 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 14 页个人资料整理仅限学习使用目录1. 系统需求分析1.1程序功能说明1.2程序设计的分析2. 软件设计说明 2.1a主界面控件设计 2.1b 颜色控件设计 2.2 具体操作3. 测试报告 3.1测试游戏 3.2测试的意义4. 参考文件5. 课程设计总结精选学习资料 - - -
2、 - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 14 页个人资料整理仅限学习使用贪吃蛇游戏的设计与实现1. 系统需求分析:1.1 程序功能说明:贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘wsad控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10 分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。1.2 程序设计的分析:通过程序所要实现的功能可以看出,该程序中有蛇,食物两个主要的对象,所以我们可以定义两个类:蛇类和食物类;在蛇类中封装了蛇的所有的属性和操
3、作。蛇的属性有:蛇的长度,蛇的长度,蛇的初始位置,蛇的运动方向,蛇的存活状态,蛇的运动速度。蛇的操作有:蛇的移动,蛇吃食物,画出蛇所有的状态。食物的属性有:食物的出现位置,食物的存活状态。食物类的操作:创建一个新的食物,画出食物的位置。在该程序中还有一个 from 类,用来画出和显示蛇和食物的状态和位置,该类提供给蛇和食物的运动平台,蛇和食物在该from 的画板范围内运行。程序中还有其他的功能要一一实现。如:在用户点击“开始”按钮后程序才能开始运行。用户如果按空格键,则该程序暂停,但并不终止程序,在用户再次按空格键时,程序继续运行。如果程序运行结束,即程序出现“GAME OVER”, 或用户点
4、击窗口关闭按钮时,程序结束,并且退出。在程序运行过程中,用户控制的蛇,没吃到一个食物,那么该玩家的得分就加10,并且还要记录玩家的总得分。在菜单栏【游戏设置】中选择【颜色设置】命令,可以设置蛇体和食物的颜色;在菜单栏【游戏设置】中选择【难度选择】命令,可以设置游戏难度。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 14 页个人资料整理仅限学习使用游戏预览:游戏运行的主操作界面如下图所示蛇体颜色选择界面如下:帮助界面如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 14 页个
5、人资料整理仅限学习使用2. 软件设计说明 : 系统主界面开始暂停设置退出蛇开始运动键盘控制使用空格键可以暂停游戏菜单栏,可以选择颜色和难度退出程序蛇吃食物吃一个加10 分,并在积分框显示当前积分精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 14 页个人资料整理仅限学习使用2. 软件设计说明2.1a 主界面控件设计 :控件类型控件名称作用MenuStrip MenuStrip2 蛇体颜色设置MenuStrip MenuStrip3 食物颜色设置MenuStrip MenuStrip4 游戏难度设置MenuStrip MenuStrip5
6、 游戏控制说明MenuStrip menuExit 退出Panel Panel1 显示游戏界面Butten Butten1 开始TextBox TextBox1 显示积分2.1b 颜色控件设计 :控件类型控件作用Lable 显示选择的颜色ComboBox 选择颜色Button 确定2.2 具体操作 : 1 )游戏中,蛇类的实现是关键,在游戏蛇的设计编码中设计了蛇的默认移动方向、大小、判断是否吃到食物等,代码如下:using System。using System.Collections。using System.Drawing。using System.Windows.Forms。namesp
7、ace Snake 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 14 页个人资料整理仅限学习使用 / SnakeMod 的摘要说明。/publicclassSnakeMod /判断食物是否在蛇身里privatebool hasFood = false。/蛇身介质privateLabel body。/蛇的颜色privateColor _color = System.Drawing.Color.SkyBlue。/颜色属性public System.Drawing.Color BodyColor set this._color = val
8、ue。 /蛇的大小privateSize size。/移动方向默认向西private Snake.Way way =Way.WEST。publicWay SnakeWay set this.way=value。 get return way。 /蛇身privateArrayList snake 。/构造函数public SnakeMod( /画蛇publicvoid DrawSnake( 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 14 页个人资料整理仅限学习使用/设置大小size = newSize(10,10。/设置身体snak
9、e = newArrayList (。for(int i=0。i body = newLabel(。body.BackColor = _color 。body.Size = size。body.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle。body.Location=newPoint(200+i*10,150 。snake.Add(body。 /返回蛇体publicArrayList GetSnake( return snake 。 /蛇体移动publicvoid Move(System.Windows.Forms.Con
10、trol control if(!this.hasFood control.Controls.Remove(control.GetChildAtPoint( Labelsnakesnake.Count-1.Location。snake.RemoveAt(snake.Count-1 。 Label temp = newLabel(。this.CopyBody(temp,(Labelsnake0。switch(this.way case Way.WEST: temp.Left-=10。snake.Insert(0,temp 。break。 case Way.EAST: temp.Left+=10。
11、snake.Insert(0,temp 。break。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 14 页个人资料整理仅限学习使用 case Way.NORTH: temp.Top-=10。snake.Insert(0,temp 。break。 case Way.SOUTH: temp.Top+=10。snake.Insert(0,temp 。break。 control.Controls.Add( Labelsnake0。if(this.hasFood this.hasFood=false。 /copy蛇身privatevoid
12、CopyBody( Label x,Label y x.Location = y.Location 。x.BackColor = y.BackColor 。x.Size = y.Size。x.BorderStyle = y.BorderStyle 。 /吃东西publicbool Eat(Point food if(Labelsnake0.Left = food.X & ( Labelsnake0.Top = food.Y /吃到东西this.hasFood = true。returntrue。 returnfalse。 /屏蔽游戏菜单this.menuItem1.Enabled = fals
13、e。this.menuItem5.Enabled = false。/画蛇this.snake.DrawSnake( 。 game = newThread(newThreadStart (StartGame。 game.Start( 。this.DrawSnake(。this.button1.Enabled = false。this.Focus(。 privatevoid DrawSnake( lock(this foreach(Label temp in snake.GetSnake( this.panel1.Controls.Add(temp。 /开始游戏privatevoid StartG
14、ame( drawDelegate = newDrawDele(PutFood。this.Invoke(drawDelegate,null。while(true Thread.Sleep(speed 。if(this.IsGameOver( MessageBox.Show(GAME OVER 。try this.game.Abort(。 catch 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 14 页个人资料整理仅限学习使用 if(this.snake.Eat( this.foodPoint /改变积分this.textBox1.
15、Text =System.Convert.ToString(+this.foodCount*10 。/消除原本食物drawDelegate = newDrawDele(KillFood 。this.Invoke(drawDelegate,null。/添加新食物drawDelegate = newDrawDele(PutFood。this.Invoke(drawDelegate,null。 drawDelegate = newDrawDele(MoveSnake。this.Invoke(drawDelegate,null。 ArrayList temp = this.snake.GetSnake
16、( 。Label head = (Labeltemp0。foreach(Label lbl in temp.GetRange(1,temp.Count-1 if(lbl.Left=head.Left & lbl.Top=head.Top returntrue。 if(Labelthis.snake.GetSnake(0.Left=0 |(Labelthis.snake.GetSnake(0.Left=390 |(Labelthis.snake.GetSnake(0.Top=0 |(Labelthis.snake.GetSnake(0.Top=290 returntrue。 returnfals
17、e。 /蛇体颜色设置SnakeColor temp = newSnakeColor(。if(temp.ShowDialog(this=DialogResult.OK this.snake.BodyColor = temp.Color。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 14 页个人资料整理仅限学习使用temp.Dispose(。 privatevoid menuItem3_Click(object sender, System. EventArgs e /食物颜色设置SnakeColor temp = newSnakeCo
18、lor(。if(temp.ShowDialog(this=DialogResult.OK this.foodColor = temp.Color 。temp.Dispose(。 3. 测试报告3.1 游戏的测试游戏的开始:游戏死亡情况:(1)撞墙:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 14 页个人资料整理仅限学习使用(2)撞自身:测试结果综上,游戏可以按原预想运行,没发现错误。3.2 测试的意义:游戏的测试时为了发现错误而执行的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的
19、各种错误和缺陷。游戏的测试是保证系统质量和可靠性的关键步骤,是对游戏开发过程中的系统分析设计和实施的最后复查。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 14 页个人资料整理仅限学习使用4. 参考文献:C# 课程设计案例精编C#.NET程序设计5课程设计总结:1)注意:本程序由于个人技术有限,在很多方面还没有完善,如,在用方向键控制蛇的运动方向时,不能同时两个键一起按,或是两个键之间的时间间隔很短,那样蛇会出现异常死亡的状况,所以使用时还请注意。2)收获:通过做贪吃蛇游戏,对用C#图形界面编程有了更好的掌握;对面向对象的方法有了更
20、深刻的理解;对具体控件、组件的运用也更加熟练;用所学知识来解决具体问题的能力也因此提高了。同时,在这次练习的过程中,一开始没有用软件设计的思维去做,甚至连流程图都没有画,导致一开始的时候漫无目的,失败了很多。让我认识到了从软件工程的角度出发的必要性,做好充分的准备工作,然后着手编写代码。在做贪吃蛇的过程中,也遇到过很多问题,比如,不清楚怎么判断蛇是否死亡,不清楚蛇是否吃了食物等。最后通过询问同学,查找资料等方法成功解决。至此,我明白了软件工程角度的重要性和自身实力的欠缺,要更加努力的学习和掌握更多知识。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 14 页