игровая логика c не показывает реального имени победителя - PullRequest
1 голос
/ 11 января 2020

Я написал простую программу, которая генерирует randint, и 2 игрока должны угадать число.

Все в порядке, кроме показа реального имени игрока. Я новичок, и я действительно ценю, если предложения по решению проблемы не требуют изменения всей логики c игры. Я уверен, что это может быть лучше, но я продаю помощь по этой конкретной проблеме c.

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))

1 Ответ

0 голосов
/ 11 января 2020

Я пытался следовать вашим логикам c с этим решением, хотя я должен сказать, что это должно быть сделано другим способом. Проблема в том, что я думаю, что вы не опубликовали полный код - как вы его запускаете и где вы проверяете, является ли игрок победителем.

Я смог сделать это так:

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)

Но я должен сказать - используйте классы и делайте это по-другому.

Надеюсь, это поможет.

...