• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по C++ Builder

    Игровое поле. Начало игры.

    На разных этапах игры игровое поле выглядит по-разному. Вначале поле просто разделено на клетки. Во время игры, в результате щелчка правой кнопкой мыши, в клетке появляется флажок. Щелчок левой кнопкой тоже меняет вид клетки: клетка меняет цвет и в ней появляется цифра или мина (игра на этом заканчивается). Рассмотрим объекты, свойства и методы, обеспечивающие работу с графикой.

    Начало игры

    В начале игры надо расставить мины и для каждой клетки поля подсчитать, сколько мин находится в соседних клетках. Функция NewGame (ее текст приведен в листинге 10.3), решает эту задачу.

    Листинг 10.3. Функция NewGame.

    // новая игра – генерирует новое поле
    void __fastcall NewGame()
    {
    // Очистим элементы массива, соответствующие отображаемым
    // клеткам, а в неотображаемые, по границе игрового поля,
    // запишем число – 3. Уникальное значение клеток границы
    // используется функцией Open для завершения рекурсивного
    // процесса открытия соседних пустых клеток.
    int row,col;
    for (row=0; row <= MR+1; row++)
    for (col=0; col <= MC+1; col++)
    Pole[row][col] = – 3; for (row=l; row <= MR; row++)
    for (col=l; col <= MC; col++) Pole[row][col] = 0;
    // расставим мины
    time_t t;
    // используется генератором случайных чисел (ГСЧ)
    srand((unsigned) time(&t)); // инициализация ГСЧ
    int n = 0; // количество мин
    do
    {
    row = rand() % MR +1; col = randO % MC +1;
     if (Pole [row] [col],!= 9)
     {
    Pole[row][col] = 9; n++; } } while (n < 10);
    // вычисление количества мин в соседних клетках
    int k;
    for (row = 1; row <= MR; row++)
    for (col = 1; col <= MC; col++)
    if (Pole[row][col]!= 9) { k =0;
    if (Pole[row-1][col-1] == 9) k++;
    if (Pole[row-1][col] == 9) k++;
     if (Pole[row-1][col+1] == 9) k++;
    if (Pole[row][col-1] = 9) k++;
    if (Pole[row][col+1] == 9) k++;
    if (Pole[row+1][col-1] = 9) k++;
     if (Pole[row+1][col] == 9) k++;
     if (Pole[row+1][col+1] == 9) k++;
     Pole[row][col] = k;
     }
    status =0; // начало игры nMin =0;
     // нет обнаруженных мин nFlag =0;
    // нет флагов }
    

    После того как функция NewGame расставит мины, функция showpole (ее текст приведен в листинге 10.4) выводит изображение игрового поля.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.