2011-04-30 99 views
1

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

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

回答

3

print ''.join(guesses)可以字母

你需要while keep_playing == False:之前做keep_playing = False和游戏主循环之间变成print ' '.join(guesses)给空间应在该会从这个调用的函数循环if keep_playing == True:

+1

字母之间的印迹空间。我在'keep_playing'上试了很多,但仍然没有得到它。你能举个例子吗? – phhnk 2011-04-30 04:03:28

1

以下将做你想做的事情。

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 

while keep_playing: 
    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 
      break 
     if letters_correct == word_len: 
      print "You guessed all the letters in the word!" 
      print "The word was",word 
      break 

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

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