Python趣味创意编程
上QQ阅读APP看书,第一时间看更新

首先绘制如图2-22所示的两个圆圈,并让较小的黑色圆圈跟随鼠标位置移动:

sketch_2_7_1.pyde

 1    def setup():
 2        size(600, 600)
 3    
 4    def draw():
 5        background(255)
 6        fill(235)
 7        circle(300,300,200)
 8        fill(0)
 9        circle(mouseX,mouseY,100)

图片 262

图2-22

为了让黑色圆圈的移动范围不超出灰色圆圈的范围,可以使用Processing提供的map()函数:

sketch_2_7_2.pyde

 1    def setup():
 2        size(600, 600) 
 3    
 4    def draw():
 5        background(255)
 6        fill(235)
 7        circle(300,300,200)
 8        fill(0)
 9        x = map(mouseX,0,width,260,340)
10        y = map(mouseY,0,height,260,340)
11        circle(x,y,100)

鼠标水平方向坐标mouseX的取值范围为[0,width];为了防止黑色小圆圈超出范围,设定其圆心的x坐标范围为[260,340]。map(mouseX,0,width, 260,340)函数即把范围[0,width]内的mouseX等比例的映射到范围[260,340]内,如图2-23所示。

对于纵坐标,map(mouseY,0,height,260,340)函数即把范围[0,height]内的mouseY等比例的映射到范围[260,340]内。

图片 261

图2-23

提示

当读者不熟悉Processing的某些函数时,可以点击“Help”—“References”获取帮助,如图2-24所示。

图片 260

图2-24

Processing会在浏览器中打开帮助网页,如图2-25所示。

图片 259

图2-25

读者可以找到“map()”,点击查看详细的帮助文档,如图2-26所示。

也可以点击网页左侧的“Tutorials”或“Examples”,查看更多的帮助、示例代码信息。

图片 258

图2-26

在sketch_2_7_2.pyde基础上添加一个圆圈,可以实现眼珠随鼠标转动的效果(如图2-27所示):

sketch_2_7_3.pyde

 1    def setup():
 2        size(600, 600)
 3        
 4    def draw():
 5        background(255)
 6        fill(180)
 7        circle(300,300,300)
 8        fill(235)
 9        x1 = map(mouseX,0,width,260,340)
10        y1 = map(mouseY,0,height,260,340)
11        circle(x1,y1,200)
12        fill(0)
13        x2 = map(mouseX,0,width,220,380)
14        y2 = map(mouseY,0,height,220,380)
15        circle(x2,y2,100)

图片 257

图2-27