Как изменить значение списка на основе операторов if Python - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь создать игру-пигмею, в которой список спрайтов меняется в зависимости от кликов.

p1 = 1
p2 = 1
if p1 == 1:
  list1_1 = [EXAMPLE]
  list1_2 = [EXAMPLE] 
if p1 == 2:
  list1_1 = [EXAMPLE]
  list1_2 = [EXAMPLE]
if p2 == 1:
  list2_1 = [EXAMPLE]
  list2_2 = [EXAMPLE]
if p2 == 2:
  list2_1 = [EXAMPLE]
  list2_2 = [EXAMPLE]

def button():
  if clicked:
    if action == EXAMPLE:
      p1 = 1
    if action == EXAMPLE:
      p1 = 2 
    if action == EXAMPLE:
      p2 = 1
      game()
    if action == EXAMPLE:
      p2 = 2  
      game()  

def menu():
  button(info) 

def game():
  EXTRA

menu()

так что это очень сокращенная версия моей игры, в которой, вероятно, виноват мой основной код. проблема в том, что когда я нажимаю кнопки, чтобы изменить значение, это на самом деле не меняет значения списков; list1_1, list1_2, list2_1 и list2_2.

1 Ответ

0 голосов
/ 13 сентября 2018

В существующем виде значения списка инициализируются при запуске программы и не изменяются после, следовательно, они не меняются.Я думаю, что вы хотите запустить первые 14 строк кода, который обновляет значения списка, всякий раз, когда было нажатие кнопки.Есть много способов сделать это, одна из идей - поместить их все в метод, а затем вызывать его для обновления глобальных значений всякий раз, когда вы захотите их изменить.например,

# initialize the lists globally 
list1_1, list1_2, list1_2_1, list1_2_2 = [[]] * 4

pl = 1
p2 = 1

def do_some_action(p1=1, p2=1):
    if p1 == 1:
        global list1_1 = [EXAMPLE]
        global list1_2 = [EXAMPLE]
    if p1 == 2:
        global list1_1 = [EXAMPLE]
        global list1_2 = [EXAMPLE]
    if p2 == 1:
        global list2_1 = [EXAMPLE]
        global list2_2 = [EXAMPLE]
    if p2 == 2:
        global list2_1 = [EXAMPLE]
        global list2_2 = [EXAMPLE]

do_some_action(p1, p2)

def button():
    if clicked:
        if action == EXAMPLE:
            global p1 = 1
            do_some_action(p1, p2)
        if action == EXAMPLE:
            global p1 = 2
            do_some_action(p1, p2)
        if action == EXAMPLE:
            global p2 = 1
            do_some_action(p1, p2)
            game()
        if action == EXAMPLE:
            global p2 = 2
            do_some_action(p1, p2)
            game()

def menu():
    button(info)

def game():
    EXTRA

menu()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...