""" 单击改变方块颜色。本程序显示二维格子阵列,单击格子会在白色和绿色之间切换颜色,需要arcade模块的支持。 """ import arcade # 定义行列数量 ROW_COUNT = 15 COLUMN_COUNT = 15 # 定义格子宽度和高度 WIDTH = 30 HEIGHT = 30 # 格子边框厚度 MARGIN = 5 # Do the math to figure out oiur screen dimensions SCREEN_WIDTH = (WIDTH + MARGIN) * COLUMN_COUNT + MARGIN SCREEN_HEIGHT = (HEIGHT + MARGIN) * ROW_COUNT + MARGIN class MyGame(arcade.Window): """ 游戏主类,继承自窗口类 """ def __init__(self, width, height): """ 初始化方法,首先调用超类的方法。 """ super().__init__(width, height, "单击改变颜色的方格子_注释翻译:李兴球") # 创建二维阵列,这是一个嵌套列表 self.grid = [] for row in range(ROW_COUNT): # 添加一行 self.grid.append([]) for column in range(COLUMN_COUNT): self.grid[row].append(0) # 这一行的每个格子值为0 arcade.set_background_color(arcade.color.BLACK) # 设置背景颜色 def on_draw(self): """ 渲染屏幕 """ # 开始渲染,要在所有命令之前 arcade.start_render() # 画格子,如果值是1画绿色否则画白色 for row in range(ROW_COUNT): for column in range(COLUMN_COUNT): # 根据二维阵列的值决定 if self.grid[row][column] == 1: color = arcade.color.GREEN else: color = arcade.color.WHITE # 算出格子应该画的起始坐标 x = (MARGIN + WIDTH) * column + MARGIN + WIDTH // 2 y = (MARGIN + HEIGHT) * row + MARGIN + HEIGHT // 2 # 画矩形 arcade.draw_rectangle_filled(x, y, WIDTH, HEIGHT, color) def on_mouse_press(self, x, y, button, modifiers): """ 单击鼠标时调用这个方法 """ # 算出行列编号 column = x // (WIDTH + MARGIN) row = y // (HEIGHT + MARGIN) print(f"单击的坐标: ({x}, {y}). 格子行列数: ({row}, {column})") if row < ROW_COUNT and column < COLUMN_COUNT: # 翻转格子数组的值 if self.grid[row][column] == 0: self.grid[row][column] = 1 else: self.grid[row][column] = 0 def main(): MyGame(SCREEN_WIDTH, SCREEN_HEIGHT) arcade.run() if __name__ == "__main__": main()
李兴球
李兴球的博客是Python创意编程原创博客
要发表评论,您必须先登录。
发表评论