PyGame 应用程序未按预期点亮光标下的图块

PyGame app doesn't light up tiles under cursor as expected

我正在尝试构建一个棋盘,其中光标下方的方块会亮起。我设法创建了棋盘,但是当我尝试实现在我的光标下点亮的瓷砖时,一切都变得疯狂了。

代码所做的只是在浅绿色和深绿色之间交替并绘制一个矩形,如果光标位置等于要写入的矩形,我将浅绿色和深绿色切换为浅绿色,命名为:LIGHT_LIGHT_GREEN 和 LIGHT_DARK_GREEN.

# Setup
import pygame,sys
pygame.init()
WIDTH = 500
HEIGHT = 500
cell_size = 50
screen=pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('HELP')
FPS=pygame.time.Clock()

DARK_GREEN = (76,175,79)
LIGHT_DARK_GREEN = (126,225,129)
LIGHT_GREEN = (139,195,74)
LIGHT_LIGHT_GREEN = (189,245,124)

def mouse_pos():
    mx,my = pygame.mouse.get_pos()
    mx = int(mx / cell_size)
    my = int(my / cell_size)
    print(mx,my)
    return mx,my

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    
    # Colors
    BLACK=(0,0,0)

    gameOver=False
    while not gameOver:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    

        mx,my = mouse_pos()
        LIGHT = LIGHT_GREEN
        DARK = DARK_GREEN
        COLOR = DARK
        for x in range(0,10):
            for y in range(0,10):
                if mx == x and my == y:
                    LIGHT = LIGHT_LIGHT_GREEN
                    DARK = LIGHT_DARK_GREEN
                else:
                    LIGHT = LIGHT_GREEN
                    DARK = DARK_GREEN
                if COLOR == LIGHT:
                    COLOR = DARK
                else:
                    COLOR = LIGHT
                pygame.draw.rect(screen,COLOR,(x*cell_size,y*cell_size,cell_size,cell_size))
            if COLOR == LIGHT:
                COLOR = DARK
            else:
                COLOR = LIGHT

        pygame.display.update()
        FPS.tick(60)

当您到达光标方块时,您不想中断交替的 COLOR 切换。所以,保持你的交替的东西静态,并使用一个单独的变量来设置“我为这个特定的正方形画什么”,它可以来自颜色,也可以来自你改变的颜色:

mx,my = mouse_pos()
LIGHT = LIGHT_GREEN
DARK = DARK_GREEN
COLOR = DARK
for x in range(10):
    for y in range(10):
        draw = COLOR
        if mx == x and my == y:
            if draw == LIGHT_GREEN:
                draw = LIGHT_LIGHT_GREEN
            else:
                draw = LIGHT_DARK_GREEN
        if COLOR == LIGHT:
            COLOR = DARK
        else:
            COLOR = LIGHT
        pygame.draw.rect(screen,draw,(x*cell_size,y*cell_size,cell_size,cell_size))
    if COLOR == LIGHT:
        COLOR = DARK
    else:
        COLOR = LIGHT