Ejemplo n.º 1
0
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();
}
Ejemplo n.º 3
0
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;
    }
Ejemplo n.º 4
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 );
    }
}