Giter VIP home page Giter VIP logo

mystery-word's Introduction

Mystery Word

Description

Implement the game of Mystery Word.

Objectives

Learning Objectives

After completing this assignment, you should understand:

  • All the basics of Python!

Performance Objectives

After completing this assignment, you should be able to:

  • Create an interactive program.
  • Read from a file.
  • Choose a random value.
  • Keep track of state.
  • Test your code.

Details

Deliverables

  • A Git repo called mystery-word containing at least:
    • a README.md file explaining how to run your project
    • a requirements.txt file with any third-party packages needed
    • a suite of tests for your project

Requirements

  • Passing unit tests
  • No PEP8 warnings or errors

Normal Mode

You will implement the game Mystery Word. In your game, you will be playing against the computer.

The computer must select a word at random from the list of words in the file /usr/share/dict/words. This file exists on your computer already.

The game must be interactive; the flow of the game should go as follows:

  1. At the start of the game, let the user know how many letters the computer's word contains.

  2. Ask the user to supply one guess (i.e. letter) per round. This letter can be upper or lower case and it should not matter. Assume the user will only submit one letter (see Hard Mode for more on this.)

  3. Let the user know if their guess appears in the computer's word.

  4. Display the partially guessed word, as well as letters that have not been guessed. For example, if the word is BOMBARD and the letters guessed are a, b, and d, the screen should display:

B _ _ B A _ D

A user is allowed 8 guesses. Remind the user of how many guesses they have left after each round.

A user loses a guess only when they guess incorrectly. If they guess a letter that is in the computer's word, they do not lose a guess.

If the user guesses the same letter twice, do not take away a guess. Instead, print a message letting them know they've already guessed that letter and ask them to try again.

The game should end when the user constructs the full word or runs out of guesses. If the player runs out of guesses, reveal the word to the user when the game ends.

Hard Mode

In addition to the requirements from Normal Mode:

  1. Add error-checking to the program. If a user enters more than one letter, tell them the input is invalid and let them try again.

  2. Let the user choose a level of difficulty at the beginning of the program. Easy mode only has words of 4-6 characters; normal mode only has words of 6-10 characters; hard mode only has words of 10+ characters.

  3. Add a loop so that when a game ends, the user is asked if they want to play again and the game begins again if they reply in the positive.

Nightmare Mode

Use the PyGame or Kivy libraries to make this a graphical experience.

Notes

This is the first assignment where you are writing the tests. That makes it extra challenging.

When testing, keep in mind that testing user input and output is hard. Testing functions that have no side-effects -- that is, they take some arguments and return a value without getting information from input() or using random -- is much easier. Try to keep all your logic in pure functions and then have an outer crust of functions that talk to the user or read from files surrounding your delicious pure function middle. If you are able to do this, you will not need to test that outer crust.

Additional Resources

Credit

This lab is based off a similar exercise in MIT's 6.00.1x course.

mystery-word's People

Contributors

cndreisbach avatar zjhuntin avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.