在考生文件夹下有一个工程文件sjt5.vbp,在其窗体中有一个实心圆。程序运行时,当用鼠标左键单击窗体任何空白位置时,实心圆则向单击位置直线移动;若用鼠标右键单击窗体,则实心圆停止移动。窗体文件中已经给出了全部控件,但程序不完整。
要求:请去掉程序中的注释符,把程序中的改为正确的内容,使其能正确运行,不能修改程序的其他部分和控件属性。最后将修改后的文件按原文件名存盘。
参考答案:[操作步骤]
步骤A:打开本题工程文件。
步骤B:打开代码编辑窗口,去掉程序中的注释符,将问号改为正确的内容。
参考答案:(阴影部分是需考生填入的内容)
Dim stepy As Integer ’纵向移动增量
Dim Stepx As Integer ’横向移动增量
Const LEFT_BUTTON=A
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim x0 As Integer, y0 As Integer, a As Single, radius As_Integer
radius=ShapeA.Width/B ’圆的半径
If Button=LEFT_BUTTON Then
’单击鼠标左键移动
x0=ShapeA.Left+radius ’圆心的x坐标
y0=ShapeA.Top+radius ’圆心的y坐标
If x=x0 Then’垂直移动
stepy=Sgn(y-y0)*E0
Stepx=0
Else’倾斜移动
a=(y-y0)/(x-x0) ’斜率
Stepx=Sgn(x-x0)*E0
Stepy=a*stepx
’通过stepx确定stepy的值
If Abs(stepy)>Abs(stepx)Then
stepy=Sgn(y-y0)*E0
stepx=stepy/a
End If
End If
TimerA.Enabled=True ’单击鼠标左键则触发Timer事件
Else
TimerA.Enabled=False ’单击鼠标右键则停止Timer事件
End If
End Sub
Private Sub TimerA_Timer()
ShapeA.Move ShapeA.Left+stepx, ShapeA.Top+stepy移动shapeA
End Sub
步骤C:调试并运行程序,关闭程序后按题目要求存盘。
解析:[考点] 本题考点有:形状控件的Width、Left和Top属性,形状控件的Move方法,Abs()函数,sgn()函数以及坐标变量。
通过鼠标左键单击位置的坐标及圆心的坐标确定一条直线,并沿着这条直线移动,通过计算这条直线的斜率,得知水平位移和竖直位移,再通过形状控件的Move方法、Left和Top属性实现形状控件位置的移动。
sgn(x)函数返回x的正负号,如果x为正数,返回1;如果为负数,返回-1;如果为0,则返回0。
语句比较复杂,要耐心地读懂程序,然后再做就很简单了。