""" 反弹矩形示列程序。本程序演示了反弹矩形的基本原理。给函数增加了属性,这是一个新功能。 """ 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()