为我的四连棋数学游戏创建积分系统
我正在尝试在我的四子棋数学游戏中,每当用户回答正确时加一分,回答错误时扣一分。在游戏中,用户可以把棋子放到他们想要的位置,然后会弹出一个问题,等待用户回答,这样游戏才能继续。代码中的其他部分都能正常工作,但我只是想建立一个积分系统。现在的问题是,每次他们回答问题时,分数都会重置。谢谢大家的帮助!
N = random.randint(0, 14)
SCORE = 0
with open("QUESTIONS.txt") as QUESTIONS, open("ANSWERS.txt") as ANSWERS:
QUESTIONdata = QUESTIONS.readlines()
ANSWERdata = ANSWERS.readlines()
x = QUESTIONdata[N]
y = ANSWERdata[N]
txtbx = inputbox.Input(maxlength=45, color=(169,37,44), prompt = x[:-1])
while True:
events = pygame.event.get()
txtanswer = txtbx.update(events)
txtbx.draw(DISPLAYWINDOW)
pygame.display.flip()
drawBoard(mainBoard)
B = pygame.Surface((630, 540), pygame.SRCALPHA)
B.fill((0,0,0,128))
DISPLAYWINDOW.blit(B, (XMARGIN, YMARGIN))
for event in events:
if event.type == KEYDOWN:
if event.key == K_RETURN:
user_answer = str(txtbx.value)
try:
if (user_answer) == str(y[:-1]):
print("correct")
SCORE += 1
print(SCORE)
return
else:
turn = AI
print("incorrect")
print(SCORE)
SCORE += -1
print(SCORE)
return
except ValueError:
turn = AI
print("value errr")
SCORE += -1
return
elif event.type == QUIT:
pygame.quit()
return
1 个回答
0
你的得分应该是一个全局变量。我不确定你的整个脚本是否在一个文件里,但如果不是的话,你可以返回你想要更改的得分。然后按照大家的建议,在你的 main()
函数中添加得分作为全局变量。
global SCORE
这样应该能解决你遇到的问题。顺便说一下,下次你在StackOverflow上提问时,需要提供更多的信息和相关的代码。你没有提供所有相关的代码。
更好的是,这里有一个更好的解决方案。
在这里我只改变了一点点。
while True: # main loop
if turn == PLAYER:
# PLAYER's turn.
getPLAYERMove(mainBoard, RED)
changeOfScore = askquestions(mainBoard, RED)
SCORE += changeOfScore
然后在askquestions函数中返回你想要更改得分的数值。
例如:
return 1
或者
return -1