### 蓝天排松鸟飞图_带装饰器的绘画

```"""蓝天排松鸟飞图_演示arcade装饰器的用法。

"""

# 导入模块
import random

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

def draw_background(window):
"""
本函数画地面和蓝天
"""
# 在屏幕三分之二的上面区域画蓝天
arcade.draw_rectangle_filled(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 2 / 3,
SCREEN_WIDTH - 1, SCREEN_HEIGHT * 2 / 3,

# 在屏幕靠下三分之一画绿地
arcade.draw_rectangle_filled(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 6,
SCREEN_WIDTH - 1, SCREEN_HEIGHT / 3,

def draw_bird(x, y):
"""
画一只鸟
"""

def draw_pine_tree(center_x, center_y):
"""
在指定坐标画一颗松树

Args:
:center_x: x position of the tree center.
:center_y: y position of the tree trunk center.
"""
# 画树杆

tree_bottom_y = center_y + 20

# 画三角形
point_list = ((center_x - 40, tree_bottom_y),
(center_x, tree_bottom_y + 100),
(center_x + 40, tree_bottom_y))

def draw_birds(window):    # 画所有的鸟
for bird in window.bird_list:

# 画这个鸟
draw_bird(bird[0], bird[1])

def draw_trees(window):

# 画上排松树
for x in range(45, SCREEN_WIDTH, 90):
draw_pine_tree(x, SCREEN_HEIGHT / 3)

# 画下排松树
for x in range(65, SCREEN_WIDTH, 90):
draw_pine_tree(x, (SCREEN_HEIGHT / 3) - 120)

def create_birds(window):
"""这里只是创建一个列表，列表里装着一些坐标对。这些坐标都是随机的，给鸟用。
This, and any function with the arcade.decorator.init decorator,
is run automatically on start-up.用了这个装饰器后会在启动时自动运行。
"""

window.bird_list = []
for bird_count in range(10):
x = random.randrange(SCREEN_WIDTH)
y = random.randrange(SCREEN_HEIGHT / 2, SCREEN_HEIGHT)
window.bird_list.append([x, y])

def animate_birds(window, delta_time):
"""
每60分之一秒运行一次，这里只是改变坐标。 Do not draw anything
in this function.
"""
change_y = 0.3

for bird in window.bird_list:
bird[0] += change_y
if bird[0] > SCREEN_WIDTH + 20:
bird[0] = -20

def draw(window):
"""
每60分之一秒运行一次，这里重画所有图形，并不改变坐标。
"""
# 调用所有画的函数。
draw_background(window)
draw_birds(window)
draw_trees(window)

if __name__ == "__main__":