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 шт):
При наведении на них (c1, c2, c3) мне говорит: "Local variable value is not used"
Внутри функции check в (локальные) переменные c1 c2 c3 присваивается значение, но эти переменные в дальнейшем не используются.
Зачем присваивать значение, если его не использовать?
Приведу простой пример, вызывающий такое же замечание в pycharm:
def func(a):
a = 9 # переменная не используется, зачем вообще что-то присваивать?
func(1)
Если вы таким способом пытаетесь менять глобальные переменные, то не нужно их передавать параметрами. Используйте напрямую глобальные переменные, предварительно объявив их через global внутри функции check.