QuestionQuestion

Create a version of Minesweeper Game in Python.

Solution PreviewSolution Preview

This material may consist of step-by-step explanations on how to solve a problem or examples of proper writing, including the use of citations, references, bibliographies, and formatting. This material is made available for the sole purpose of studying and learning - misuse is strictly forbidden.

class Minesweeper(object):
    ''' Minesweeper class - Plays Minesweeper.

    It provides methods that carry out most of the needed functionality. It has
    the following data structures:
       size: Integer. The board is a square Size x Size grid. Default value 5.
       mines: Integer. The board contains this many bombs, randomly placed at
       start of game. Default value 3.
       actualBoard: A list of size lists, each size items long. This represents
       the current game state. Possible list contents:
            'M': This cell contains a mine (bomb).
            0-8: An integer, giving the number of mines in this cell's
            neighborhood.
       playerBoard: A list of lists, the same size as ActualBoard, containing
       the board as it will be displayed to the player. Possible contents:
            'H': This cell is hidden and can be turned over.
            0-8: This cell has this many mines in its neighborhood.
            'X': Used if the player loses, this shows the location of a mine.
       gameState: Has 3 possible states: "win", "loss", "playing" (These are
       strings)
    '''

    def __init__(self, sideSize = 5, mines = 3):
       ''' Initializer. Sets up boards, places mines (via call to method),
            counts bombs in neighborhod for each bomb (via call to another method).
            In: sideSize of one side of grid, number of mines to be placed.
            Returns: Nothing
            Interaction with user: None.
            Modifications to data structures: ActualBoard is set up, mines
            placed, counts updated. PlayerBoard set to all H. GameState set to
            "playing"
            Errors handled: If SideSize <= 2, a value of 2 is used.
            If SideSize > 15, a value of 15 is used.
            If Mines is greater than the number of cells in the grid, every cell
            is given a bomb and any excess is ignored.
            If Mines < 0, a value of 0 is used.
       '''
       if sideSize <= 2:
            sideSize = 2
       elif sideSize > 15:
            sideSize = 15

       if mines < 0:
            mines = 0
       elif mines > sideSize**2:
            mines = sideSize**2

       self.size = sideSize
       self.mines = mines
       self.gameState = 'playing'

       self.actualBoard = self.createBoard(0)
       self.playerBoard = self.createBoard('H')
       self.placeMines()

    def createBoard(self, value):
       ''' Creates empty board
            In: value - default value for filling board
            Returns: new board represented by list of lists
            Interaction with user: None
            Modifications to data structures: Reads self.size to set apropriate
            size for board
            Errors handled: None
       '''
       board = []
       for i in range(self.size):
            board.append([value] * self.size)
       return board
   
    def placeMines(self):
       ''' Puts mines onto ActualBoard.
            In: None.
            Returns: None.
            Interaction with user: None.
            Modifications to data structures: Reads self.size and self.mines to
            handle setup. Randomly selects location for self.mines mines to be
            placed. Calls self.getCounts() to finish setting up ActualBoard.
            Errors handled: None (input was screened in __init__()). Note that
            this method must make sure that each mine is placed in a separate
            cell; that is, if a mine is about to be placed in a cell that
            already has a mine in it, another cell should be picked instead.
       '''
       mineLocations = [''] * (self.size**2 - self.mines)
       mineLocations += ['M'] * self.mines
       random.shuffle(mineLocations)
       for i, m in enumerate(mineLocations):
            if m == 'M':
                r = i // self.size
                c = i % self.size
                self.actualBoard[r][c] = 'M'
       self.getCounts()...
$70.00 for this solution

PayPal, G Pay, ApplePay, Amazon Pay, and all major credit cards accepted.

Find A Tutor

View available Python Programming Tutors

Get College Homework Help.

Are you sure you don't want to upload any files?

Fast tutor response requires as much info as possible.

Decision:
Upload a file
Continue without uploading

SUBMIT YOUR HOMEWORK
We couldn't find that subject.
Please select the best match from the list below.

We'll send you an email right away. If it's not in your inbox, check your spam folder.

  • 1
  • 2
  • 3
Live Chats