为我的四连棋数学游戏创建积分系统

1 投票
1 回答
1270 浏览
提问于 2025-04-18 00:13

我正在尝试在我的四子棋数学游戏中,每当用户回答正确时加一分,回答错误时扣一分。在游戏中,用户可以把棋子放到他们想要的位置,然后会弹出一个问题,等待用户回答,这样游戏才能继续。代码中的其他部分都能正常工作,但我只是想建立一个积分系统。现在的问题是,每次他们回答问题时,分数都会重置。谢谢大家的帮助!

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

撰写回答