单击鼠标就会生成一个彩色的反弹球

"""
单击鼠标就会生成一个反弹球,这是用arcade模块制作的反弹球,新建了一个球类。
"""

import arcade
import random

# 屏幕尺寸
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 600

class Ball:
    """
    记录球的坐标与向量及大小的球类。
    """
    def __init__(self):
        self.x = 0
        self.y = 0
        self.change_x = 0
        self.change_y = 0
        self.size = 0

def make_ball():
    """
    生成一个球的函数.
    """
    ball = Ball()

    # 球的大小
    ball.size = random.randrange(10, 30)

    # 球的随机坐标
    ball.x = random.randrange(ball.size, SCREEN_WIDTH - ball.size)
    ball.y = random.randrange(ball.size, SCREEN_HEIGHT - ball.size)

    # 球的移动向量,代表着移动速度和方向
    ball.change_x = random.randrange(-2, 3)
    ball.change_y = random.randrange(-2, 3)

    # 球之颜色
    ball.color = (random.randrange(256), random.randrange(256), random.randrange(256))

    return ball


class MyGame(arcade.Window):
    """ 游戏的主类"""

    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "python街机模块多个反弹球演示_译者:李兴球")
        self.ball_list = []
        ball = make_ball()
        self.ball_list.append(ball)

    def on_draw(self):
        """
        渲染屏幕
        """

        # 先要调用这个命令才重画球
        arcade.start_render()

        for ball in self.ball_list: # 每个球都是通过画一个圆形表示的
            arcade.draw_circle_filled(ball.x, ball.y, ball.size, ball.color)

        # 放置球的个数文本
        output = "球的数量: {}".format(len(self.ball_list))
        arcade.draw_text(output, 10, 20, arcade.color.WHITE, 14)

    def update(self, delta_time):
        """ 移动所有球 """
        for ball in self.ball_list:
            ball.x += ball.change_x
            ball.y += ball.change_y

            if ball.x < ball.size:
                ball.change_x *= -1

            if ball.y < ball.size:
                ball.change_y *= -1

            if ball.x > SCREEN_WIDTH - ball.size:
                ball.change_x *= -1

            if ball.y > SCREEN_HEIGHT - ball.size:
                ball.change_y *= -1

    def on_mouse_press(self, x, y, button, modifiers):
        """
        单击鼠标指针生成一个大小不同颜色不同起始位置不同的球
        """
        ball = make_ball()
        self.ball_list.append(ball)


def main():
    MyGame()
    arcade.run()


if __name__ == "__main__":
    main()

单击鼠标就会生成一个反弹球