Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "stdafx.h"
- #include <stdlib.h>
- using namespace std;
- const int X = 9; const int Y = 7; // Ширина и высота игрового поля
- const int max_ship = 4; // Количество кораблей
- struct tShip { int x; int y; bool detected; };
- tShip Ship[max_ship]; // Наш флот
- char game_space[X][Y];
- char cx, cy; //координаты пользователя
- int main() // СТРУКТУРНАЯ ДИАГРАММА
- {
- int number = 0;
- init_game_field(); //Подготовка игрового поля и кораблей
- do
- {
- output_game_field(); // Вывод игрового поля на экран
- input_data(); //Ввод новых координат пользователем
- number = search_ships(); //Поиск видимых кораблей
- write();
- } //внести результат на игровом поле
- while (!end_game());
- }
- void init_game_field(void) // 1. Подготовка игрового поля и кораблей
- {
- int i, j;
- for (i = 0; i<X; i++)
- for (j = 0; j<Y; j++)
- game_space[i][j] = '.';
- bool new_number; // Позиция занята?
- srand(0);
- for (i = 0; i<max_ship; i++)
- {
- Ship[i].detected = false;
- do {
- // Выбрать случайную позицию
- Ship[i].x = rand() % X;
- Ship[i].y = rand() % Y;
- new_number = true; // Проверить, не занимает ли данную позицию
- // один из предыдущих кораблей
- for (j = 0; j<i; j++)
- if (Ship[j].x == Ship[i].x && Ship[j].y == Ship[i].y)
- new_number = false; // Уже один расположен!
- } while (!new_number);
- }
- // для контроля выведем все корабли
- for (i = 0; i<max_ship; i++)
- cout << Ship[i].x + 1 << "," << Ship[i].y + 1 << " ";
- cout << endl;
- }
- void output_game_field(void) // 2. Вывод игрового поля на экран
- {
- int i, j;
- cout << " 1 2 3 4 5 6 7 8 9" << endl;
- for (j = 0; j<Y; j++)
- {
- cout << (char)('A' + j) << " ";
- for (i = 0; i<X; i++)
- cout << " " << game_space[i][j];
- cout << endl;
- };
- };
- void input_data(void) // 3. Ввод новых координат пользователем
- {
- int xin, yin;
- cin >> cx >> cy;
- xin = cx - '1';
- yin = cy - 'A';
- if (xin >= 0 && xin<9 && yin >= 0 && yin<7)
- game_space[xin][yin] = 'x';
- else cout << "error" << endl;
- };
- int search_ships(int x, int y) // 4. Поиск видимых кораблей
- {
- { int num = 0;
- num += search_left(int x, int y);
- num += search_left_up(int x, int y);
- num += search_up(int x, int y);
- num += search_right_up(int x, int y);
- num += search_right(int x, int y);
- num += search_right_down(int x, int y);
- num += search_down(int x, int y);
- num += search_left_down(int x, int y);}
- return num;
- }
- int search_right_up(int x, int y)
- {
- int a;
- x++; y--;
- while (x<X && y >= 0)
- {
- for (a = 0; a<4; a++)
- if (Ship[a].x == x && Ship[a].y == y) return 1;
- x++; y--;
- };
- return 0;
- }
- int search_left(int x, int y)
- {
- }
- int search_left_up(int x, int y)
- {
- }
- int search_up(int x, int y)
- {
- }
- int search_right(int x, int y)
- {
- }
- int search_right_down(int x, int y)
- {
- }
- int search_down(int x, int y)
- {
- }
- int search_left_down(int x, int y)
- {
- }
- bool end_game(void) // конец, результат
- {
- char s;
- cout << "continue (Y) or finish(N) ";
- cin >> s;
- if (s == 'y' || s == 'Y') return 0;
- else return 1;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement