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

    Текст программы

    Полный текст программы "Сапер" приведен ниже: в листингах 10.11 и 10.12 – заголовочный файл и модуль главной формы; в листинге 10.13 – модуль формы О программе.

    Листинг 10.11. Заголовочный файл главной формы (saper_.h).

    #ifndef saper_H fdefine saper_H
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCTRLs.hpp>
    #include <Forms.hpp>
    #include <ExtCTRLs.hpp>
    # include <Menus.hpp>
    class TForml: public TForm { published:
    TMainMenu *MainMenul;
    // команды главного меню TMenuItem *N1;
    // Новая игра TMenuItem *N2; // команда "?"
    // команды меню "?" TMenuItem *N3;
    // Справка TMenuItem *N4; // О программе
    void __fasteall
    FormMouseDown(TObject *Sender, TMouseButton Button,
    TSHIFTState SHIFT, int X, int Y);
    void __fastcall FormPaint(TObject *Sender);
    void _fastcall FormCreate(TObject *Sender);
    // выбор,команды в меню
    void fastcall NIClick(TObject *Sender);
    // Новая игра
    void __fastcall N3Click(TObject *Sender);
    // Справка
    void __fastoall N4Click(TObject *Sender);
    // О программе
    private:
    void fastcall ShowPole(int status); // отображает поле
    // отображает содержимое клетки
    void __fastcall Kletka (int row, int col, int status);
    void __fastcall Mina (int x, int y); // рисует мину
    void __fastcall Flag(int x, int y); // рисует флаг
    public:
    __fastcall TForml(TComponent* Owner); };
    extern PACKAGE TForml *Forml; tendif
    

    Листинг 10.12. Модуль главной формы (saperXcpp).

    /*
    Игра "Сапер". Демонстрирует работу с графикой,
    использование рекурсии, доступ к файлу справочной информации.
    */
     # include <vcl.h>
    #include <stdlib.h> // для доступа к ГСЧ
    #include <time.h>
     # linclude <stdio.h>
     # pragma hdrstop
     # include "saper_.h"
     # include "saper_2.cpp"
     # pragma package(smart_init)
     # pragma resource "*.dfm"
    TForml *Forml; // главное окно
    fastcall TForml::TForml(TComponent* Owner)
    : TForm(Owner) { }
    fdefine MR 10 // кол-во клеток – по вертикали fdefine MC 10
    // кол-во клеток по горизонтали idefine MM 10 // кол-во мин
    int Pole[MR+2][МС+2]; // минное поле
    // 0..8 – количество мин в соседних клетках
    // 9 – в клетке мина
    // 100..109 – клетка открыта
    // 200..209 – в клетку поставлен флаг
    int nMin; // кол-во, найденных мин
    int nFlag; // кол-во поставленных флагов
    int status =0; //0 – начало игры; 1 – игра; 2 – результат
    // смещение игрового поля относительно левого верхнего угла
    // поверхности формы tdefine LEFT 0
    // по X Idefine ТОР 1 // по Y
    ttdefine W 40
    // ширина клетки поля #define H 40
    // высота клетки поля
    void __fastcall NewGameO;
    // новая игра – "разбрасывает" мины
    void __fastcall Open(int row, int col);
    /* открывает текущую и соседние
    пустые клетки */
    // нажатие кнопки мыши на игровом поле
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.