我正在尝试创建一个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。
答案 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()