"""
造人程序演示用形状列表创建一个复杂的图形
"""
import arcade
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SCREEN_TITLE = "Python街机造人程序演示用形状列表创建一个复杂的图形"
def make_person(head_radius,
chest_height,
chest_width,
leg_width,
leg_height,
arm_width,
arm_length,
arm_gap,
shoulder_height):
shape_list = arcade.ShapeElementList()
# 头
shape = arcade.create_ellipse_filled(0, chest_height / 2 + head_radius, head_radius, head_radius,
arcade.color.WHITE)
shape_list.append(shape)
# 胸
shape = arcade.create_rectangle_filled(0, 0, chest_width, chest_height, arcade.color.BLACK)
shape_list.append(shape)
# 左腿
shape = arcade.create_rectangle_filled(-(chest_width / 2) + leg_width / 2, -(chest_height / 2) - leg_height / 2,
leg_width, leg_height, arcade.color.RED)
shape_list.append(shape)
# 右腿
shape = arcade.create_rectangle_filled((chest_width / 2) - leg_width / 2, -(chest_height / 2) - leg_height / 2,
leg_width, leg_height, arcade.color.RED)
shape_list.append(shape)
# 左臂
shape = arcade.create_rectangle_filled(-(chest_width / 2) - arm_width / 2 - arm_gap,
(chest_height / 2) - arm_length / 2 - shoulder_height, arm_width, arm_length,
arcade.color.BLUE)
shape_list.append(shape)
# Left shoulder
shape = arcade.create_rectangle_filled(-(chest_width / 2) - (arm_gap + arm_width) / 2,
(chest_height / 2) - shoulder_height / 2, arm_gap + arm_width,
shoulder_height, arcade.color.BLUE_BELL)
shape_list.append(shape)
# Right arm
shape = arcade.create_rectangle_filled((chest_width / 2) + arm_width / 2 + arm_gap,
(chest_height / 2) - arm_length / 2 - shoulder_height, arm_width, arm_length,
arcade.color.BLUE)
shape_list.append(shape)
# Right shoulder
shape = arcade.create_rectangle_filled((chest_width / 2) + (arm_gap + arm_width) / 2,
(chest_height / 2) - shoulder_height / 2, arm_gap + arm_width,
shoulder_height, arcade.color.BLUE_BELL)
shape_list.append(shape)
return shape_list
class MyGame(arcade.Window):
""" Main application class. """
def __init__(self):
""" Initializer """
# Call the parent class initializer
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
head_radius = 30
chest_height = 110
chest_width = 70
leg_width = 20
leg_height = 80
arm_width = 15
arm_length = 70
arm_gap = 10
shoulder_height = 15
self.shape_list = make_person(head_radius,
chest_height,
chest_width,
leg_width,
leg_height,
arm_width,
arm_length,
arm_gap,
shoulder_height)
arcade.set_background_color(arcade.color.AMAZON)
def setup(self):
""" 在这里设置一些变量的值或实例化一些类等等 """
def on_draw(self):
"""
渲染屏幕.
"""
# This command has to happen before we start drawing
arcade.start_render()
self.shape_list.draw()
def update(self, delta_time):
""" 移动并旋转这个人 """
self.shape_list.center_x += 1
self.shape_list.center_y += 1
self.shape_list.angle += 10
def main():
window = MyGame()
window.setup()
arcade.run()
if __name__ == "__main__":
main()