微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在pygame中在数组支持的网格中交换颜色时出现问题

如何解决在pygame中在数组支持的网格中交换颜色时出现问题

所以我基本上是在尝试为项目创建一个简单的基础游戏。这是pygame中由阵列支持的网格,它以黑色背景和10x10的绿色网格正方形数组开头。我想做的是单击一个正方形时交换颜色,如果正方形为绿色,则变为白色,如果正方形为白色,则变为绿色。我可以成功更改一次正方形的颜色,但似乎无法将其交换回来。我究竟做错了什么?这是我的代码

import pygame

BLACK = (0,0)
WHITE = (255,255,255)
GREEN = (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)  
pygame.init()

WINDOW_SIZE = [255,255]
screen = pygame.display.set_mode(WINDOW_SIZE)

pygame.display.set_caption("ColorSwitch")

done = False

clock = pygame.time.Clock()

while not done:
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            done = True 
        elif event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            column = pos[0] // (WIDTH + MARGIN)
            row = pos[1] // (HEIGHT + MARGIN)
            if grid[row][column]==0:
                grid[row][column] = 1
            if grid[row][column]==1:
                grid[row][column]==0
    screen.fill(BLACK)
    for row in range(10):
        for column in range(10):
            if grid[row][column] == 1:
                color = WHITE
            elif grid[row][column]==0:
                color = GREEN
            pygame.draw.rect(screen,color,[(MARGIN + WIDTH) * column + MARGIN,(MARGIN + HEIGHT) * row + MARGIN,WIDTH,HEIGHT])
    clock.tick(60)
    pygame.display.flip()
pygame.quit()

我真的看不到哪里出了错。

解决方法

您不小心使用了(==)比较相等运算符而不是(=)赋值运算符:

grid[row][column]==0

grid[row][column]=0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。