第十一课:可移动的风车
学习目标
1.了解Shapes对象,能用Shapes对象编写简单的动画程序。
2.了解Program对象,能用Program对象优化动画程序的运行效果。
3.继续学习编写事件驱动的程序。
教学重难点
1、本课的教学重点是:了解Shapes对象的各种操作,并能根据Shapes对象的各种操作的英文含义,自主地选择Shapes对象的操作来编写动画程序;www.21-cn-jy.com
2、教学的难点是在动画的设计过程中所涉及的坐标运算。
一、风车是由叶子和基座组成,画移动的风车程序比较长,可以分成如下几个步骤来完成。
? ? 第一步:画静止的风车。
掌握Shapes.AddRectangle()和Shapes.
Move()命令的使用方法。
? ? 第二步:在程序中加上响应鼠标事件的命令。
? ? 第三步:编写让风车叶片旋转的程序。
通过修改Shapes.Rotate()和
Program.Delay()命令的参数。
? ? 第四步:编写点击鼠标事件发生时响应的子程序onKD。
leaf=shapes.addrectangle(200,10)
在图形窗口添加一个宽200、高10的实心矩形,图形取名leaf
shapes.move(leaf,200,200)
把图形leaf移到(200,200)处
?i=1
用i表示旋转的角度,初值为1?
While "true"
无限循环?
shapes.rotate(leaf,i)
将图形leaf旋转到i度的位置
i=i+1
旋转的角度增加1度
endwhile
循环标志
风车的叶片和基座的位置需要根据图片经过计算获得。
二、Shapes对象
1、例如:下面的程序可以画一个不断旋转的风车叶 leaf=shapes.addrectangle(200,10)21世纪教育网版权所有
shapes.move(leaf,200,200)
?i=1
While "true"
shapes.rotate(leaf,i)
?i=i+1
endwhile
2、Shapes 【对象】
Shape 对象允许您添加移动和旋转 GraphicsWindow 中的形状。—Shapes.AddEllipse 【操作】以特定的宽和高增加一个椭圆。—Shapes.AddImage ?【操作】以图形的方式添加一个图像以使其可以移动,动画或旋转。—¬Shapes.AddLine? 【操作】在特定的点之间增加一条线。—Shapes.AddRectangle 【操作】以特定的长和宽增加一个矩形。—Shapes.AddText? 【操作】以图形的方式添加一些文本以使其可以移动,动画或旋转。—Shapes.AddTriangle? 【操作】增加一个由特定的点表示的三角形。—Shapes.Animate? 【操作】移动特定名字的图形到新的位置。—Shapes.GetLeft? 【操作】获得特定名字的图形左坐标值。—Shapes.GetOpacity ?【操作】获得图形的透明度。—Shapes.GetTop 【操作】获得特定名字的图形顶坐标值。—Shapes.HideShape 【操作】隐藏一个已添加的图形。—Shapes.Move? 【操作】把特定名字的图形移动到新的位置。—Shapes.Remove 【操作】从 GraphicsWindow 移除一个图形。—Shapes.Rotate 【操作】旋转特定名字的图形至特定角度。—Shapes.SetOpacity ?【操作】设置图形的透明程度。 —Shapes.SetText? 【操作】设置文本图形的文本。—Shapes.ShowShape ?【操作】显示先前隐藏的图形。—Shapes.Zoom 【操作】使用特定的缩放尺来缩放图形。最小为 0.1 最大为 20。
三、program对象
程序的类提供了帮助器来控制程序的执行。??
—Program.ArgumentCount 【属性】获得传递给此程序的命令行参数的个数。—Program.Directory 【属性】获得程序执行目录。—Program.Delay 【操作】延迟程序执行特定的毫秒数。—Program.End() 【操作】结束程序。—Program.GetArgument ?【操作】返回传递到此程序的特定参数。21教育网
修改程序,让风车叶片旋转的效果达到等一会儿再转到下一个位置
四、练习:
1.画一个拉大幕的程序。
程序如下:
For x=0 To GraphicsWindow.Width
GraphicsWindow.PenColor =GraphicsWindow.GetRandomColor()21cnjy.com
GraphicsWindow.DrawLine(x,0,x,GraphicsWindow.Height)21·cn·jy·com
Program.Delay(10)
EndFor
2.画一个不断增大的太阳。
程序如下:
GraphicsWindow.BrushColor="red"
GraphicsWindow.PenColor="red"
SUN=Shapes.AddEllipse(10,10)
Shapes.Move(SUN,300,150)
For i=1 To 20 Step 0.1
Shapes.Zoom(SUN,i,i)
Program.Delay(10)
EndFor
程序也可以是这样的:
GraphicsWindow.BrushColor="red"
GraphicsWindow.PenColor="red"
SUN=Shapes.AddEllipse(10,10)
Shapes.Move(SUN,300,150)
For i=1 To 20 Step 0.001
Shapes.Zoom(SUN,i,i)
EndFor