
- •1. Постановка задачи
- •1.1. Анализ задачи
- •1.2. Формальная постановка задачи
- •1.3. Алгоритм программы
- •2. Программирование задачи
- •Void zast(void);
- •Void kletka (int X, int y, char name[10])
- •Void sozd_korabl ()
- •Int test_user_xy (int X, int y, int d, int s)
- •Int test_cpu_xy (int X, int y, int d, int s)
- •Void bitva ()
- •Int user_hod (int X, int y)
- •Void deletestring (int y, int count)
- •Void main ()
- •Тестирование программы
Void sozd_korabl ()
Данная функция предназначена для создания кораблей.
Входные данные: otv-способ расположения кораблей: автоматически или вручную. x, y- координаты расположения кораблей. d- горизонтально или вертикально.
Выходные данные: текст выводимый на экран требующая введение данных.
Тело функции:
{
int i, ship_size = 3, j, temp, direction, x, y, d, otv = 0; // элементы которые будут использоваться в данной функции.
….
deletestring (15, 1); // вызов функции.
for (i = 0; i < count_n; i ++)
{….
do // Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла.
{
….
if (!otv) cin >>x; else x = random (10);// if(){};else{}-оператор условия. random();-возвращает случайное число от 0 до n-1;
….
}
while (!test_user_xy (x, y, d, ship_size));
….
}
for (i = 0; i < count_n; i ++)
{
do
{…
}
while (!test_cpu_xy (x, y, d, ship_size));
…
}
cout <<"";
}
Int test_user_xy (int X, int y, int d, int s)
Данная функция предназначена для изображения кораблей игрока на поле.
В данной функции входные данные отсутствуют.
Выходные данные: текст выводящей об ошибке расстановки кораблей.
Обозначение места нахождения корабля под “XX”.
Тело функции:
{
if ((x < 0) || (x > 9) || (y < 0) || (y > 9) || ((!d) && (x + s > 9)) || ((d) && (y + s > 9))) // задает условие.
{….
return 0; // Оператор return завершает выполнение функции, в которой он задан, и возвращает управление в вызывающую функцию, в точку, непосредственно следующую за вызовом
}
int i, j, dx, dy; // элементы использующие в данной функции
while (((!d) && (dx <= s)) || ((d) && (dy <= s))) // Оператор цикла while или цикл while - цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.
{
….
}
if (d) dy ++; else dx ++; // i++ операция инкремента.
}
while (((!d) && (dx <= s)) || ((d) && (dy <= s)))
{….
}
Int test_cpu_xy (int X, int y, int d, int s)
Данная функция предназначена для изображения кораблей компьютера на поле, но они бывают скрыты. Данная функция не имеет входных и выходных данных.
Void bitva ()
В данной функции осуществляется ход игрока и компьютера. И объявляют победителя.
Входные данные: x, y- координаты выстрела.
Выходные данные: текс по которым не обходимо ввести входные данные.
Текст выводящий на экран ход компьютера. Текст объявляющий победу игрока или компьютера.
Int user_hod (int X, int y)
Данная функция предназначена для осуществления хода игрока, где узнают уничтожили корабль или промахнулись.
В данной функции отсутствуют входные данные.
Выходные данные: текст содержащий в себе информацию о промахе или попадании. Обозначение места выстрела: при попадании-“@@”, при промахе- «()».
int cpu_hod (int x, int y)
Данная функция предназначена для осуществления хода компьютера, где узнают уничтожили корабль или промахнулись.
В данной функции отсутствуют входные данные.
Выходные данные: текст содержащий в себе информацию о промахе или попадании. Обозначение места выстрела: при попадании-“@@”, при промахе- «()».