示例#1
0
bool init_grid(struct grid *grid, int row, int col)
{
  int i;
  int j;
  int x;
  int y;

  if (!fill_grid(grid, row, col))
    return false;
  for (i = 0; i < grid->x; i++)
    for (j = 0; j < grid->y; j++) {
        grid->cell[i][j].visible = false;
        grid->cell[i][j].flagged = false;
        grid->cell[i][j].value = 0;
    }
  for (i = 0; i < grid->mines; i++) {
    do {
      x = (int)rand() % grid->x;
      y = (int)rand() % grid->y;
    }
    while (grid->cell[x][y].value == -1);
    add_mine(grid, x, y);
  }
  return true;
}
示例#2
0
void Input<T>::start(int player, int n_inputs)
{
    reset(player);
    if (player == proc.P.my_num())
    {
        for (int i = 0; i < n_inputs; i++)
        {
            T t;
            try
            {
                this->buffer.input(t);
            }
            catch (not_enough_to_buffer& e)
            {
                throw runtime_error("Insufficient input data to buffer");
            }
            add_mine(t);
        }
        send_mine();
    }
    else
    {
        for (int i = 0; i < n_inputs; i++)
            add_other(player);
    }
}
void fill(int (*table)[MAXN], int n)
{
    int i, j, val;

    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &val);
            if (val == 1) {
                add_mine(table, i, j, n);
            }
        }
    }
}
示例#4
0
void map_gen(struct map *map) {
    int i, j,
         x, y;
    for(i = 0; i < map->rows; ++i)
        for(j = 0; j < map->columns; ++j)
            map->Map[i][j].value = EMPTY;

    for(i = 0; i < map->mines; ++i) {
        do {
            x = (int)rand() % map->rows;
            y = (int)rand() % map->columns;
        } while(map->Map[x][y].value == MINE);

        add_mine(map, x, y);
    }
    for(i = 0; i < map->rows; ++i)
        for(j = 0; j < map->columns; ++j)
            if(map->Map[i][j].value != MINE && map->Map[i][j].value != ' ')
                map->Map[i][j].value += '0' - EMPTY;
}