Local variable value is not used

Здравствую. У меня как бы ошибки нет, но работает неправильно. Дело в c1, c2 и c3, которые не хотят работать. При наведении на них (c1, c2, c3) мне говорит: "Local variable value is not used" (я кодю в PyCharm).

По идеи c1, c2 и c3 это клеточки, ячейки. Когда любой из них принимает значение True, то это значит, что ячейка занята, но пока первая верхняя ячейка не занята (c1), остальные не могут принять значение True.
bg же - это клеточное поле 9х9. Разумеется это не все ячейки, а код сокращён. Но данные ячейки (c1, c2, c3) выстроены в левый ряд вертикально. Почему клетки находятся так низко? Ну.. мне так надо.

На форумах я искал ответ на свой вопрос, но ответ не нашёл или не подходил. Либо я слеп.
Вот код:

import pygame
from random import randint
from pygame import KEYDOWN, K_SPACE

w = 1280
h = 720
s_size = w, h

pygame.init()
screen = pygame.display.set_mode(s_size)
pygame.display.set_caption("First steps")

bg = pygame.image.load("images/KBGameFINAL.png")
bg = pygame.transform.scale(bg, s_size)

whb = (72, 72)

bone1 = pygame.image.load("images/KBG1.png")
bone1 = pygame.transform.scale(bone1, whb)

bone2 = pygame.image.load("images/KBG2.png")
bone2 = pygame.transform.scale(bone2, whb)

screen.blit(bg, (0, 0))
running = True

button_surface1 = pygame.Surface((72, 248))
button_rect1 = pygame.Rect(512, 408, 72, 248)

block = False
b = None
y = 408
y2 = 496
y3 = 584
cell1 = False
cell2 = False
cell3 = False

def check(x, bo, c1, c2, c3): # Здесь проблема!
    global block
    if c3: pass
    elif c2:
        screen.blit(bo, (x, y3))
        c3 = True #Local variable 'c3' value is not used
        block = True
    elif c1:
        screen.blit(bo, (x, y2))
        c2 = True #Local variable 'c2' value is not used
        block = True
    else:
        screen.blit(bo, (x, y))
        c1 = True #Local variable 'c1' value is not used
        block = True

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            if button_rect1.collidepoint(event.pos):
                if block:
                    continue

                if b == bone1:
                    check(512, bone1, cell1, cell2, cell3)

                elif b == bone2:
                    check(512, bone2, cell1, cell2, cell3)

        elif event.type == KEYDOWN:
            if event.key == K_SPACE:
                bxy1 = (216, 496)
                n = randint(1, 2)

                if n == 1:
                    screen.blit(bone1, bxy1)
                    b = bone1
                elif n == 2:
                    screen.blit(bone2, bxy1)
                    b = bone2

    pygame.display.update()
pygame.quit()

Ну воть. Надеюсь на вашу помощь.


Ответы (1 шт):

Автор решения: user19315471

При наведении на них (c1, c2, c3) мне говорит: "Local variable value is not used"

Внутри функции check в (локальные) переменные c1 c2 c3 присваивается значение, но эти переменные в дальнейшем не используются.
Зачем присваивать значение, если его не использовать?

Приведу простой пример, вызывающий такое же замечание в pycharm:

def func(a):
    a = 9  # переменная не используется, зачем вообще что-то присваивать?

func(1)

Если вы таким способом пытаетесь менять глобальные переменные, то не нужно их передавать параметрами. Используйте напрямую глобальные переменные, предварительно объявив их через global внутри функции check.

→ Ссылка