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:
objectThe 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:
objectDefault 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:
objectBasic “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