hangman package¶
Hangman¶
A well tested, cli, python version-agnostic, multi-platform hangman game. It’s built following TDD principles and each component services a sensibly distinct logical purpose.
Submodules¶
hangman.__main__¶
Entry point for hangman
command.
hangman.controller¶
This module is responsible for guiding the user through the game.
-
hangman.controller.
game_loop
(game=hangman(status='_______', misses=[], remaining_turns=10), flash=<hangman.utils.FlashMessage object>)[source]¶ Main game loop.
Parameters: - game (hangman.model.Hangman) – Hangman game instance.
- flash (hangman.utils.FlashMessage) – FlashMessage utility
Returns:
hangman.model¶
This module contains all of the game logic.
-
class
hangman.model.
Hangman
(answer=None)[source]¶ Bases:
object
The hangman game object contains the logic for managing the status of the game and raising key game related events.
>>> from hangman.model import Hangman >>> game = Hangman(answer='hangman') >>> game.guess('a') hangman(status='_A___A_', misses=[], remaining_turns=10)
>>> game.guess('n').guess('z').guess('e') hangman(status='_AN__AN', misses=['E', 'Z'], remaining_turns=8)
>>> game.status '_AN__AN'
>>> game.misses ['E', 'Z']
>>> game.remaining_turns 8
-
MAX_TURNS
= 10¶
-
add_hit
(value)[source]¶ Add a hit to the model. Check for game won.
Parameters: value – A single letter. Raises: GameWon
-
add_miss
(value)[source]¶ Add a miss to the model. Check for game over.
Parameters: value – A single letter. Raises: GameOver
-
guess
(letter)[source]¶ Check if guess is a hit or miss.
Parameters: letter (str) – Letter to check Returns: self Return type: Hangman Raises: ValueError
-
hits
¶ Get list of hits.
Return type: [str]
-
is_valid_answer
(word)[source]¶ Validate answer. Letters only. Max:16
Parameters: word (str) – Word to validate. Returns: Return type: bool
-
is_valid_guess
(letter)[source]¶ Validate guess. Letters only. Max:1
Parameters: letter (str) – Letter to validate Returns: Return type: bool
-
misses
¶ Get list of misses.
Return type: [str]
-
remaining_turns
¶ Calculate number of turns remaining.
Returns: Number of turns remaining. Return type: int
-
status
¶ Build a string representation of status with letters for hits and _ for unknowns.
Returns: game status as string Return type: str
-
hangman.utils¶
App utilities.
-
class
hangman.utils.
WordBank
[source]¶ Bases:
object
Default collection of words to choose from
-
WORDS
= ['ATTEMPT', 'DOLL', 'ELLEN', 'FLOATING', 'PRIDE', 'HEADING', 'FILM', 'KIDS', 'MONKEY', 'LUNGS', 'HABIT', 'SPIN', 'DISCUSSION', 'OFFICIAL', 'PHILADELPHIA', 'FACING', 'MARTIN', 'NORWAY', 'POLICEMAN', 'TOBACCO', 'VESSELS', 'TALES', 'VAPOR', 'INDEPENDENT', 'COOKIES', 'WEALTH', 'PENNSYLVANIA', 'EXPLANATION', 'DAMAGE', 'OCCASIONALLY', 'EXIST', 'SIMPLEST', 'PLATES', 'CANAL', 'NEIGHBORHOOD', 'PALACE', 'ADVICE', 'LABEL', 'DANNY', 'CLAWS', 'RUSH', 'CHOSE', 'EGYPT', 'POETRY', 'BREEZE', 'WOLF', 'MANUFACTURING', 'OURSELVES', 'SCARED', 'ARRANGEMENT', 'POSSIBLY', 'PROMISED', 'BRICK', 'ACRES', 'TREATED', 'SELECTION', 'POSITIVE', 'CONSTANTLY', 'SATISFIED', 'ZOO', 'CUSTOMS', 'UNIVERSITY', 'FIREPLACE', 'SHALLOW', 'INSTANT', 'SALE', 'PRACTICAL', 'SILLY', 'SATELLITES', 'SHAKING', 'ROCKY', 'SLOPE', 'CASEY', 'REMARKABLE', 'RUBBED', 'HAPPILY', 'MISSION', 'CAST', 'SHAKE', 'REQUIRE', 'DONKEY', 'EXCHANGE', 'JANUARY', 'MOUNT', 'AUTUMN', 'SLIP', 'BORDER', 'LEE', 'MELTED', 'TRAP', 'SOLAR', 'RECALL', 'MYSTERIOUS', 'SWUNG', 'CONTRAST', 'TOY', 'GRABBED', 'AUGUST', 'RELATIONSHIP', 'HUNTER', 'DEPTH', 'FOLKS', 'DEEPLY', 'IMAGE', 'STIFF', 'RHYME', 'ILLINOIS', 'SPECIES', 'ADULT', 'FINEST', 'THUMB', 'SLIGHT', 'GRANDMOTHER', 'SHOUT', 'HARRY', 'MATHEMATICS', 'MILL', 'ESSENTIAL', 'TUNE', 'FORT', 'COACH', 'NUTS', 'GARAGE', 'CALM', 'MEMORY', 'SOAP']¶
-
-
class
hangman.utils.
FlashMessage
[source]¶ Bases:
object
Basic “flash message” implementation.
-
game_answer
= ''¶
-
game_over
= False¶
-
game_won
= False¶
-
message
= ''¶
-
hangman.view¶
This module handles user interaction. Printing and prompting.
-
hangman.view.
build_partial_picture
(remaining_turns)[source]¶ Generator. Draw the iconic hangman game status.
Parameters: remaining_turns (int) – Number of turns remaining. Returns: Line of picture.
-
hangman.view.
build_partial_status
(misses_block)[source]¶ Generator. Draw game status.
Returns: Line of status.
-
hangman.view.
draw_board
(game, message=<hangman.utils.FlashMessage object>)[source]¶ Present the game status with pictures.
Clears the screen. Flashes any messages. Zip the two halves of the picture together.
Parameters: - game (hangman.Hangman) – game instance
- message (hangman.utils.FlashMessage) – flash message
Raises: hangman.utils.GameFinished
Returns: self
-
hangman.view.
prompt_guess
()[source]¶ Prompt user for a single keystroke.
Returns: a single letter Raises: KeyboardInterrupt