-
Notifications
You must be signed in to change notification settings - Fork 0
/
hangperson.py
124 lines (86 loc) · 3.23 KB
/
hangperson.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#hangman.py
# A program about hanging people if you don't spell things correctly.
from random import randint
words = ["corgi","Ichi", "whiteboard"]
numWrong = 0
listedWord = [None]
# A function that starts and plays the hangperson game.
# Users can be wrong a maximum of 5 times before they lose,
# the 6th wrong guess triggering Game Over.
def hangperson():
global listedWord
# Greet the user
print("Let's play a game of hangperson!")
# Randomly select a word from the list of words
# Make the randomly selected word into a list object
# Make another list the same length as the word, but with
# '_' instead of letters. This will track the user's progress.
# Use the variable name currentState
currentState = ""
# Print the initial state of the game
printHangperson(currentState)
# Start the game! Loop until the user either wins or loses
while currentState != listedWord and numWrong < 6:
# First, ask the user to guess
guess = userGuess()
# See if the guess is in the word, update accordingly
currentState = updateState(guess, currentState)
printHangperson(currentState)
# Determine if the user won or lost, and then tell them accordingly
# Update the state of the game based on the user's guess.
#
# guess: a character guessed by the user
# currentState: the current state of the word/game
#
# return currentState
def updateState(guess, currentState):
global numWrong
# First, determine if the letter guessed is in the word.
numInWord = listedWord.count(guess)
# If it isn't, tell the user and update the numWrong var
if numInWord == 0:
numWrong = numWrong + 1
# numWrong += 1
# If it is, congratulate them and update the state of the game.
# To update the state, make sure to replace ALL the '_' with
# the guessed letter.
elif numInWord > 0:
# While we still have letters to find, keep looping
numFound = 0
index = 0
while numFound < numInWord and index < len(listedWord):
# See if letter is in word at index
if listedWord[index] == guess:
currentState[index] = guess
numFound = numFound + 1
index += 1
return currentState
# This helpful function prompts the user for a guess,
# accepting only single letters.
#
# returns a letter
def userGuess():
guess = input("Guess a letter in the word! (Say 'exit' to stop playing) ")
while len(guess) != 1:
# User has given us too long of a response
# Check if it is 'exit', then exit if it is
# Otherwise, ask them to guess again
return guess
################# DO NOT EDIT BELOW THIS LINE ##################
# A helpful function to print the hangman.
# DO NOT CHANGE
#
# state: current state of the word
def printHangperson(state):
person = [" O "," | \n | ", "\| \n | ", "\|/\n | ", "\|/\n | \n/ ", "\|/\n | \n/ \\"]
print()
if numWrong > 0:
print(person[0])
if numWrong > 1:
print(person[numWrong-1])
print("\n\n")
for i in state:
print(i, end=" ")
print("\n")
# This line runs the program on import of the module
hangperson()