Контроль подсчета предположений - PullRequest
0 голосов
/ 29 мая 2020

Я начинаю учебу в Python, и мне было поручено написать код для игры в угадайку, в которой я должен контролировать общее количество попыток ос, которые будет иметь игрок. Я описал функции, они работают (кажется ... ха-ха), но я не могу "сбросить" игру, когда вводится неверное предположение ... Я написал это:

guess_count = []
count_control = 1
def check_guess(letter,guess):
    if guess.isalpha() == False:
        print("Invalid!")
        return False
    elif guess.lower() < letter:
        print("Low")
        return False
    elif guess.lower() > letter:
        print("High")
        return False
    elif guess.lower() == letter:
        print("Correct!")
        return True
    else:
        print("anything")

def letter_guess(guess):
    check_guess ('a',guess)
    while len(guess_count) <= 3:
        if check_guess == True:
            return True
        elif check_guess == False:
            guess_count.append(count_control)
            guess = input("Try again \n")

letter_guess(input("test: "))

ОБНОВЛЕНИЕ: я переписал код после некоторых идей других пользователей и прочтений и получил следующее:

class Game:

number_of_attempts = 3
no_more_attempts = "Game Over"

def attempt_down(self): #This will work as the counter of remaining lives.
    self.number_of_attempts -= 1
    print('Remaining Lives:',self.number_of_attempts)
def check_guess(self,letter): 
    """
    Requires
    letter - a letter that has to be guessed
    guess - a input from the user with the guessed letter
    """ 
    while self.number_of_attempts > 0:
        guess = input ("Guess the letter: ")
        if guess.isalpha() == False:
            print("Invalid!")  
        elif guess.lower() < letter:
            self.attempt_down()
            print("Low") 
            print("Try Again!")  
        elif guess.lower() > letter:
            self.attempt_down()
            print("High")  
            print("Try Again!")
        elif guess.lower() == letter:
            print("Correct!")
            return True

    print (self.no_more_attempts)
    return False    


game = Game()
"""   
This is used to run the game. 
Just insert the letter that 
has to be guessed.
"""
teste1 = game.check_guess('g')
teste2 = game.check_guess('r')

1 Ответ

0 голосов
/ 29 мая 2020

Проблема в том, что у вас есть состояние игры, которое вы отслеживаете как глобальные переменные guess_count и count_control

Это пример того, почему python и другие языки предоставляют классы и объекты:

class Game:

    def __init__(self):
        self.guess_count = []
        self.count_control = 1

    @staticmethod
    def check_guess(letter, guess):
        if guess.isalpha() == False:
            print("Invalid!")
            return False
        elif guess.lower() < letter:
            print("Low")
            return False
        elif guess.lower() > letter:
            print("High")
            return False
        elif guess.lower() == letter:
            print("Correct!")
            return True
        else:
            print("anything")

    def letter_guess(self, guess):
        self.check_guess('a', guess)
        while len(self.guess_count) <= 3:
            if self.check_guess('a', guess) == True:
                return True
            elif self.check_guess('a', guess) == False:
                self.guess_count.append(self.count_control)
                guess = input("Try again \n")

game = Game()
game.letter_guess(input("test: "))

game = Game()
game.letter_guess(input("test: "))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...