我是靠谱客的博主 务实御姐,最近开发中收集的这篇文章主要介绍2.3 Python模式Processing编程入门,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

修改日志:

  • 2020.9.30 精修完成

2.3 pyprocessing入门

基本程序结构

def setup():
    pass

def draw():
    pass

这是所有程序的基础结构(不要试图抛弃这两个函数而构建processing程序),其中的两个函数(setup 和 draw) 和普通函数相比有很多特殊性。

当你构建程序的时候,只需在空缺中填入自己的语句(注意缩进)。setup中的内容将会被开始时执行一次,然后循环不断地多次执行draw内的内容。

像下面这样,通过将print放在程序框架的不同位置,就会有不同的输出:

def setup():
    print("setup")

def draw():
    print("draw")
    
print("hello")

运行结果:
在这里插入图片描述

运行上面的程序,你会发现 hello 将会被最先输出。这是因为之前的setup 和 draw 都是函数的定义,但是这两个函数在程序执行到末尾执行到最后的时候,都并未执行(如果你有一些编程基础,马上就会发现Processing是不需要主函数的,而且诡异的事情还包括setup 和 draw并没有被其他代码段调用却仿佛被“幽灵一样的东西”拿走并执行了)。

那么,setup 和 draw 究竟是在何时以如何的方式执行呢?

答案是在“从上到下运行完所有可见语句之后”后,setup 和 draw就开始被Processing自动执行。所以,其实processing的工作方式是这样的:

def setup():
    print("setup")

def draw():
    print("draw")
    
print("hello")

"PyProcessing “自动而隐蔽地”调用 setup() 和 draw() 函数"

这样的编程框架是Processing的基本工作方式,也是Processing程序和其他Python程序或者Java程序最大的不同点。在这个框架之后,有很多关于程序交互的底层逻辑被封装了起来,从而让整体程序看上去非常简洁。

Python代码缩进及其快捷编辑

在一些编程语言中(如C语言),代码的行缩进只有视觉上的作用,可以帮助人阅读代码,但是对于执行代码的机器来说却没有实质性的作用,有没有缩进,缩进有没有错误,都不影响程序的运行。但是,python中缩进是语法的一部分,也就是会对程序的执行过程产生实际影响,所以请时刻注意代码的缩进。

像是函数内部要统一缩进一次,以及后面要学习的判断和循环语句的内部也要缩进。笼统地说,缩进起到了给代码“分区”的作用。通过缩进,人能够清晰地看出代码的区域结构,机器也才能正确地执行程序的意图。

本质上,Python中的缩进就是一行代码文字开始前的四个空格。但是,大部分编辑器(包括Processing IDE)都支持对缩进的快捷编辑。对一行或者一段代码增加缩进或者减少缩进的快捷键是鼠标选中该段或者该行后按 Tab 键 以及 Shift + Tab 。

学习size 和 background 内置函数

学习第一个Processing内置函数:size()

def setup():
    size(800, 600)  # 创建一个画图的区域,两个参数分别表示长和宽

def draw():
    pass

size函数将会调整画图区域的大小。

还有另外一个常见的函数 background:

def setup():
    size(800, 600)  # 创建一个画图的区域,两个参数分别表示长和宽
    background(200, 200, 200)

def draw():
    pass

在这些函数定义中,我们使用了Processing内置的函数,例如size和background。 这些功能已经由Processing的开发者定义,因此我们实际上不知道其中包含什么代码。 但是,我们实际上并不需要掌握这些知识,因为我们关心的只是他们的功能以及我们应该如何使用它们。(在Processing编辑器中,内置变量与内置函数都会被用不同的颜色显示,可以帮助你理清自己的代码)

函数使我们能够轻松地执行复杂的任务。

通过使用size函数,我们无需知道在页面中创建画布需要进行哪些工作。 这些细节对我们来说是隐藏的,抽象的。 我们只需要知道如何调用此函数使其对我们有用即可。

最后,我们将在draw函数定义中调用另一个函数,以在页面上绘制一个矩形。

为了绘制一个矩形,我们将利用一个叫做rect的函数。 rect函数要求我们为其提供四个输入值:画布绘制区域内矩形左上角的x和y位置,以及矩形的宽度和高度值。
在不了解processing中坐标如何工作的情况下,我们先试着向rect函数提供x值为50,y为100,宽度为200和高度为100的参数并使用它。

def setup():
    size(800, 600)  # 创建一个画图的区域,两个参数分别表示长和宽
    background(200, 200, 200)

def draw():
    rect(50, 100, 200, 100)

坐标系,画方和画圆

img

解释要点:两个轴,远点,两个轴的方向,长度“1”

下面画一个矩形:

def setup():
    size(800, 300)  
    background(220, 220, 220)

def draw():
    rect(400, 150, 100, 100)

然而我们其实是想把正方形画在屏幕中间:

如果这不是您想要的行为,我们可以调用另一个名为rectMode的processing内置函数,并为其提供参数值CENTER以更改在程序中绘制矩形的方式(清单2-14)。 由于此功能更像是与设置和初始化相关的功能(一次设置,永久生效“如果后续没有再次调用并设置新参数”),因此我们将其置于setup函数中。

def setup():
    size(800, 300)  
    background(220, 220, 220)
    rectMode(CENTER)

def draw():
    rect(400, 150, 100, 100)

运行结果:
在这里插入图片描述
processing中还有一个椭圆函数(ellipse)来绘制椭圆。 椭圆的工作原理与rect函数非常相似。 首先,两个参数是椭圆中心的x和y坐标,第三个参数是水平半径,第四个参数是垂直半径。 因此,为了能够使用椭圆函数绘制圆,我们需要为其提供相等的水平和垂直半径值(见下面的程序)。
如果您正在尝试将这些形状绘制到屏幕上,那么您可能已经注意到,每当调用形状函数时,它都会被覆盖在已经存在的图形的上面。 我们可以更改函数调用的顺序以影响形状的堆叠顺序。

def setup():
    size(800, 300)  
    background(220, 220, 220)
    rectMode(CENTER)

def draw():
    rect(400, 150, 100, 100)
    ellipse(350, 120, 100, 100)

运行结果:(圆是后画上去的,所以覆盖到了方形的上方)
在这里插入图片描述

这里要介绍的最后一种绘图函数是画线函数(line)。 顾名思义,line函数在屏幕上画一条线。
我们需要为line函数提供四个参数:起始x和y坐标以及结束x和y坐标。 自己尝试一下line函数, 它将使您很好地了解Processing中的坐标系究竟是怎样的。 例如,您可以尝试绘制一个覆盖整个画布的“X”形。

总结

在本章中,我们达到了Processing的快速入门,并实际上在屏幕上绘制了形状。

我们已经看到,我们需要在两个函数定义块中编写代码,两个函数定义块与名称setup和draw一起使用。 任何只需要执行一次的东西都会放在setup函数下,而我们可能要进行动画处理或与之交互的任何东西都将进入draw函数。

Processing需要我们将自己的代码写入这两个函数。 它不是通用的编程原理,约定或类似的东西。 我们本来可以使用不需要这种代码结构的其他库。 此要求与Processing自身的工作方式有关。 不管何时,我们都需要从这两个函数定义开始写出所有Processing程序。

像这样的代码,需要很少或没有改动地重复编写,被称为样板代码。 拥有很多样板从来都不是一件好事,因为我们发现自己不得不重复多次重复自己的工作,但是现在样板代码的数量还没到过分的程度。

在这些函数定义中,我们利用了Processing库附带的函数,例如size,background和一些形状函数(例如rect)。 如前所述,函数是通用的编程结构,可让我们将代码捆绑在一起以实现可重用性。 函数也使我们摆脱了很多复杂性。

我们不需要知道函数内部的工作原理; 我们只需要知道如何使用它。 我们绝对不知道size如何在电脑上实际创建一块用于画图的区域。 只要我们知道如何使用此函数就没有关系。 想开汽车,我们不一定需要知道内燃机如何驱动。 我们只需要知道如何使用方向盘,踏板等与汽车交互即可。这种相似的想法也适用于学习函数。

稍后,我们还将创建函数,以管理程序的复杂性并创建可重用的代码段。

练习

尝试写一个能够画出和下图一样的画面的程序:

在这里插入图片描述

最后

以上就是务实御姐为你收集整理的2.3 Python模式Processing编程入门的全部内容,希望文章能够帮你解决2.3 Python模式Processing编程入门所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部