pygame单击翻转颜色的格子阵列.py

"""单击翻转颜色的格子阵列.py"""
import pygame
 
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
CYAN = (0, 255, 255)
RED = (255, 0, 0)
 
# 定义每个格子的宽度和高度
WIDTH = 20
HEIGHT = 20
 
# 定义每个格子的间距
MARGIN = 5
 
# 创建一个二维列表,它们是格子的抽象
grid = []
for row in range(10):     
    grid.append([])          # 一行一行添加
    for column in range(10):
        grid[row].append(0)  # 加一个单元
 
# 把第二行第6列的值设为1
grid[1][5] = 1
 
# 初始化派gei
pygame.init()
 
# 设置屏幕的宽度和高度
WINDOW_SIZE = [255, 255]
screen = pygame.display.set_mode(WINDOW_SIZE)
 
# 设置窗口的标题
pygame.display.set_caption("单击翻转颜色的格子阵列")
 
# 这个变量用来结束while循环
done = False
 
# clock用来设定fps
clock = pygame.time.Clock()
 
# -------- 程序主循环-----------
while not done:
    for event in pygame.event.get():   # 迭代每个事件
        if event.type == pygame.QUIT:  # 如果单击关闭按钮事件发生
            done = True  # 把此标志设为True,这样while就会结束
        elif event.type == pygame.MOUSEBUTTONDOWN: # 如果鼠标单击事件发生
            # 获取鼠标指针的坐标
            pos = pygame.mouse.get_pos()
            # 转换坐标到格子坐标
            column = pos[0] // (WIDTH + MARGIN)
            row = pos[1] // (HEIGHT + MARGIN)
            # 翻转变量的值
            grid[row][column] = 1 - grid[row][column]
            print("单击: ", pos, ",格子坐标为:", row, column)
 
    # 填充背景色为黑色
    screen.fill(BLACK)
 
    # 画格子
    for row in range(10):
        for column in range(10):
            color = WHITE
            if grid[row][column] == 1:
                color = CYAN
            pygame.draw.rect(screen,
                             color,
                             [(MARGIN + WIDTH) * column + MARGIN,
                              (MARGIN + HEIGHT) * row + MARGIN,
                              WIDTH,
                              HEIGHT])
 
    # 限制fps为60
    clock.tick(60)
 
    # 更新屏幕
    pygame.display.flip()
 
# 安全退出派gei
pygame.quit()