SHARE
TWEET

Untitled

a guest Nov 13th, 2019 103 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include "stdafx.h"
  3. #include <stdlib.h>
  4. using namespace std;
  5. const int X = 9;    const int Y = 7; // Ширина и высота игрового поля
  6. const int max_ship = 4; // Количество кораблей
  7. struct tShip { int x; int y; bool detected; };
  8. tShip Ship[max_ship]; // Наш флот
  9. char game_space[X][Y];
  10. char cx, cy; //координаты пользователя
  11.  
  12.  
  13. int main() // СТРУКТУРНАЯ ДИАГРАММА
  14. {
  15.     int number = 0;
  16.     init_game_field(); //Подготовка игрового поля и кораблей
  17.     do
  18.     {
  19.         output_game_field(); // Вывод игрового поля на экран
  20.         input_data();   //Ввод новых координат пользователем
  21.         number = search_ships();    //Поиск видимых кораблей
  22.         write();
  23.     }       //внести результат на игровом поле
  24.     while (!end_game());
  25. }
  26.  
  27. void init_game_field(void)  // 1. Подготовка игрового поля и кораблей
  28. {
  29.     int i, j;
  30.     for (i = 0; i<X; i++)
  31.         for (j = 0; j<Y; j++)
  32.             game_space[i][j] = '.';
  33.     bool new_number; // Позиция занята?
  34.     srand(0);
  35.     for (i = 0; i<max_ship; i++)
  36.     {
  37.         Ship[i].detected = false;
  38.         do {
  39.             // Выбрать случайную позицию
  40.             Ship[i].x = rand() % X;
  41.             Ship[i].y = rand() % Y;
  42.             new_number = true; // Проверить, не занимает ли данную позицию
  43.                                // один из предыдущих кораблей
  44.             for (j = 0; j<i; j++)
  45.                 if (Ship[j].x == Ship[i].x && Ship[j].y == Ship[i].y)
  46.                     new_number = false; // Уже один расположен!
  47.         } while (!new_number);
  48.     }
  49.     // для контроля выведем все корабли
  50.     for (i = 0; i<max_ship; i++)
  51.         cout << Ship[i].x + 1 << "," << Ship[i].y + 1 << " ";
  52.     cout << endl;
  53. }
  54. void output_game_field(void)  // 2. Вывод игрового поля на экран
  55. {
  56.     int i, j;
  57.     cout << "   1 2 3 4 5 6 7 8 9" << endl;
  58.     for (j = 0; j<Y; j++)
  59.     {
  60.         cout << (char)('A' + j) << " ";
  61.         for (i = 0; i<X; i++)
  62.             cout << " " << game_space[i][j];
  63.         cout << endl;
  64.     };
  65. };
  66. void input_data(void) // 3. Ввод новых координат пользователем
  67. {
  68.     int xin, yin;
  69.     cin >> cx >> cy;
  70.     xin = cx - '1';
  71.     yin = cy - 'A';
  72.     if (xin >= 0 && xin<9 && yin >= 0 && yin<7)
  73.         game_space[xin][yin] = 'x';
  74.     else  cout << "error" << endl;
  75. };
  76.  
  77. int search_ships(int x, int y) // 4. Поиск видимых кораблей
  78. {
  79.     { int num = 0;
  80.     num += search_left(int x, int y);
  81.     num += search_left_up(int x, int y);
  82.     num += search_up(int x, int y);
  83.     num += search_right_up(int x, int y);
  84.     num += search_right(int x, int y);
  85.     num += search_right_down(int x, int y);
  86.     num += search_down(int x, int y);
  87.     num += search_left_down(int x, int y);}
  88. return num;
  89. }  
  90. int search_right_up(int x, int y)
  91. {
  92.     int a;
  93.     x++; y--;
  94.     while (x<X && y >= 0)
  95.     {
  96.         for (a = 0; a<4; a++)
  97.             if (Ship[a].x == x && Ship[a].y == y) return 1;
  98.         x++; y--;
  99.     };
  100.     return 0;
  101. }
  102. int search_left(int x, int y)
  103. {
  104.  
  105. }
  106. int search_left_up(int x, int y)
  107. {
  108.  
  109. }
  110. int search_up(int x, int y)
  111. {
  112.  
  113. }
  114. int search_right(int x, int y)
  115. {
  116.  
  117. }
  118. int search_right_down(int x, int y)
  119. {
  120.  
  121. }
  122. int search_down(int x, int y)
  123. {
  124.  
  125. }
  126. int search_left_down(int x, int y)
  127. {
  128.  
  129. }
  130. bool end_game(void) // конец, результат
  131. {
  132.     char s;
  133.     cout << "continue (Y) or finish(N) ";
  134.     cin >> s;
  135.     if (s == 'y' || s == 'Y') return 0;
  136.     else return 1;
  137. };
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top