"""
这个简单的例子演示如何用键盘操作小球
"""
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()