В - Разработка программы на языке C++, реализующей игру "Морской бой"

ИСХОДНЫЙ КОД ЛИСТИНГА

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

Ь Flot

Ь AI

Ь Referee

Ь HandersOfEvents

Класс Flot - класс, который содержит данные о кораблях (количество кораблей, поле на котором следует размещать корабли и т. д.);

Класс AI - так называемый класс искусственного интеллекта, размещает корабли противника;

Класс Referee - наследник класса AI, который проверяет состояние кораблей и флотов пользователя и компьютера;

Класс HandersOfEvents - наследник класса Referee. Это единственный класс в данной программе, который взаимодействует с формой напрямую.

Также в программе используется структура Ship, которая содержит данные о количестве палуб корабля, расположении частей корабля, следит за состоянием корабля в целом.

// классFlot

ClassFlot

{

Public:

Int i, j, n; // переменные, используемые в циклах

Booldestroy; // флаг, проверяющий наличие флота

TImage *Im; // поле, на котором мы рисуем

Ship ship[10]; // количество кораблей

Flot (TImage *I)

{

Destroy = false;

Im = I;

N = 1;

For (i = 0; i< 10; i++)

{

If (i< 6) n = 2;

If (i< 3) n = 3;

If (i == 0) n = 4;

Ship[i].destroy = false;

Ship[i].col_deck = n;

Ship[i].decks = new bool[n];

Ship[i].desp_of_part = new TPoint[n];

}

}

IntGetStatus();

};

// класс AI

Class AI

{

Public:

Int Generation (Flot *CPU, intcol_ship, intcol_deck); // размещение кораблей противника

};

// класс Referee

Class Referee: public AI

{

Public:

Inti, j, target_player, target_CPU;

Bool net1 [10] [10], net2 [10] [10], game_over;

Flot *player, *CPU;

Referee()

{

For (i = 0; i< 10; i++)

For (j = 0; j < 10; j++)

{

Net1 [i] [j] = true;

Net2 [i] [j] = true;

}

Game_over = false;

Target_player = 0;

Target_CPU = 0;

}

IntGoChecking (int x, int y, int n); // запускфункциипроверки

IntCheck (boolnet[10] [10], int x, int y); // проверка попадания в старую или новую ячейку

IntGoScaning (int x, int y, int n); // запуск функции сканирования

IntScan (Flot *fl, int x, int y); // сканирование (проверка) попадания в корабль

IntMiss (int x, int y, int n); // отмечание ячейки в которую попали (но не в корабль)

IntEndRaund (int n); // конецигры

};

// классHandlersOfEvents

ClassHandlersOfEvents: public Referee

{

Public:

Bool play;

Intcol_deck, col_ship, i, j, k;

HandlersOfEvents (TImage *Im1, TImage *Im2)

{

Play = false;

Col_deck = 4; col_ship = 1;

Player = new Flot(Im1);

CPU = new Flot(Im2);

}

Int Play (TImage *Im1, TImage *Im2);

Int Move();

IntDesposition (int x, int y, TMouseButton Button); // размещениекораблей

Int Draw (String key, int x, int y, int n); // рисование

IntShootPlayer (int x, int y, int n); // выстрелигрока

IntShoot (int x, int y); // выстрел компьютера

};

// структура Ship

StructShip

{

Booldestroy; // флаг уничтожения корабля

Intcol_deck; // количество палуб

Bool *decks; // массив палуб

TPoint *desp_of_part; // расположение частей (палуб) корабля

};

Похожие статьи




В - Разработка программы на языке C++, реализующей игру "Морской бой"

Предыдущая | Следующая