void Field::setOpen(int x, int y){ if(minesPlaced == false){ startTime = time(nullptr); placeMines(x, y); minesPlaced = true; } int index = y * width + x; if(field[index].isOpen == false){ openTiles++; } field[index].isOpen = true; if(field[index].isMine){ minesOpened = true; endTime = time(nullptr); endTimeSet = true; for(int i = 0; i < height * width; i++){ if(field[i].isMine){ field[i].isOpen = true; } } } if(isMine(x,y) == false && getSurroundingMines(x, y) == 0){ flushSurrounding(x, y); } if(onlyMinesLeft()){ endTime = time(nullptr); endTimeSet = true; for(int i = 0; i < height * width; i++){ if(field[i].isMine){ field[i].isFlagged = true; } } } }
/*Fill the array with the standard number*/ void MGrid::initialiseArray() { // Create NEW array mArray = new int[height*width]; for (int r = 0; r < height; r++) { for (int c = 0; c < width; c++) { mArray[(width*r) + c] = 0; } } // Randomly place the mines placeMines(); // UPDATE grid accordingly. mineGridCalculations(); }
int main(int argc,char **argv) { int i; char **mineBoard = 0; char **statusBoard = 0; //for(i=0;i<argc;i++) //printf("argv[%d] = %s\n",i,argv[i]); int rows = atoi(argv[1]) + 1; //printf("rows = %d\n",rows); int colums = atoi(argv[2]) + 1; //printf("cols = %d\n",colums); int mines = atoi(argv[3]); //printf("mines = %d\n",mines); mineBoard = makeEmptyBoard(mineBoard,rows,colums); //printf("\n"); statusBoard = makeEmptyBoard(statusBoard,rows,colums); //printf("\n"); //printf("rows = %d\n",rows); //printf("cols = %d\n",colums); //displayBoard(mineBoard,rows,colums); //displayBoard(statusBoard,rows,colums); coverBoard(statusBoard,rows,colums); displayBoard(statusBoard,rows,colums); mineBoard = placeMines(rows,colums,mines,mineBoard); mineBoard = fillBoard(mineBoard,rows,colums); displayBoard(mineBoard,rows,colums); /*int r,c; for (r=0;r<rows;r++) { for (c=0;c<colums;c++) { printf("[%c] ",mineBoard[r][c]); } printf("\n"); }*/ //free(mineBoard); //free(statusBoard); return 0; }
void MineField::cellClicked( int row, int col ) { if ( state() == GameOver ) return; if ( state() == Waiting ) { Mine* m = mine( row, col ); if ( !m ) return; m->setState( Mine::Empty ); nonminecount--; placeMines(); setState( Playing ); emit gameStarted(); updateMine( row, col ); } else { // state() == Playing holdTimer->stop(); if ( ignoreClick ) ignoreClick = FALSE; else updateMine( row, col ); } }