"""
反弹矩形示列程序。本程序演示了反弹矩形的基本原理。给函数增加了属性,这是一个新功能。
"""
import arcade
# 屏幕尺寸
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600
# 矩形尺寸
RECT_WIDTH = 50
RECT_HEIGHT = 50
def on_draw(delta_time):
"""
使用这个函数重画所有
"""
# 开始渲染
arcade.start_render()
# 画一个矩形,所有的颜色列表请看:
# https://www.lixingqiu.com/?p=40
arcade.draw_rectangle_filled(on_draw.center_x, on_draw.center_y,
RECT_WIDTH, RECT_HEIGHT,
arcade.color.ALIZARIN_CRIMSON)
# 改变矩形位置,根据dx和dy及时间
on_draw.center_x += on_draw.delta_x * delta_time
on_draw.center_y += on_draw.delta_y * delta_time
# 是否碰到左右或上下边缘
if on_draw.center_x < RECT_WIDTH // 2 \
or on_draw.center_x > SCREEN_WIDTH - RECT_WIDTH // 2:
on_draw.delta_x *= -1
if on_draw.center_y < RECT_HEIGHT // 2 \
or on_draw.center_y > SCREEN_HEIGHT - RECT_HEIGHT // 2:
on_draw.delta_y *= -1
# 下面是函数特定变量,给它们设定初始值,在函数持续中使用
#
# 在其它计算机语言,可以定义静态变量实现同样的函数功能
#
# 以后可以用类来生成多个对象,这时先这么写。
on_draw.center_x = 100 # 初始化x坐标
on_draw.center_y = 50 # 初始化y坐标
on_draw.delta_x = 115 # 初始化x速度
on_draw.delta_y = 130 # 初始化y速度
def main():
# 打开一个窗口
arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, "反弹矩形示例:译者:李兴球")
arcade.set_background_color(arcade.color.WHITE)
# 计划任务安排,定时器功能
arcade.schedule(on_draw, 1 / 80)
# 运行程序
arcade.run()
if __name__ == "__main__":
main()