Проектирование и разработка программных продуктов на примере разработки игрового приложения «Reversi», страница 2

  int numTurns;                              // номер текущего хода

  int Table[Width][Width];            // массив игрового поля с положением шариков

  void SetColor(cTurn thisTurn);   // функция замены цвета шариков для текущего хода

        //thisTurn

  int  CanMoveTo(int x,int y,int player); // функция проверки возможности хода на клетку с

      //координатами x,y текущим игроком player

 public:

  cReversi();                   //конструктор

  void NewGame();               //функция создания новой игры

  int SaveGame(char *FileName); //функция сохранения игры

  int LoadGame(char *FileName); //функция загрузки игры

  int  getPlayer(int x,int y);  //функция определения владельца шарика, стоящего на

         // координатах x,y

  bool isGameOver();            //функция окончания игры при невозможности совершения

           //хода ни одним из игроков

  void Move(int x,int y,int player);                    //запись хода

  int GetMoveTable(int player,int xs[Width][Width]);   //создания массива возможных ходов  

//xs, игрока player, возвращает количество возможных ходов

  int GetNum(int player);    // функция подсчета шариков игрока player

  cTurn GetTurn(int index);  // функция получения информации о ходе № index

  void  SetTurn(int index);   // функция установки хода № index

  int   GetNumTurns();        // функция, возвращающая номер текущего хода

};

class TForm1 : public TForm  //класс главного окна

{

__published:   // IDE-managed Components

        TMainMenu *MainMenu1;

        TMenuItem *Game1;

        TMenuItem *N1;

        TMenuItem *N2;

        TMenuItem *N3;

        TMenuItem *N4;

        TMenuItem *N7;

        TMenuItem *N8;

        TMenuItem *N9;

        TGroupBox *GroupBox1;

        TGroupBox *GroupBox2;

        TLabel *Label1;

        TLabel *Label2;

        TListBox *ListBox1;

        TPaintBox *PaintBox1;

        TImage *RedC;

        TImage *BlueC;

        TOpenDialog *OpenDialog1;

        TSaveDialog *SaveDialog1;

        TImage *ImageFrame;

        TImage *ImageFon;

        TMenuItem *N5;

        TOpenDialog *OpenDialog2;

        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

        void __fastcall N4Click(TObject *Sender);

        void __fastcall N1Click(TObject *Sender);

        void __fastcall PaintBox1Click(TObject *Sender);

        void __fastcall PaintBox1Paint(TObject *Sender);

        void __fastcall PaintBox1MouseMove(TObject *Sender,

          TShiftState Shift, int X, int Y);

        void __fastcall ListBox1DblClick(TObject *Sender);

        void __fastcall N2Click(TObject *Sender);

        void __fastcall N3Click(TObject *Sender);

        void __fastcall FormCreate(TObject *Sender);

        void __fastcall N8Click(TObject *Sender);

        void __fastcall N9Click(TObject *Sender);

        void __fastcall N5Click(TObject *Sender);

private:           // User declarations

        void __fastcall ReBuildList();

        void __fastcall CheckGame();

public:            // User declarations

        __fastcall TForm1(TComponent* Owner);

};


Основные фрагменты кода программы:

// функция начала новой игры

void __fastcall TForm1::N1Click(TObject *Sender)

{

 Game.NewGame();

 player=0;

 Game.GetMoveTable(player,movs);

 Label2->Caption="Красный";

 PaintBox1->Repaint();

 ReBuildList();