Monday, January 11, 2016

Minesweeper Game | 刷题



Minesweeper Game | 刷题
Design and implement the constructor of a minesweeper game that takes in the dimension of the field and number of mines as input.
/**
* Create a new game board with the given size and number of mines.  The
* mines are randomly distributed across the board.  Currently no error
* checking is done, so if numMines > width*height the program will hang.
*/
public Board(int width, int height, int numMines) {

    // Initialise instance variables.  Note the use of 'this' when parameters
    // have the same name.
    this.width = width;
    this.height = height;
    this.numMines = numMines;
    this.numMarked = 0;
    this.numUnknown = width * height;

    // Allocate storage for game board and mines
    mines = new boolean[width][height];
    board = new int[width][height];

    // Clear the board
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            mines[i][j] = false;
            board[i][j] = UNKNOWN;
        }
    }

    // Randomly allocate mines.  The loop runs until numMines mines have been
    // placed on the board.  The the purposes of this operation we treat the
    // board as a width*height linear array of cells, and simply try again if
    // the chosen cell already contains a mine.
    int cells = width * height;
    int temp = 0;
    Random rand = new Random();

    while (temp < numMines) {
        int cell = rand.nextInt();
        cell = (cell < 0 ? -cell : cell)%cells;
        if (!mines[cell%width][cell/width]) {
            mines[cell%width][cell/width] = true;
            temp++;
        }
    }
}
http://www.eecs.qmul.ac.uk/~mmh/ItP/resources/MineSweeper/Notes.html

Read full article from Minesweeper Game | 刷题

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts