资源描述
Click to edit Master title,Click to edit Master text,Second level,Third level,Fourth level,Fifth level,*,C#,程序设计,项目:贪吃蛇游戏设计,项目:贪吃蛇游戏设计,工作任务八:主界面(,Start,)类,工作任务八:主界面(,Start,)类,一、 主界面(,Start,类)分析,此类继承自系统类,,,是本程序的主窗体。,Start,类主要用了继承来的字段、属性、方法和事件,我们只是在,Start,类中通过添加控件及设置控件的属性添加了对象字段和对象属性字段。,说明:通过向窗体上添加控件,系统会自动向窗体类中添加相应的对象字段,如本程序的,mainMenu1,、,timer1,、,label1,等,在类中对应的字段如下:,private mainMenu1;,public System.Windows.Forms.Timer timer1;,private System.Windows.Forms.Label label1;,二、主界面(,Start,)类实现,timer,控件,实现在用户定义的时间间隔引发事件的计时器此计时器最宜用于,Windows,窗体应用程序中,并且必须在窗口中使用。,1)控件的属性,Enabled,属性,获取或设置计时器是否正在运行。,如果计时器当前处于启用状态,则为,true;,否则为,false。,默认为,false。,Interval,属性,获取或设置计时器开始计时之间的时间(以毫秒为单位)。,计时器每次开始计时之间的毫秒数。该值不小于 1。,备注:,若要获取该时间间隔的秒数,将此数字除以 1,000。,2),Tick,事件,当指定的计时器间隔已过去而且计时器处于启用状态时发生。,如果需要自动运行,常用此控件。,mainMenu,控件,MainMenu,控件表示窗体菜单结构的容器。菜单由表示菜单结构中单个菜单命令的,MenuItem,对象组成。每个,MenuItem,可以成为应用程序的命令或其他子菜单项的父菜单。若要将,MainMenu,绑定到将显示它的,Form,,请将,MainMenu,分配给,Form,的,Menu,属性。,进入每个,MenuItem,命令的单击事件方法与其他控件相同,通过双击此菜单项。,窗体的,KeyDown,事件方法,键被按下时发生。,事件处理程序接收一个,KeyEventArgs,类型的参数,它包含与此事件相关的数据。其中,KeyValues,获取按键的键值。,1),窗体的,KeyDown,事件方法,功能:根据按键情况,调用蛇的,TurnDirection,方法,改变蛇的运行方向。,时间(,timer1,),控件的,Tick,事件,功能:显示场地,Floor,对象(使蛇运动);显示游戏等级和分数;判断是否玩到了通关和蛇是否死亡。,设计思路,自选级别没有等级,其他级别根据分数是,50,的多少倍,计算级别,如果不是现在等级,保存各修改等级。,若分数大于等于,550,,说明玩到了通关,停止游戏,显示恭喜消息框。,调用,CheckSnake,方法,判断蛇是否死亡,如果死亡,停止游戏。,蛇的自动运行是由系统每隔一定时间自动调用此方法,当时间控件,(,timer),的,Enable,属性设置为,true,时,时间控件可用,设置为,false,时,时间控件不可用。,通过下面语句启动游戏和停止游戏。,timer1.Enable=true;/,启动游戏,timer1.Enable=false;/,停止游戏,3,各菜单事件方法,1)“,开始,/,重新开始,”,菜单,功能:游戏开始或重新开始游戏;若本菜单项为“开始”,改为“重新开始”;并且“暂停”菜单项可用。,设计思路及步骤:,设置时间控件(,timer1,),的,Enable,属性为,true,。,判断菜单文字是否为“开始”用语句:,menuItem2.Text=,“,开始”;设置“暂停”菜单项的,Enabled,属性为,true,,,使菜单项可用。,当菜单项文字为“重新开始”时,调用,floor,对象的,ReSet,方法重新开始游戏。,2) “,暂停,/,继续,”,菜单,功能:设置程序暂停运行或继续运行。,3),“退出”菜单,功能:退出程序,用窗体的,Close,方法。,4),“级别”菜单项的“第,N,级”子菜单,功能:此菜单项的第一级到第五级全是设置游戏级别。,设计思路,设置时间控件的,Interval,属性为一定的值,游戏级别和分数,然后显示出来。,5),“自定义速度”子菜单,功能:通过显示自定义速度(,Speed,),窗体,设置游戏的速度。,设计思路,设置游戏速度时,游戏要停下来,设置好后继续;创建,Speed,实例,模式显示它;设置好速度值后把速度赋给,PubClass,类的,kk,静态属性保存,并设置时间控件,(,timer),的,Interval,属性。,非模式窗体和模式窗体的区别,创建新非模式窗体后,立即返回,且没有在当前活动窗体和新窗体间建立任何关系,即在保持新窗口的情况下关闭(或最小化)现有窗体或在保留现有窗体情况下关闭(或最小化)新窗口,都是可以的。,创建模式窗体后,只有当建立的新窗口关闭之后,原有窗体才能重新获得控制权。即如果不关闭新窗口,将无法对原活动窗口进行任何操作。对新窗口进行的最小化、还原将会和原窗口一起进行,但是新窗口的关闭对原窗口没有影响。,需要注意的是,不管是何种情况,只要主窗体被关闭了,或主程序结束了,那么将会关闭所有窗体,不管它是模式还是非模式。,窗体调用,任何窗体(派生于基类,Form,的类),都可以以两种方式进行显示。,/非模式窗体,From qform=new Form();();,/,模式窗体,Form qform=new Form();();,6),“帮助”子菜单,功能:在一个消息框中显示帮助信息。,问题探究,本章学习了使用类和对象、,GDI+,绘图来创建项目。,类是面向对象程序设计的一个基本概念,是对一组类似的对象的一般化描述,它包括:字段、属性、方法和事件几类成员。类是创建对象的模板,由类创建对象,可由下式表示它们的关系。,具体化(创建),类,对象,抽象,字段是描述类特征的成员,如果需要描述类的哪方面的特征,就要设置一个相应的字段;,属性是为了访问隐藏数据(字段)的,如果字段的数据需要在类外访问,就要定义相应的属性;,方法是类能做的事情;事件是对象接受外部操作而发生的动作。,类成员有非静态和静态之分,非静态成员属于对象,对象名,.,成员名,静态成员属于类成员,类名,.,成员名。,构造函数,构造函数的重载,如果声明类时不包含任何构造函数,系统会给它创建一个默认的空构造函数,如果声明类时创建了一个构造函数,默认的空构造函数就没有了,需要的话就要声明一个。,GDI+,为,Windows,应用程序开发提供了一组用于图形图像编程的类、结构和枚举。用,GDI+,绘图的基本步骤是:,创建,Graphics,对象;,创建画笔或画刷对象,并定义颜色;,用,Graphics,对象方法画图。,绘制空心图形要用画笔,绘制实心图形要用画刷。,另外往窗体上增加菜单用,mainMenu,控件;控制系统自动运行要用,timer,控件;枚举集合中的所有成员可用,IEnumerator,接口对象。,
展开阅读全文