Last active
November 12, 2018 20:12
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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