Иллюстрированный самоучитель по 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, чтобы сообщить об этом редактору.