""" 这个简单的例子演示如何用键盘操作小球 """ import arcade SCREEN_WIDTH = 640 SCREEN_HEIGHT = 480 SCREEN_TITLE = "键盘操作小球示例 _译:李兴球" MOVEMENT_SPEED = 3 class Ball: def __init__(self, position_x, position_y, change_x, change_y, radius, color): # 定义球类的坐标,方向向量和半径与颜色 self.position_x = position_x self.position_y = position_y self.change_x = change_x self.change_y = change_y self.radius = radius self.color = color def draw(self): """ 画球. """ arcade.draw_circle_filled(self.position_x, self.position_y, self.radius, self.color) def update(self): # 移动球 self.position_y += self.change_y self.position_x += self.change_x # 碰到边缘就停止移动 if self.position_x < self.radius: self.position_x = self.radius if self.position_x > SCREEN_WIDTH - self.radius: self.position_x = SCREEN_WIDTH - self.radius if self.position_y < self.radius: self.position_y = self.radius if self.position_y > SCREEN_HEIGHT - self.radius: self.position_y = SCREEN_HEIGHT - self.radius class MyGame(arcade.Window): def __init__(self, width, height, title): # 调用父类方法创建窗口 super().__init__(width, height, title) # 隐藏鼠标 self.set_mouse_visible(False) arcade.set_background_color(arcade.color.ASH_GREY) # 创建一个球的实例 self.ball = Ball(50, 50, 0, 0, 15, arcade.color.AUBURN) def on_draw(self): """ 当画时调用这个方法 """ arcade.start_render() self.ball.draw() def update(self, delta_time): self.ball.update() def on_key_press(self, key, modifiers): """ 按键检测 """ if key == arcade.key.LEFT: self.ball.change_x = -MOVEMENT_SPEED elif key == arcade.key.RIGHT: self.ball.change_x = MOVEMENT_SPEED elif key == arcade.key.UP: self.ball.change_y = MOVEMENT_SPEED elif key == arcade.key.DOWN: self.ball.change_y = -MOVEMENT_SPEED def on_key_release(self, key, modifiers): """ 当松开一键时调用此函数. """ if key == arcade.key.LEFT or key == arcade.key.RIGHT: self.ball.change_x = 0 elif key == arcade.key.UP or key == arcade.key.DOWN: self.ball.change_y = 0 def main(): window = MyGame(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE) arcade.run() if __name__ == "__main__": main()