Removed spaces from top-level directory names.

Spaces tend to cause annoyances in a Unix-style shell environment.
This change fixes that.
This commit is contained in:
Chris Reuter
2021-11-21 18:30:21 -05:00
parent df2e7426eb
commit d26dbf036a
1725 changed files with 0 additions and 0 deletions

217
44_Hangman/python/hangman.py Executable file
View File

@@ -0,0 +1,217 @@
#!/usr/bin/env python3
# HANGMAN
#
# Converted from BASIC to Python by Trevor Hobson and Daniel Piron
import random
class Canvas:
""" For drawing text-based figures """
def __init__(self, width=12, height=12, fill=" "):
self._buffer = []
for _ in range(height):
line = []
for _ in range(width):
line.append("")
self._buffer.append(line)
self.clear()
def clear(self, fill=" "):
for row in self._buffer:
for x in range(len(row)):
row[x] = fill
def render(self):
lines = []
for line in self._buffer:
# Joining by the empty string ("") smooshes all of the
# individual characters together as one line.
lines.append("".join(line))
return "\n".join(lines)
def put(self, s, x, y):
# In an effort to avoid distorting the drawn image, only write the
# first character of the given string to the buffer.
self._buffer[y][x] = s[0]
def init_gallows(canvas):
for i in range(12):
canvas.put("X", 0, i)
for i in range(7):
canvas.put("X", i, 0)
canvas.put("X", 6, 1)
def draw_head(canvas):
canvas.put("-", 5, 2)
canvas.put("-", 6, 2)
canvas.put("-", 7, 2)
canvas.put("(", 4, 3)
canvas.put(".", 5, 3)
canvas.put(".", 7, 3)
canvas.put(")", 8, 3)
canvas.put("-", 5, 4)
canvas.put("-", 6, 4)
canvas.put("-", 7, 4)
def draw_body(canvas):
for i in range(5, 9, 1):
canvas.put("X", 6, i)
def draw_right_arm(canvas):
for i in range(3, 7):
canvas.put("\\", i - 1, i)
def draw_left_arm(canvas):
canvas.put("/", 10, 3)
canvas.put("/", 9, 4)
canvas.put("/", 8, 5)
canvas.put("/", 7, 6)
def draw_right_leg(canvas):
canvas.put("/", 5, 9)
canvas.put("/", 4, 10)
def draw_left_leg(canvas):
canvas.put("\\", 7, 9)
canvas.put("\\", 8, 10)
def draw_left_hand(canvas):
canvas.put("\\", 10, 2)
def draw_right_hand(canvas):
canvas.put("/", 2, 2)
def draw_left_foot(canvas):
canvas.put("\\", 9, 11)
canvas.put("-", 10, 11)
def draw_right_foot(canvas):
canvas.put("-", 2, 11)
canvas.put("/", 3, 11)
PHASES = (
("First, we draw a head", draw_head),
("Now we draw a body.", draw_body),
("Next we draw an arm.", draw_right_arm),
("this time it's the other arm.", draw_left_arm),
("Now, let's draw the right leg.", draw_right_leg),
("This time we draw the left leg.", draw_left_leg),
("Now we put up a hand.", draw_left_hand),
("Next the other hand.", draw_right_hand),
("Now we draw one foot", draw_left_foot),
("Here's the other foot -- you're hung!!", draw_right_foot)
)
words = ["GUM", "SIN", "FOR", "CRY", "LUG", "BYE", "FLY",
"UGLY", "EACH", "FROM", "WORK", "TALK", "WITH", "SELF",
"PIZZA", "THING", "FEIGN", "FIEND", "ELBOW", "FAULT", "DIRTY",
"BUDGET", "SPIRIT", "QUAINT", "MAIDEN", "ESCORT", "PICKAX",
"EXAMPLE", "TENSION", "QUININE", "KIDNEY", "REPLICA", "SLEEPER",
"TRIANGLE", "KANGAROO", "MAHOGANY", "SERGEANT", "SEQUENCE",
"MOUSTACHE", "DANGEROUS", "SCIENTIST", "DIFFERENT", "QUIESCENT",
"MAGISTRATE", "ERRONEOUSLY", "LOUDSPEAKER", "PHYTOTOXIC",
"MATRIMONIAL", "PARASYMPATHOMIMETIC", "THIGMOTROPISM"]
def play_game(guess_target):
"""Play one round of the game"""
wrong_guesses = 0
guess_progress = ["-"] * len(guess_target)
guess_list = []
gallows = Canvas()
init_gallows(gallows)
guess_count = 0
while True:
print("Here are the letters you used:")
print(",".join(guess_list) + "\n")
print("".join(guess_progress) + "\n")
guess_letter = ""
guess_word = ""
while guess_letter == "":
guess_letter = input("What is your guess? ").upper()[0]
if not guess_letter.isalpha():
guess_letter = ""
print("Only letters are allowed!")
elif guess_letter in guess_list:
guess_letter = ""
print("You guessed that letter before!")
guess_list.append(guess_letter)
guess_count += 1
if guess_letter in guess_target:
indices = [i for i, letter in enumerate(guess_target) if letter == guess_letter]
for i in indices:
guess_progress[i] = guess_letter
if guess_progress == guess_target:
print("You found the word!")
break
else:
print("\n" + "".join(guess_progress) + "\n")
while guess_word == "":
guess_word = input("What is your guess for the word? ").upper()
if not guess_word.isalpha():
guess_word = ""
print("Only words are allowed!")
if guess_word == guess_target:
print("Right!! It took you", guess_count, "guesses!")
break
else:
comment, draw_bodypart = PHASES[wrong_guesses]
print(comment)
draw_bodypart(gallows)
print(gallows.render())
wrong_guesses += 1
print("Sorry, that letter isn't in the word.")
if wrong_guesses == 10:
print("Sorry, you lose. The word was " + guess_target)
break
def main():
print(" " * 32 + "HANGMAN")
print(" " * 15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n")
random.shuffle(words)
current_word = 0
word_count = len(words)
keep_playing = True
while keep_playing:
play_game(words[current_word])
current_word += 1
if current_word == word_count:
print("You did all the words!!")
keep_playing = False
else:
keep_playing = input("Want another word? (yes or no) ").lower().startswith("y")
print("It's been fun! Bye for now.")
if __name__ == "__main__":
main()