Skip to content

Instantly share code, notes, and snippets.

@JacobHearst
Last active November 12, 2018 20:12
Show Gist options
  • Save JacobHearst/c1f36b4fc67d2f68db988cdf3ebc6152 to your computer and use it in GitHub Desktop.
Save JacobHearst/c1f36b4fc67d2f68db988cdf3ebc6152 to your computer and use it in GitHub Desktop.
A simple commandline hangman game using the words found at www.hangmanwords.com/words
import linecache
import random
import re
line_num = random.randint(1, 60)
line = linecache.getline("words.txt", line_num)
line = line[0:len(line) - 1]
guessed_letters = []
word_progress = []
wrong_guesses = 0
print("Welcome to hangman! Your word is %s letters long." % len(line))
# Setup word_progress
for l in line:
word_progress.append("_ ")
# Main game loop
while "_ " in word_progress and wrong_guesses < 6:
# Show past guesses if it's not the first turn
past_guesses = "Your guesses so far: "
for letter in guessed_letters:
past_guesses += letter + ", "
if len(guessed_letters) > 0:
a = ""
print(past_guesses)
# Get and validate the user's guess
print("You've used %s/6 chances" % wrong_guesses)
guess = input("Make a guess: ")[0:1].lower()
if not re.match("^[a-z]*$", guess):
print("Only letters are allowed")
pass
elif guess in guessed_letters:
print("You've already guessed that letter")
pass
else:
guessed_letters.append(guess)
if guess in line:
occurences = [m.start() for m in re.finditer(guess, line)]
for index in occurences:
word_progress[index] = guess + " "
print("Correct!")
print(''.join(word_progress))
else:
wrong_guesses += 1
if wrong_guesses < 6:
print("Try again")
print(''.join(word_progress))
if wrong_guesses == 6:
print("You lose, the word was: %s" % line)
else:
print("Congratulations! You guessed the word!")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment