我正在使用python 2.7.1制作hang子手游戏。我试图让用户选择是否在游戏结束之前重播。我正在尝试使用变量keep_playing,但是它不起作用。
另外,在guesses=word_len * ['_']中,我想在下划线之间留一个空格,因为如果它们粘在一起,我看不到还剩下多少个字母。这是我的子手代码:

from random import *
import os


keep_playing = True
def print_game_rules(max_incorrect,word_len):
    print"you have only 7 chances to guess the right answer"
    return

def get_letter():
    print
    letter = raw_input("Guess a letter in the mystery word:")
    letter.strip()
    letter.lower()
    print
    os.system('cls')
    return letter
def display_figure(hangman):
    graphics = [
    """
        +--------+
         |
         |
         |
         |
         |
         |
     ====================
    """,
    """
        +-------
        |      o
        |
        |
        |
        |
    ====================
    """,
    """
        +-------
        |      o
        |      +
        |      |
        |
        |
    ======================
    """,
    """
        +-------
        |       o
        |    ---+
        |       |
        |
        |
        |
    =====================
    """,
    """
        +-------
        |       o
        |    ---+---
        |       |
        |
        |
        |
        |
    =====================
    """,
    """
        +-------
        |       o
        |    ---+---
        |       |
        |      /
        |     /
        |    /
        |
    =====================
    """,
    """
        +-------
        |       o
        |    ---+---
        |       |
        |      / \
        |     /   \
        |    /     \
        |
    =====================
    """]

    print graphics[hangman]
    return



animals=["horse","donkey","dinosaur","monkey","cat","aligator","butterfly","buffallo","dragon"]
word=choice(animals)
word_len=len(word)
guesses=word_len * ['_']
max_incorrect=6
alphabet="abcdefghijklmnopqrstuvxyz"
letters_tried=""
number_guesses=0
letters_correct=0
incorrect_guesses=0


print_game_rules(max_incorrect,word_len)
while (incorrect_guesses != max_incorrect) and (letters_correct != word_len):
    letter=get_letter()
    if len(letter)==1 and letter.isalpha():
        if letters_tried.find(letter) != -1:
            print "You already picked", letter
        else:
            letters_tried = letters_tried + letter
            first_index=word.find(letter)
            if  first_index == -1:
                incorrect_guesses= incorrect_guesses +1
                print "The",letter,"is not the mystery word."
            else:
                print"The",letter,"is in the mystery word."
                letters_correct=letters_correct+1
                for i in range(word_len):
                    if letter == word[i]:
                        guesses[i] = letter

    else:
        print "Please guess a single letter in the alphabet."
    display_figure(incorrect_guesses)

    print ''.join(guesses)
    print "Letters tried so far: ", letters_tried
    if incorrect_guesses == max_incorrect:
        print "Sorry, too many incorrect guesses. You are hanged."
        print "The word was",word
        keep_playing = False
    if letters_correct == word_len:
        print "You guessed all the letters in the word!"
        print "The word was",word
        keep_playing = False



while keep_playing == False:
    user = raw_input("\n\tShall we play another game? [y|n] ")
    again = "yes".startswith(user.strip().lower())
    if again:
        keep_playing = True
    if not again:
        break

raw_input ("\n\n\nPress enter to exit")

最佳答案

可以将print ''.join(guesses)转换为print ' '.join(guesses),在字母之间留空格

您需要在keep_playing = False之前执行while keep_playing == False:,并且主游戏循环应位于从该循环if keep_playing == True:调用的函数中

08-06 04:31