python街机游戏模块反弹矩形示列程序

"""
反弹矩形示列程序。本程序演示了反弹矩形的基本原理。给函数增加了属性,这是一个新功能。

"""

import arcade
 

# 屏幕尺寸
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600

# 矩形尺寸
RECT_WIDTH = 50
RECT_HEIGHT = 50


def on_draw(delta_time):
    """
    使用这个函数重画所有
    """

    # 开始渲染
    arcade.start_render()

    # 画一个矩形,所有的颜色列表请看:
    # http://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()