转 按键5级考试题解
本帖最后由 love52120 于 2013-3-30 15:43 编辑解析五级认证的画圆、方的题目
//写一个脚本,要求:让鼠标在画图工具里使用铅笔工具,由脚本执行鼠标命令,实现一边画圆一边画方的操作效果。
//提示:合理结构,禁止使用多线程方式同步执行。
//下面首先运行画图工具
这里的要求“实现一边画圆一边画方的操作效果”应该是同时进行画方和画圆,但是有不能使用多线程,在一开始感到很纠结,过后的两天里有一天晚上喝醉酒了,半夜睡醒,无意中想到可以用画圆上的一点接着画方上的一点,这样就可以使得圆方看起来是同时画的,也符合不适用多线程的要求。由于官方是不赞许发答案的,所以下面我将这个程序的主要部分运用注释给大家讲解一下。
首先是运行画板工具,然后选择画笔,因为是比较通用的写法,这里就省略了。
//圆心坐标
r = 100
//圆半径
x0 = 350+ux
y0 = 300+uy
//矩形的左竖最下点
l = 2
k = 512
//决定像素距离的l和k的比值须多加调试才能使得画圆和画方基本同时完成.否则将使得画圆不能全部完成。
n = 0
u = 0
i = 0
o = 0
p = 0
//为了避免跳转的时候不能获取到n,u,i,o,p变量的值,先给其赋初始值。
//这里是左边画圆,右边画方。下面将利用标记跳转的方式使得画圆和画方同时进行。
//因为矩形(正方形)是分段画的,所以这里也将圆等分成4个部分来画。
Rem 画圆1
While n < 3.1415926 /2
x = x2 + r * cos(n)
y = y2 - r * sin(n)
MoveTo x, y
LeftClick 1
n = n + l / r
Goto 画方1
//标记必须在n,u,i,o,p变量的自加后,这样才能使得n,u,i,o,p变量自增。
Wend
Rem 画圆2
While n >= 3.1415926 /2 and n < 3.1415926
x = x2 + r * cos(n)
y = y2 - r * sin(n)
MoveTo x, y
LeftClick 1
n = n + l / r
Goto 画方2
Wend
Rem 画圆3
While n >= 3.1415926 and n < 3.1415926*3 /2
x = x2 + r * cos(n)
y = y2 - r * sin(n)
MoveTo x, y
LeftClick 1
n = n + l / r
Goto 画方3
Wend
Rem 画圆4
While n >= 3.1415926*3 /2 and n<301415926*2
x = x2 + r * cos(n)
y = y2 - r * sin(n)
MoveTo x, y
LeftClick 1
n = n + l / r
Goto 画方4
Wend
//这里将矩形分割成四个部分的直线方程分段画
//下面是画方的左竖
Rem 画方1
While u<200
x1 = x0
y1 = y0 - u
MoveTo x1, y1
LeftClick 1
u = u + k / 200
Goto 画圆1
Wend
//下面是画方的上横
Rem 画方2
Whilei<200
x1 = x0+i
y1 = y0-200
MoveTo x1, y1
LeftClick 1
i = i + k / 200
goto 画圆2
Wend
//下面是画右竖
Rem 画方3
Whileo<200
x1 = x0+200
y1 = y0-200 + o
MoveTo x1, y1
LeftClick 1
o = o + k / 200
Goto 画圆3
Wend
//下面是画方的下横
Rem 画方4
Whilep<200
x1 = x0 + 200 - p
y1 = y0
MoveTo x1, y1
LeftClick 1
p = p + k / 200
Goto 画圆4
Wend
//这里可以加一句关闭画板工具的语句
MsgBox "圆、方已经画完,脚本已经停止"
我开始是将画方分成四个部分画的,顺序是左竖、上横、右竖、下横,中间插入画圆的点,但是后来发现这个比较困难,我就把画圆也相应的均等分成四个四分之一部分,再配合使用标记跳转,在画圆和画方之间相互跳转。这里可以通过设定某些值使得画圆方的线条更加密集。花了大半夜清醒的时间终于完成了这道题目的解答,这里分享给大家做个参考,希望对不理解的朋友有所帮助。
沙发{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}
页:
[1]