Pygame&Python Переменные

Почти готова копия fnaf на pygame, но я не могу реализовать одну вещь. Есть часть кода:

s = True
m = True
camera_opened = False # Когда открываю камеры, становится true

def threadingg():
   threading.Thread(target=minus).start()

def minus():
    s = False
    while secs > 0 and camera_opened:
        secs -= 1
        sleep(1)
    Active_Camera = 0
    s = True

#minus работает без нареканий, когда я открываю камеру, каждую 1сек SECS уменьшается на 1, и если #время истекло, камера выключается. Максимум тут должен быть 5 secs.

def bear():
threading.Thread(target=reabilitation).start() # Это сделано, чтобы функция reab была в фоне.

def reabilitation():
m = False
while secs < 5 and camera_opened == False:
sleep(1)
secs += 1
m = True

def Process():
if ...:
...
...
while s:
bear()
if ...:
...
...
while m:
threadingg()

Но тут возникли проблемы, логика игры должна быть: Открываю камеры, мне дается 5 сек и когда таймер = 0, камера закрывается и открыть можно только тогда, когда таймер восстановится до 5. Оно работает, но вот реабилитация...

Как оно работает сейчас: Время вышло, камера закрылась. И тут же счетчик взлетает до 70+ и я ничего не смог поделать.

У меня есть еще пара вопросов
|Как задать максимум для переменной? Со старта secs = 5, а как задать максимум, чтобы за пределы не выходило? |Что лучше всего подойдет для создания 2д игр? Юнити стоит скачивать?


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

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

Решено

s=True
qwe=True

def threadingg():
   threading.Thread(target=minus).start()

def minus():
   global ...
    while secs > 0 and camera_opened:
        sleep(0.5)
        secs -= 1
    s = True

def bear():
   threading.Thread(target=reabilitation).start()

def reabilitation():
   global ...
    while secs < 5:
        sleep(1)
        secs += 1
    qwe = True

def Process(): #в цикле
   if Active_Camera == 0:
     camera_opened = False
     screen.blit(...,(x,y))
     if secs < 5 and qwe:
        bear()
        qwe = False

   if Active_Camera == 1:
      camera_opened = True
      screen.blit(...,(x,y))
      if s:
         threadingg()
         s = False
→ Ссылка