【问题标题】:game logic does not show the real winner name游戏逻辑不显示真正的获胜者姓名
【发布时间】:2020-01-11 11:31:39
【问题描述】:

我写了一个简单的程序来生成一个随机数,两个玩家必须猜数字。

一切都很好,除了显示实际的玩家姓名。我是一个初学者,如果解决问题的建议不需要改变游戏的整个逻辑,我真的很感激。我相信它会更好,但我正在销售针对该特定问题的帮助。

def take_player_guess(current_player):
    global player_1
    global player_2
    num = random.randint(0,10) 
    guessed = set()
    player_guess = None

    while player_guess != num:
        print("{}'s Turn ".format(current_player)) #


        if current_player == player_1:
            current_player = player_2

        elif current_player == player_2:
            current_player = player_1

        try:
            player_guess = int(input("Please enter an integer value as a guess >> "))

            if player_guess > num:
                print("Guess lower!")
                guessed.add(player_guess)
                print(guessed) 

            elif player_guess < num:
                print("Guess higher!")
                guessed.add(player_guess)
                print(guessed)
        except:
            print("input must be an integer")
        else:
            pass     



def check_for_winner(current_player): # done 
    global winner
    global num
    #global current_player

    if player_guess == num:
        current_player == winner
        print("Congratulations {}, You have won!".format(current_player))

【问题讨论】:

    标签: python logic


    【解决方案1】:

    我试图通过这些解决方案遵循您的逻辑,尽管我不得不说,它应该以其他方式完成。 问题是,我认为你没有发布完整的代码 - 你如何运行它,你在哪里检查,如果玩家是赢家。

    我能够做到这一点:

    import random
    
    def take_player_guess(current_player):
        global player_1
        global player_2
        global player_guess
        global num
        num = random.randint(0,10) 
        guessed = set()
        player_guess = None
    
        while player_guess != num:
    
            if current_player == player_1:
                current_player = player_2
    
            elif current_player == player_2:
                current_player = player_1
    
            print("{}'s Turn ".format(current_player)) #
    
            try:
                player_guess = int(input("Please enter an integer value as a guess >> "))
    
                if player_guess > num:
                    print("Guess lower!")
                    guessed.add(player_guess)
                    print(guessed) 
    
                elif player_guess < num:
                    print("Guess higher!")
                    guessed.add(player_guess)
                    print(guessed)
    
                check_for_winner(current_player)
            except Exception as e:
                print("input must be an integer", e)
            else:
                pass     
    
    
    
    def check_for_winner(current_player): # done 
        #global current_player
    
        if player_guess == num:
            print("Congratulations {}, You have won!".format(current_player))
    
    
    player_1 = 'me'
    player_2 = 'you'
    take_player_guess(player_1)
    

    但我不得不说 - 使用类,并以其他方式做。

    希望对您有所帮助。

    【讨论】:

    • 确实如此。这不是整个代码块。我已经尝试了一切来解决这个问题。我相信这是定义全局变量(current_player = player_1 或 player_2)。
    • 试过了!同样的问题。这场比赛的获胜者似乎也是随机的。测试它很多次,看看。当然,我仍然感谢您的回复。
    • 嗯,在分配之前打印是个愚蠢的问题 - 我编辑了代码,似乎没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多