This is my beginner version using lists. Made me feel like a programming god. Done in version 2.7.5
Would welcome any comments, I think my solution is unusual at least.
Would welcome any comments, I think my solution is unusual at least.
Code:
#Hangman version 2 R J While-Cooper 19-01-14 #NEXT UPDATE WILL ALLOW PHRASES THAT INCLUDE A DELIMITER BETWEEN WORDS #THE VARIOUS STAGES OF HANGMAN def scaffold5(): print"" print " ------|" print " | \|" print " |" print " |" print " /|" print " ____/_|_" def scaffold4(): print"" print " ------|" print " | \|" print " o |" print " |" print " /|" print " ____/_|_" def scaffold3(): print"" print " ------|" print " | \|" print " o |" print " / |" print " /|" print " ____/_|_" def scaffold2(): print"" print " ------|" print " | \|" print " o |" print " /| |" print " /|" print " ____/_|_" def scaffold1(): print"" print " ------|" print " | \|" print " o |" print " /|\ |" print " /|" print " ____/_|_" def scaffold0(): print"" print " ------|" print " | \|" print " o |" print " /|\ |" print " / \ /|" print " ____/_|_" print "YOU'VE BEEN HANGED!" #DRAWS SCAFFOLD BASED ON NUMBER OF WRONG_GUESSE def build_scaffold(): if wrong_guess == 0: scaffold5() elif wrong_guess ==1: scaffold4() elif wrong_guess ==2: scaffold3() elif wrong_guess ==3: scaffold2() elif wrong_guess ==4: scaffold1() #IMPORTS TIME FUNCTION FOR DELAYS import time #WORD CHOICE LIST medium_word = ['envelope','antelope','elephant','organism','encyclopedia'] alphabet_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','o','p','q','r','s','t','u','v','w','x','y','z'] #ADJUST DIFFICULTY BY CHANGING MAX_GUESSES TO A LOWER NUMBER check_letters = 0 max_guesses = 5 wrong_guess = 0 cont = "y" #PRINTS ENTIRE ALPHABET NOT REALLY USED NOW def print_alpha_list(): print "The letters you can choose are : ", for letter in alphabet_list: print letter, print "" #PRINTS THE LETTERS THAT HAVE BEEN CHOSEN def print_choices(): print "The letters you have chosen are : ", for letter in choices: print letter, print "" #FUNCTIONS CLEAR THE SCREEN AND ADD A SHORT DELAY BETWEEN ROUNDS #CLEARS SCREEN def cls(): print ('\n' *50) #SETS A DELAY def wait_time(): print "PLEASE WAIT ", for x in range(4): print ". ", time.sleep(0.5) #CALLS CLEAR AND DELAY FUNCTIONS def clear_wait(): wait_time() cls() #ENTERS THE GAME/REPEAT LOOP while cont == "y": #CLEARS SCREEN AND REMOVES CHOICES FROM LAST GAME PRINTS ALPHABET FOT THE IDIOTS clear_wait() choices = [] print_alpha_list() #RANDOMLY CHOOSES A WORD FROM THE WORD LIST, SPLITS IT INTO A LIST #AND GIVE THE NUMBER OF LETTERS IN THE WORD from random import choice wordchosen = choice(medium_word) word = list(wordchosen) len_word = len(word) #DOES THE FIRST MASK build_scaffold() print "Guess the word!" print "" print "_ " * len_word #YOU GET TO PLAY UNTIL YOU RUN OUT OF GUESSES while wrong_guess < max_guesses: #RESETS CHECKING VARIABLES IN GAME LOOP duplicate_letter = 0 missing_letter_count = 0 check_letters = 0 #ASKS FOR USER INPUT & COVERTS TO LOWER CASE print "" guess = raw_input("Choose a letter .Enter your choice and press <ENTER> --->") guess = guess.lower() #SPOTS DUPLICATE LETTERS BY CHECKING IF THE GUESS IS IN THE CHOICES LIST #IF NOT IT ADDS TO THE CHOICES LIST if guess in choices: print "You already picked that letter!" duplicate_letter +=1 else: choices.append(guess) clear_wait() #print word #THE ALL IMPORTANT MASK ALGORITHM for letter in word: if letter == letter in word: if letter in choices: print letter, else: missing_letter_count +=1 print "_ ", #CHECKES IF YOU HAVE WON BECAUSE THERE WILL BE NO DASHES WRITTEN if missing_letter_count == 0: break print "" print_choices() print "" #CHECKS TO SEE IN THE ANSWER IS WRONG for letter in word: if guess != letter: check_letters +=1 if check_letters == len(word) or duplicate_letter != 0: wrong_guess +=1 build_scaffold() #INCREMENTS THE WRONG GUESSES COUNT FOR WRONG OR DUPLICATE ANSWERS if wrong_guess != 0 or duplicate_letter != 0: print "You have had ", wrong_guess, "wrong guesses!" print "You have ", max_guesses - wrong_guess, "guesses left!" #PRINTS YOU WIN OR LOSE DEPENDING ON CONDITION, GIVES PLAY AGAIN CHOICE #FINAL SCAFFOLD DRAWN IF WRONNG_GUESS ==MAX_GUESSES if wrong_guess == max_guesses: print "You lose!" print "The word was ", print word print "" scaffold0() print "" cont = raw_input (" Play again? Y/N ? >") cont = cont.lower() wrong_guess = 0 else: print "" cont = raw_input ("You Win! Play again? Y/N ? >") cont = cont.lower() print "Thanks for playing HANGMAN!"
Comment