2022年面向对象编程技术实验指导教程[参 .pdf
《2022年面向对象编程技术实验指导教程[参 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象编程技术实验指导教程[参 .pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象编程技术实验指导教程郑州轻工业学院计算机与通信工程学院网络工程系名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -目录1实验目的.32实验题目.33实验步骤.43.1需求.43.2设计.53.3编码.63.4测试.173.5系统升级.错误!未定义书签。4实验报告.185实验验收.186实验成绩.错误!未定义书签。附录 1 实验报告格式.19名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -网络编程基础实训教程31 实验目的通过开发一款贪吃蛇游戏程序,熟练掌握C#编程语言、和面向对象程序设计方法,独立完成一个游戏程序的开发。2 实验题目使用
2、C#编程语言,开发一款贪吃蛇游戏,如下图所示。游戏基本功能描述如下:1)游戏场地是一片矩形区域的草坪。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -网络编程基础实训教程42)一条蛇由蛇头和蛇身组成。3)当游戏开始之后,草坪中出现一颗豆和一条蛇,并且蛇不停地移动,蛇移动的方向与蛇头的方向一致。4)当蛇移动时,玩家使用“”、“”、“”和“”四个键控制蛇的方向。5)当蛇头与豆的位置重合时,豆被蛇吃掉,同时在草坪中再生成一颗新的豆,蛇身增加一节。6)当蛇头碰到草坪四周或蛇身时,蛇立即毙命,游戏结束。3 实验步骤3.1 需求根据功能描述可知,贪吃蛇游戏的系统结构图如下所示。定
3、义数据字典如下:1)草坪(Lawn):草坪是贪吃蛇游戏的场地。豆和蛇只能存在于草坪范围之内。草坪具有大小和颜色等属性。2)蛇(Snake):在贪吃蛇游戏中,蛇由若干节组成,其中第一节是蛇头,其余是蛇身。在游戏过程中,有且仅有一条名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20 页 -网络编程基础实训教程5蛇,并且蛇在不停地移动。如果蛇吃了豆,则蛇生长一节。如果蛇头碰到蛇身或离开草坪,则蛇死亡游戏结束。蛇具有长度、颜色、运动方向、每一节的位置等属性。3)豆(Bean):在贪吃蛇游戏中,豆是蛇的食物。在游戏过程中,有且仅有一颗豆。如果蛇吃了豆,则重新生成一颗豆。豆具有位置、大小和
4、颜色等属性。3.2 设计根据需求分析可知,Snake的每一节都有位置和大小等属性。而Bean也具有这两个属性。抽象出二者的共同特征,抽象出一般类Block,用于描述一个块。Block派生出 Bean和SnakeBlock两个类,其中SnakeBlock类用于描述蛇的一节。为了使游戏的运行更易于控制,定义Game类用于启动、暂停和继续游戏。根据需求分析可知,Lawn仅包含大小和颜色两个属性。为了减少类的数量,可将其大小和颜色等属性添加到Game类中。综上所述,在贪吃蛇游戏中,有Block(块)、Bean(豆)、SankeBlock(节)、Snake(蛇)、Game(游戏)和 MainForm(用
5、户接口)六个类。贪吃蛇游戏的逻辑模型如下图所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -网络编程基础实训教程6MainFormGameBlockBeanSnakeBlockSnake3.3 编码3.3.1 Block(块)类编码Block是用来构成 Bean(豆)和 Snake(蛇)的最基本的单位,是Bean和SnakeBlock的基类。Block类的参考代码如下。usingSystem;usingSystem.Drawing;namespace HungrySnakeclassBlockprotectedPointorigion;/Block 的左上顶点pu
6、blicconstintWIDTH=10;/Block 的宽度publicconstintHEIGHT=10;/Block 的高度protectedColorcolor;/Block 的颜色publicBlock()origion=new Point(0,0);color=new Color();名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -网络编程基础实训教程7publicBlock(intx,inty,Color_color)origion=new Point(x,y);color=_color;publicPointOrigiongetreturnorigio
7、n;publicvoidDisplay(Graphicsg)SolidBrushbrush=new SolidBrush(color);g.FillRectangle(brush,origion.X,origion.Y,WIDTH,HEIGHT);Pen pen=new Pen(Color.Black);g.DrawRectangle(pen,new Rectangle(origion.X,origion.Y,WIDTH-1,HEIGHT-1);publicvoidClear(Graphicsg,ColorbackGroundColor)SolidBrushbrush=new SolidBru
8、sh(backGroundColor);g.FillRectangle(brush,origion.X,origion.Y,WIDTH,HEIGHT);3.3.2 Bean(豆)类编码Bean表示豆,是由 Block派生而来的。Bean类的参考代码如下。usingSystem;usingSystem.Drawing;namespace HungrySnakeclassBean:BlockpublicBean(Color_color)origion=new Point(0,0);color=_color;publicvoidCreat(Graphicsg,ColorbackGroundColor
9、,intlawnWidth,int名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -网络编程基础实训教程8lawnHeight,Snake snake)Clear(g,backGroundColor);boolbGetAPosition=false;/是否找到生成豆的位置Randomrandom=new Random();while(!bGetAPosition)origion.X=random.Next(0,lawnWidth-1)/WIDTH*WIDTH;origion.Y=random.Next(0,lawnHeight-1)/HEIGHT*HEIGHT;inti
10、;for(i=0;i snake.Length;i+)if(origion=snake.blocksi.Origion)break;if(i=snake.Length)bGetAPosition=true;Display(g);3.3.3 SnakeBlock(节)类编码SnakeBlock表示蛇的一节,是由 Block派生而来的。SnakeBlock类的参考代码如下:usingSystem;usingSystem.Drawing;namespace HungrySnakeclassSnakeBlock:BlockprivateboolisHead;publicboolIsHeadgetret
11、urnisHead;publicSnakeBlock(intx,inty,Color_color,bool_isHead)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -网络编程基础实训教程9origion=new Point(x,y);color=_color;isHead=_isHead;publicvoidChangeHeadToBody()if(isHead)isHead=false;publicvoidDisplay(Graphicsg,Directiondirection)base.Display(g);if(isHead)/绘制蛇眼SolidBrushb
12、rush=new SolidBrush(Color.Brown);switch(direction)case Direction.Up:case Direction.Down:g.FillRectangle(brush,origion.X+WIDTH/4,origion.Y+HEIGHT/2,2,2);g.FillRectangle(brush,origion.X+WIDTH/4*3,origion.Y+HEIGHT/2,2,2);break;case Direction.Left:case Direction.Right:g.FillRectangle(brush,origion.X+WID
13、TH/2,origion.Y+HEIGHT/4,2,2);g.FillRectangle(brush,origion.X+WIDTH/2,origion.Y+HEIGHT/4*3,2,2);break;3.3.4 Snake(蛇)类编码Snake表示蛇。Snake 类的参考代码如下:usingSystem;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 20 页 -网络编程基础实训教程10usingSystem.Collections.Generic;usingSystem.Drawing;namespace HungrySnakepublicenum DirectionUp,D
14、own,Left,Right;classSnakeprivateintlength;publicDirectiondirection;privateColorcolor;publicList blocks;privateconstintINIT_LENGTH=3;publicintLengthgetreturnlength;publicSnake(Color_color,Direction_direction)direction=_direction;color=_color;blocks=new List();publicvoidCreat(Graphicsg,ColorbackGround
15、Color,intlawnWidth,intlawnHeight)Clear(g,backGroundColor);blocks.Clear();length=INIT_LENGTH;intx;inty;Randomrandom=new Random();x=random.Next(lawnWidth/4,lawnWidth/4*3)/Block.WIDTH*Block.WIDTH;y=random.Next(lawnHeight/4-1,lawnHeight/4*3)/Block.HEIGHT*Block.HEIGHT;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 20 页
16、 -网络编程基础实训教程11blocks.Add(new SnakeBlock(x,y,color,true);switch(direction)case Direction.Up:for(inti=1;i length;i+)blocks.Add(new SnakeBlock(x,y+Block.HEIGHT*i,color,false);break;case Direction.Down:for(inti=1;i length;i+)blocks.Add(new SnakeBlock(x,y-Block.HEIGHT*i,color,false);break;case Direction.
17、Left:for(inti=1;i length;i+)blocks.Add(new SnakeBlock(x+Block.WIDTH*i,y,color,false);break;case Direction.Right:for(inti=1;i length;i+)blocks.Add(new SnakeBlock(x-Block.WIDTH*i,y,color,false);break;Display(g);publicvoidGrow()intx=2*blocksblocks.Count-1.Origion.X-blocksblocks.Count-2.Origion.X;inty=2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象编程技术实验指导教程参 2022 面向 对象 编程 技术 实验 指导 教程
限制150内