关于如何为hang子手游戏更新字符串的更好的主意

问题描述 投票:0回答:1

[我正在尝试用python 2制作子手游戏,并且我相信我尝试存储用户知道的有关单词的信息的方式(例如,如果他们猜到了“ v”和“ a”并且字母是茄子,我指的是用户会看到的“信息”。因此,我的问题如下:存储可变变量的更有效方法是什么,就像我希望的那样,可变变量将很容易更新?

secret_word = 'tracy'
dashes = ""

def get_guess():
    while True:
        guess = input("Guess: ")
        if len(guess) != 1:
            print "Your guess must be exactly one character!"
        elif not guess.islower():
            print "Your guess must be a lowercase letter!"
        else:
            break
    return guess

def update_dashes(secret_word, dashes, guess):
    for letter in secret_word:
        if letter == guess:
            dashes += guess
        else:
            dashes += "-"
    return dashes


while True:
    if guess in secret_word:
        print "That letter is in the secret word!"
        dashes = update_dashes(secret_word, dashes, get_guess())
    else:
        print "That letter is not in the secret word!"

需要更新的部分很可能是update_dashes功能。任何帮助,将不胜感激。

python-2.x
1个回答
0
投票

而不是将游戏状态存储在--a--形式的字符串中,您可以考虑使用list。列表中的每个条目都可以代表一个字母及其状态。在下面的示例中,boolean values列表用于存储密码中是否已显示每个字母。

secret_word = 'tracy'
revealed_letters = [False] * len(secret_word)  # all letters start off as not revealed

def make_guess(guessed_letter):
    any_letter_revealed = False
    for i in range(len(secret_word)):
        secret_letter = secret_word[i]
        if secret_letter == guessed_letter:
            any_letter_revealed = True
            revealed_letters[i] = True
    return any_letter_revealed


def get_hidden_word():
    return ''.join([secret_word[i] if revealed_letters[i] else '-' for i in range(len(secret_word))])


while True:
    print(get_hidden_word())
    guess = raw_input("Guess a letter: ")
    if make_guess(guess):
        print("That letter is in the secret word!")
    else:
        print("That letter is not in the secret word.")
    if all(revealed_letters):
        print("You win! The secret word was:")
        print(secret_word)
        break
© www.soinside.com 2019 - 2024. All rights reserved.