




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常州工程职业技术学院常州工程职业技术学院 计算机技术系计算机技术系项目:贪吃蛇游戏设计项目:贪吃蛇游戏设计工作任务一:系统设计工作任务一:系统设计(system design)(system design)工作任务二:豆类(工作任务二:豆类(BeanBean)设计)设计 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计工作目标工作目标u终极目标终极目标u主界面:主界面: 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u自定义速度界面自定义速度界面 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u促成目标1.1. 完成完成贪吃蛇游戏贪吃蛇
2、游戏BeanBean类设计;类设计;2.2. 完成完成贪吃蛇游戏贪吃蛇游戏BlockBlock类设计;类设计;3.3. 完成完成贪吃蛇游戏贪吃蛇游戏SnakeSnake类设计;类设计;4.4. 完成完成贪吃蛇游戏贪吃蛇游戏FloorFloor类设计;类设计;5.5. 完成完成贪吃蛇游戏贪吃蛇游戏Form1Form1类设计(界面);类设计(界面);6.6. 完成完成贪吃蛇游戏贪吃蛇游戏窗体菜单设计;窗体菜单设计;7.7. 完成完成贪吃蛇游戏贪吃蛇游戏键盘操作处理;键盘操作处理;8.8. 完成完成贪吃蛇游戏贪吃蛇游戏程序自动运行。程序自动运行。项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序
3、设计程序设计u工作任务一:总体设计工作任务一:总体设计 u工作任务二:工作任务二:BeanBean类的实现类的实现 u工作任务三:工作任务三:BlockBlock类类的实现的实现 u工作任务四:工作任务四:SnakeSnake类类的实现的实现 u工作任务五:工作任务五:FloorFloor类类的实现的实现 u工作任务六:工作任务六:PubClassPubClass类类的实现的实现 u工作任务七:工作任务七:SpeedSpeed类类的实现的实现 u工作任务八:主界面(工作任务八:主界面(StartStart类)类)的实现的实现 工作任务工作任务 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#
4、程序设计程序设计知识准备知识准备类与对象类与对象u类、对象、字段、属性和方法类、对象、字段、属性和方法 u类的基本概念类的基本概念对象(实体)对象(实体)(分)类(分)类男人、女人、高人、矮人、胖人男人、女人、高人、矮人、胖人人人狗、猫、兔、鸡、狼狗、猫、兔、鸡、狼动物动物台式电脑、笔记本电脑、服务器台式电脑、笔记本电脑、服务器电脑电脑对象类抽象化具体化项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u类的特征数据:用类的特征数据:用字段字段表示(变量)表示(变量)如人:年龄、名字和身高等;如人:年龄、名字和身高等;动物:毛的颜色、动物:毛的颜色、腿腿的数量和跑的速度等;的数
5、量和跑的速度等;电脑:电脑:CPUCPU型号、型号、CPUCPU品牌、内存容量等。品牌、内存容量等。u类的行为:用类的行为:用方法方法表示表示如人:能走路、干活等;如人:能走路、干活等;动物:能跑、找食等;动物:能跑、找食等;电脑:能帮助我们处理事务、计算表达式的值电脑:能帮助我们处理事务、计算表达式的值知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u类的字段和方法都叫类的字段和方法都叫类的成员类的成员。u类是对象的模板,定义类的目的是为了描述具类是对象的模板,定义类的目的是为了描述具体的对象。体的对象。实例:设计汽车类(实例:设计汽车类(C
6、arCar) 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u2.2.程序解读程序解读类定义类定义class class 类名类名 类体(类成员)类体(类成员) 类成员的访问属性类成员的访问属性privateprivate和和publicpublic privateprivate(私有)成员:只能在定义它的类中被私有)成员:只能在定义它的类中被访问,在定义它的类外不能被访问。访问,在定义它的类外不能被访问。 publicpublic(公共)成员:既可以在定义它的类中被公共)成员:既可以在定义它的类中被访问,也在定义它的类外被访问。访问,也在定
7、义它的类外被访问。 注意:注意:private private 是默认的是默认的。知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计字段字段 类中的字段实际上是变量,因此字段的定义与变量类中的字段实际上是变量,因此字段的定义与变量定义相同,形式如下:定义相同,形式如下: 数据的访问说明符数据的访问说明符 数据类型数据类型 字段名字段名 方法方法 小汽车能启动也能停下来,所以分别用小汽车能启动也能停下来,所以分别用StartStart方法方法和和StopStop方法模汽车的起动和停止。方法模汽车的起动和停止。 知识准备知识准备类与对象类与对象项目项
8、目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计创建对象创建对象 分两步:分两步:声明对象声明对象类名类名 对象名对象名; 如:如:Car Car myCarmyCar; ;对象实例化对象实例化对象名对象名= =new new 类名()类名(); ; 如:如:myCarmyCar=new Car();=new Car(); 由类创建了对象后,每一个对象都有了类中的由类创建了对象后,每一个对象都有了类中的所所有非静态成员有非静态成员,即对象,即对象myCarmyCar具有了具有了wheelswheels、tratrademarkdemark、maxspeedmaxspeed字段和字段
9、和StartStart和和StopStop方法。方法。知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计 上面创建类对象的两步可以合并成一步:上面创建类对象的两步可以合并成一步:类名类名 对象名对象名= =newnew类名类名()(); ; 如:如:Car Car myCarmyCar=new Car();=new Car();类成员的访问类成员的访问 在类的作用域内即在类的内部,成员可以由类的所在类的作用域内即在类的内部,成员可以由类的所有方法直接访问,并可用它的名字进行引用。有方法直接访问,并可用它的名字进行引用。 在类的作用域外即在类的外部
10、,对象成员的存取必在类的作用域外即在类的外部,对象成员的存取必须通过该类或该类的对象和点操作符(类成员存取须通过该类或该类的对象和点操作符(类成员存取操作符)来存取。操作符)来存取。 对象的成员存取方式如下:对象的成员存取方式如下: 对象对象. .成员名成员名知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u属性属性 属性主要是用来属性主要是用来访问字段访问字段的,它有访问器。这些访的,它有访问器。这些访问器用来问器用来读取或写入读取或写入字段值,也可以对字段和属性字段值,也可以对字段和属性进行计算,然后将计算结果给相应的字段。进行计算,然后将
11、计算结果给相应的字段。 属性也需要声明,格式如下:属性也需要声明,格式如下:类型类型 属性名属性名 访问器声明访问器声明 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u属性的访问器:属性的访问器:1 1)getget访问器访问器 通过通过getget访问器读取字段值。访问器读取字段值。getget访问器与无参数访问器与无参数的方法结构相似,它必须返回一个属性类型的值。的方法结构相似,它必须返回一个属性类型的值。2 2)setset访问器访问器 通过通过setset访问器给字段赋值。访问器给字段赋值。setset访问器与具有单访问器与具有单个
12、属性类型值参数和返回个属性类型值参数和返回voidvoid的方法结构相似,的方法结构相似,这个属性类型值参数是它隐含的名为这个属性类型值参数是它隐含的名为valuevalue的参数。的参数。在在setset访问器中最简单的是把访问器中最简单的是把valuevalue值赋给字段。值赋给字段。知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计如:如:private private intint wheels;/ wheels;/私有字段:轮子个数私有字段:轮子个数public public intint Wheels/ Wheels/访问访问whee
13、lswheels的属性的属性 getget return wheels;return wheels; setset wheels=value;wheels=value; 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u根据类中属性的实际需要,把属性分成下面几种:根据类中属性的实际需要,把属性分成下面几种: 1 1)读写属性读写属性:包括:包括getget和和setset两个访问器,既能读取属两个访问器,既能读取属性值,也能向属性写入。性值,也能向属性写入。 2 2)只读属性只读属性:只包括:只包括getget访问器,即只能读取属性值。访问器,
14、即只能读取属性值。 3 3)只写属性只写属性:只包括:只包括setset访问器,即只能向属性写入。访问器,即只能向属性写入。知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u 实例构造函数实例构造函数1.1.构造函数构造函数构造函数是构造函数是与类同名与类同名的的特殊方法特殊方法成员成员。它是实现。它是实现初初始化类实例所必须操作的成员始化类实例所必须操作的成员。构造函数名(可选形参表)构造函数名(可选形参表) 方法体方法体 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u默认构造函数默认构造
15、函数在在C#C#中,如果类不包括任何实例构造函数声明,则中,如果类不包括任何实例构造函数声明,则自动提供一个默认的无参数实例构造函数。自动提供一个默认的无参数实例构造函数。 如:上例中语句如:上例中语句myCarmyCar=new Car();=new Car();中的中的Car()Car(),它是默认的构造函数,形式如下:它是默认的构造函数,形式如下: public Car() public Car() 并使用默认值初始化对象字段。并使用默认值初始化对象字段。默认:数值类型为默认:数值类型为0 0,boolbool为为falsefalse,引用为引用为nullnull知识准备知识准备类与对象
16、类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u实例构造函数重载实例构造函数重载定义:当类定义中含有两个以上其参数个数或类型定义:当类定义中含有两个以上其参数个数或类型或种类不同的实例构造函数时,称为实例构造函数或种类不同的实例构造函数时,称为实例构造函数重载。重载。u程序解读程序解读1)1)程序中两种构造函数比较程序中两种构造函数比较程序中添加了两个类的构造函数,一个是空构造函程序中添加了两个类的构造函数,一个是空构造函数;一个是带参数的构造函数。数;一个是带参数的构造函数。 空构造函数空构造函数 public Car()/public Car()/空构造函数空构
17、造函数 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计用此构造函数创建的类对象,是没有具体值的对象,只是把对象字段用此构造函数创建的类对象,是没有具体值的对象,只是把对象字段设置为默认值:数值类型为设置为默认值:数值类型为0 0,boolbool类型为类型为falsefalse,引用类型为引用类型为nullnull。 注意注意:创建了带参数的构造函数后,要用空构造函数实例化对象,:创建了带参数的构造函数后,要用空构造函数实例化对象,必须创建此空构造函数,否则出现编译错误。必须创建此空构造函数,否则出现编译错误。带参数的构造函数带参数的构造函数
18、 public Car( string public Car( string trtr, , intint wh,floatwh,float masmas)/)/带参数的构造函带参数的构造函数数 trademark = trademark = trtr; ; wheels = wheels = whwh; ; maxspeedmaxspeed = = masmas; ; 用此构造函数创建类对象,要传递三个参数,在函数体中依次初始用此构造函数创建类对象,要传递三个参数,在函数体中依次初始化三个字段,这样用此构造函数创建的对象就是具体的对象了。化三个字段,这样用此构造函数创建的对象就是具体的对象了
19、。 知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计2)2)程序中两种实例化对象比较程序中两种实例化对象比较 用空构造函数实例化对象用空构造函数实例化对象 由于用此创建的对象不是具体的,还得对字段赋值后由于用此创建的对象不是具体的,还得对字段赋值后才能使用。才能使用。 myCar1 = new Car();/myCar1 = new Car();/实例化对象实例化对象 myCar1.Wheels = 4;myCar1.Wheels = 4; myCar1.Maxspeed = 230; myCar1.Maxspeed = 230; myCar1
20、.Trademark = myCar1.Trademark = 宝马宝马;/;/给字段赋值给字段赋值 output = myCar1.car_message();output = myCar1.car_message(); 用带参数的构造函数实例化对象用带参数的构造函数实例化对象 由于用此创建的对象是具体对象,所以可以直接使用由于用此创建的对象是具体对象,所以可以直接使用 myCar2 = new Car(myCar2 = new Car(红旗红旗,4,180);/,4,180);/实例化对象实例化对象 output = myCar2.car_message();output = myCar2
21、.car_message();知识准备知识准备类与对象类与对象项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计工作任务一:总体设计工作任务一:总体设计 u项目功能描述项目功能描述u主窗体布局主窗体布局 u项目的总体结构项目的总体结构StartStart类是顶层类,它主要调类是顶层类,它主要调用用FloorFloor类来显示场地,另外类来显示场地,另外还要使用还要使用SpeedSpeed类和类和PubClassPubClass类;类;FloorFloor类调用类调用SnakeSnake类和类和BeanBean类在场地上显示蛇和豆;类在场地上显示蛇和豆;SnakeSnake类调用
22、类调用BlockBlock类来组成类来组成蛇蛇。项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计工作任务二:工作任务二:BeanBean类类 u豆(豆(BeanBean)类分析类分析在此游戏中,首先会在场地的特定位置出现一个豆,在此游戏中,首先会在场地的特定位置出现一个豆,豆要不断被蛇吃掉,当豆被吃掉后,原豆消失,又在豆要不断被蛇吃掉,当豆被吃掉后,原豆消失,又在新的位置出现新的豆。这些豆都是由豆(新的位置出现新的豆。这些豆都是由豆(BeanBean)类创类创建的对象。建的对象。1) 1)豆类的字段豆类的字段private Point origin;private Point
23、 origin;2) 2)属性:属性:public Point Originpublic Point Origin3) 3)方法:方法: public void public void Display(GraphicsDisplay(Graphics g) g) public void public void UnDisplay(GraphicsUnDisplay(Graphics g) g) 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u豆(豆(BeanBean)类实现类实现1.1.字段和属性字段和属性 注意字段和属性的类别是注意字段和属性的类别是PointPoint结
24、构类型的。结构类型的。 Point Point 结构结构 PointPoint结构表示在二维平面中定义点的整数结构表示在二维平面中定义点的整数 X X 和和 Y Y 坐标的有序对。坐标的有序对。 命名空间命名空间: :System.DrawingSystem.Drawing PointPoint结构有两个属性:结构有两个属性:X X获取或设置此获取或设置此PointPoint的的X X坐标;坐标;Y Y获取或设置此获取或设置此PointPoint的的Y Y坐标。坐标。 读取和设置属性读取和设置属性 结构变量结构变量. .属性属性; ; 如:如: pt1.X=23;/pt1.X=23;/写入属性
25、写入属性 intint z=pt1.X;/ z=pt1.X;/ 读取属性读取属性工作任务二:工作任务二:BeanBean类类 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计2.2.方法方法 1)1)DisplayDisplay方法方法 功能:在显示器上显示一个豆(实心正方形)功能:在显示器上显示一个豆(实心正方形) 设计思路:设计思路: 直接在场地(窗体)上画一个直接在场地(窗体)上画一个5 5* *5 5的实心矩形。的实心矩形。 工作任务二:工作任务二:BeanBean类类 项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计uGDI+GDI+(Graphi
26、csGraphics Device Interface Plus Device Interface Plus)是是M Microsofticrosoft的新一代二维图形系统,它是完全面向的新一代二维图形系统,它是完全面向对象的。对象的。uGDI+GDI+包括包括3 3部分:二维矢量图形绘制、图像处理部分:二维矢量图形绘制、图像处理和文字显示。要在和文字显示。要在WindowsWindows窗体中显示文字或绘窗体中显示文字或绘制图形,必须要使用制图形,必须要使用GDI+GDI+。uGDI+GDI+提供了多种画笔、画刷、图像等图形对象,提供了多种画笔、画刷、图像等图形对象,GDI+GDI+使用的各
27、种类大都包含在命名空间使用的各种类大都包含在命名空间System.DSystem.Drawingrawing中。中。知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计uC#C#中用中用GDI+GDI+画基本图形的步骤:画基本图形的步骤:创建创建GraphicsGraphics对象对象创建画笔或画刷对象创建画笔或画刷对象用用GraphicsGraphics对象方法画图对象方法画图 知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u创建创建GraphicsGraphics对象对象1 1调用某控件或窗体
28、的调用某控件或窗体的 CreateGraphicsCreateGraphics 方法来获取方法来获取对对 Graphics Graphics 对象的引用,如:对象的引用,如:Graphics g;Graphics g;g=g=this.CreateGraphicsthis.CreateGraphics();();2. 2.接收对图形对象的引用,该对象为窗体或控件的接收对图形对象的引用,该对象为窗体或控件的PaintPaint事件中事件中PainEventArgsPainEventArgs的一部分。在为控件创建绘制代的一部分。在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。码时,
29、通常会使用此方法来获取对图形对象的引用。知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计uColorColor结构结构表示一个表示一个RGBRGB颜色颜色所在的命名空间:所在的命名空间:System.DrawingSystem.Drawing可利用可利用ColorColor结构的一个对象来指定画笔、画刷和其结构的一个对象来指定画笔、画刷和其他在他在GraphicsGraphics画图表面使用的工具的颜色。画图表面使用的工具的颜色。ColorColor结构中的静态属性成员定义了很多系统颜色,结构中的静态属性成员定义了很多系统颜色,要用这些系统颜色
30、,可以直接从要用这些系统颜色,可以直接从ColorColor结构的属性中结构的属性中读取。读取。如:如:Color.Red/Color.Red/读取系统的红色读取系统的红色Color.Black/Color.Black/读取系统的黑色读取系统的黑色 知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u创建画刷创建画刷画刷是从类画刷是从类BrushBrush中派生的,从此抽象基类派生出的中派生的,从此抽象基类派生出的类定义用于填充图形形状(如矩形、椭圆形、扇形、类定义用于填充图形形状(如矩形、椭圆形、扇形、多边形和封闭路径)内部的对象和呈现文本对象
31、。最多边形和封闭路径)内部的对象和呈现文本对象。最常用的是常用的是SolidBrushSolidBrush,它的构造函数为它的构造函数为 SolidBrushSolidBrush( (颜色颜色););如用此构造函数创建一个画刷:如用此构造函数创建一个画刷:SolidBrushSolidBrush redBrushredBrush=new =new SolidBrush(Color.RedSolidBrush(Color.Red););知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计GDI+ GDI+ 坐标系统坐标系统uGDI+ GDI+ 在坐标系统中绘制直线、矩形和其他图在坐标系统中绘制直线、矩形和其他图形。您可以从各种各样的坐标系统中选择,但形。您可以从各种各样的坐标系统中选择,但默认坐标系统的原点是在左上角,并且默认坐标系统的原点是在左上角,并且 x x 轴轴指向右边,指向右边,y y 轴指向下边。默认坐标系统的度轴指向下边。默认坐标系统的度量单位是像素。量单位是像素。知识准备知识准备GDI+GDI+项目项目: :贪吃蛇游戏设计贪吃蛇游戏设计C#C#程序设计程序设计u画实心矩形(填充)方法画实心矩形(填
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Access数据查询技巧试题及答案
- 敏捷测试流程必考知识与试题及答案
- JAVA具体应用案例分析试题及答案
- 计算机二级Access学习建议试题及答案
- 计算机二级VFP考试总结与反思试题及答案
- 经济法考试真题解析试题及答案
- 试题分析的计算机二级VB试题及答案
- 嵌入式开发前景与挑战试题及答案
- 高效编码的技巧与方法试题及答案
- C语言考试实战技巧试题及答案
- 查勘定损沟通谈判技巧
- 澳大利亚民航局组织机构及分布地点
- 1000字作文方格稿纸A4打印模板直接用
- 三方合作解除协议书
- 批判教育学的流派和代表人物及其观点
- 三年级下学期音乐复习题
- 农网配电营业工复习题
- 电气毕业论文-基于-plc自动门控制设计
- 炼钢厂风险分级管控清单连铸区域
- 新时期农村初中语文教学中渗透心理健康教育的研究 论文
- 女性中医保健智慧树知到答案章节测试2023年暨南大学
评论
0/150
提交评论