如何基于if语句Python

时间:2018-09-13 11:56:43

标签: python pygame

我正在尝试创建一个pygame游戏,该游戏的sprite列表会根据点击次数进行更改。

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 :(得分:0)

就目前而言,列表值在程序开始运行时被初始化,之后不会更改,因此不会更改。我认为您只要单击一下按钮,就想运行更新列表值的代码的前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()