Game advise Python

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • JohnTokyo
    New Member
    • Jul 2012
    • 1

    Game advise Python

    Hi there, I'm learning python by myself and I've just come to big stop with my first project for a Hang/man. I need some help. Thank you.

    Here's my code:

    Code:
    def get_secret():
        initial = raw_input('enter string: ')
        word = initial.lower()
        print '\n'*60
        return str(word)
    
    def do_turn(display, misses):
        print 'Word so far: ', display
        print 'Missed :', misses
        flag = False
        while flag == False:
            
            letter = str(raw_input('Pick a letter to guess: '))
            if len(letter)==1:
                flag = True
            else:
                print 'Cmon man, enter ONE letter'
            return letter
    
    
    def new_display(secret, display, letter):
        temp = ''
        for i in range(len(secret)):
            if secret[i] in letter:
                temp = temp[:i] + secret[i] + temp[i+1:]
                
        for letter in temp:
            print (letter), display
        return temp
    
    
    
    
    secret = get_secret()
    display = len(list(secret))*'_ '
    misses = 0
    correct = ''
    tries = 0
    
    #print 'This is the word: ', display
    print list(secret) #this actually converts the secret to a list
    
    for i in range(8):
        letter = do_turn(display, misses)
        guess = new_display(secret, display, letter)
        while False:
            
            if letter in guess:
                print 'bravo'
    It's mostly that I can't get the function newdisp to replace the underscore with a letter that's been guessed (and replace all same letters).
    For the missing I will do it in the main.
  • dwblas
    Recognized Expert Contributor
    • May 2008
    • 626

    #2
    This will only ask for a letter one time, no matter what is entered.
    Code:
        while flag == False:
              letter = str(raw_input('Pick a letter to guess: '))
             if len(letter)==1:
                 flag = True
             else:
                 print 'Cmon man, enter ONE letter'
             return letter
    You declared "temp" as an empty string earlier so you are slicing an empty string.
    Code:
            if secret[i] in letter:
                 temp = temp[:i] + secret[i] + temp[i+1:] 
    #
    #
        display_list = list(display)
        for ctr in range(len(secret)):
            if secret[ctr] == letter:
                ## only replaces first letter found
                display_list[ctr] = letter
                return "".join(display_list)

    Comment

    Working...