Генератор кораблей морской бой

Морской бой. Ф-ция автоматической рассатновки кораблей.

Добрый день, ув. форумчане! Есть задание написать консольный морской бой. Есть задача расстановки кораблей компьютера случайным образом. Массив [10][10], заполненный ‘0’ — игровое поле. ‘X’ — корабль.
В ф-ции расстановки кораблей перед заполнением ‘Х’ идет проверка на наличие кораблей в случайно выбранном элементе и вокруг него(чтобы корабли не соприкасались). Мною написана ф-ция:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
void AutoSet(char field[10][10], int m, int n)  field[m][n]='X'; } //Расстановка двохпалубных кораблей for(int i=0; i3; i++) field[m-1][n+1]=='X'  field[m][n]='X'; field[m+1][n]='X'; break; case 1://горизонтальное расположение корабля m=rand()%10; n=rand()%9; while(field[m][n]=='X' || field[m][n+1]=='X' || field[m-1][n-1]=='X' || field[m-1][n]=='X' || field[m-1][n+1]=='X' || field[m-1][n+2]=='X' || field[m][n-1]=='X' || field[m][n+2]=='X' || field[m+1][n-1]=='X' || field[m+1][n]=='X' || field[m+1][n+1]=='X' || field[m+1][n+2]=='X'){ m=rand()%10; n=rand()%9; } field[m][n]='X'; field[m][n+1]='X'; break; } } //Расстановка трехпалубных кораблей for (int i=0; i2; i++) field[m+1][n-1]=='X'  field[m][n]='X'; field[m+1][n]='X'; field[m+2][n]='X'; break; case 1: m=rand()%10; n=rand()%8; while(field[m][n]=='X' || field[m][n+1]=='X' || field[m][n+2]=='X' || field[m-1][n-1]=='X' || field[m-1][n]=='X' || field[m-1][n+1]=='X' || field[m-1][n+2]=='X' || field[m-1][n+3]=='X' || field[m][n-1]=='X' || field[m][n+3]=='X' || field[m+1][n-1]=='X' || field[m+1][n]=='X' || field[m+1][n+1]=='X' || field[m+1][n+2]=='X' || field[m+1][n+3]=='X'){ m=rand()%10; n=rand()%8; } field[m][n]='X'; field[m][n+1]='X'; field[m][n+2]='X'; break; }//switch }//for //Расстановка четырехпалубного корабля int l=rand()%2; switch(l) field[m-1][n+1]=='X'  field[m][n]='X'; field[m+1][n]='X'; field[m+2][n]='X'; field[m+3][n]='X'; break; case 1://горизонтальное положение m=rand()%10; n=rand()%7; while(field[m][n]=='X' || field[m][n+1]=='X' || field[m][n+2]=='X' || field[m][n+3]=='X' || field[m-1][n-1]=='X' || field[m-1][n]=='X' || field[m-1][n+1]=='X' || field[m-1][n+2]=='X' || field[m-1][n+3]=='X' || field[m-1][n+4]=='X' || field[m][n-1]=='X' || field[m][n+4]=='X' || field[m+1][n-1]=='X' || field[m+1][n]=='X' || field[m+1][n+1]=='X' || field[m+1][n+2]=='X' || field[m+1][n+3]=='X' || field[m+1][n+4]=='X'){ m=rand()%10; n=rand()%7; } field[m][n]='X'; field[m][n+1]='X'; field[m][n+2]='X'; field[m][n+3]='X'; break; }//switch }

Проблема в расстановке четырехпалубного корабля — иногда консоль появляеться пустой(я так понял безконечный цыкл появляется) и ничего не происходит. Проблема сугубо в коде расстановки четырехпалубного корабля, без него все работает на ура.
Вот код программы, выводящей заполненное поле на экран:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#include #include #include using namespace std; void AutoSet(char field[10][10], int m, int n); void main() { setlocale(LC_ALL, "rus"); const int m=10, n=10; char pfield[m][n], efield[m][n], nazv[m]={'A','B','C','D','E','F','G','H','I','J'}; for (int i=0; im; i++) //Заполнение for(int j=0; jn; j++) //поля игрока pfield[i][j]=0; //нолями for (int i=0; im; i++) //Заполнение for(int j=0; jn; j++) //поля компьютера efield[i][j]='0'; //нолями AutoSet(efield,m,n); cout<" "; for (int i=0; i10; i++) cout[i]<" "; cout<"\n"; for (int i=0; i10; i++) cout<" "; cout<"\n"; for (int i=0; im; i++){ if (i== 9) cout<(i+1)<" "; else cout<(i+1)<" "; for(int j=0; jn; j++){ cout[i][j]<" "; } cout<"\n"; } }

Просьба к коллегам — посмотрите свежей головой где я начудил, а то уже мозги кипят. Проблема 99% что в расстановке четырехпалубного корабля. Заранее благодарен.

Источник

Морской бой

В головоломке Морской Бой необходимо найти расположение кораблей на карте. Корабль — это линия из 1,2,3 или 4 клеток. Корабли не могут касаться друг друга даже углами. На карте всегда расположен один 4-ех палубник (корабль из 4-ех клеток), два 3-ех палубника (соответственно корабль из 3-ех клеток), 3 2-ух палубника и четыре однопалубника (т.е. 4 одиночных закрашенных клетки). Размер поля от 8×8 до 11×11. Некоторые клетки могут содержать части кораблей для облегчения поиска решения. Числа снизу и справа показывают, сколько в строке или столбце всего закрашено клеток.

Морской бой

3 3

02:18

2023-07-30 18:24

41%

Морской бой

4 3

01:51

2023-07-30 18:32

65%

Морской бой

3 3

01:45

2023-07-30 18:16

34%

Морской бой

6 6

01:11

2023-07-30 18:40

11%

Морской бой

4 4

01:48

2023-07-30 18:08

30%

Морской бой

5 3 1

02:35

2023-07-29 19:44

44%

Морской бой

5 4

02:26

2023-07-28 18:32

31%

Морской бой

3 2

02:22

2023-07-28 18:16

53%

Морской бой

9 7

01:05

2023-07-28 18:08

10%

Морской бой

7 6

01:01

2023-07-28 18:40

11%

Морской бой

7 6

03:13

2023-07-22 22:19

30%

Морской бой

23 16

01:35

2023-07-08 06:31

39%

Морской бой

28 18

00:47

2023-07-10 23:46

16%

Морской бой

17 13

02:07

2023-07-08 19:29

25%

Морской бой

26 19

00:46

2023-07-14 13:12

19%

Морской бой

4 4

01:16

2023-07-28 18:24

3%

Морской бой

12 10

04:53

2023-07-23 10:38

65%

Морской бой

16 8

00:53

2023-07-08 00:32

33%

Морской бой

10 9

02:13

2023-07-14 12:41

40%

Морской бой

8 5

01:53

2023-07-19 19:29

57%

Морской бой

10 6

01:03

2023-07-23 18:08

10%

Морской бой

8 8

10:01

2023-07-13 18:41

59%

Морской бой

16 12

01:50

2023-07-14 00:41

25%

Морской бой

8 6

02:52

2023-07-23 18:16

33%

Морской бой

11 7

03:31

2023-07-14 21:08

40%

Морской бой

10 7

01:30

2023-07-14 21:32

23%

Морской бой

20 14

01:11

2023-07-08 00:40

21%

Морской бой

12 11

01:25

2023-07-13 22:48

23%

Морской бой

8 6

01:42

2023-07-14 21:16

27%

Морской бой

16 9

01:41

2023-07-14 21:38

27%

Морской бой

6 5

03:15

2023-07-14 21:24

63%

Морской бой

5 5

04:51

2023-07-08 00:24

44%

Морской бой

20 14

00:56

2023-07-14 13:11

15%

Морской бой

7 6

05:24

2023-07-08 00:16

57%

Морской бой

7 4

01:11

2023-07-23 18:32

3%

Морской бой

9 7 1

07:50

2023-07-10 19:44

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Генератор кораблей для игры «Морской бой»

DmitriyRudenskiy/sea_fight

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Устанавливаем автозагрузку файлов php composer.phar install —no-dev

Запускаем сервер php -S localhost:3000

  1. Запрограммировать генератор координат кораблей для игры «Морской бой». Генератор должен в квадрате 10×10 размещать 1 корабль — ряд из 4 клеток, 2 корабля — ряд из 3 клеток, 3 корабля — ряд из 2 клеток, 4 корабля — 1 клетка. Корабли не могут касаться друг друга. Каждый корабль надо строить «в линейку» вертикально или горизонтально.
  2. Написать скрипт, который будет визуализировать полученные от генератора координаты. Скрипт должен генерировать html страницу с игровым полем и расставленными на нем кораблями. Так же на странице должна быть кнопка «Обновить», которая перезагружает страницу, тем самым обновляя игровое поле.
  3. Дополнительно предлагается сделать обновление игрового поля при помощи ajax. По клику на кнопку «Обновить» сама страница не перезагружается, а лишь обновляется игровое поле.
  4. Запоминать сгенерированные расстановки(координаты) в базе данных(чтобы по id можно было восстановить расположение кораблей). Сделать так, что бы при запросе http://localhost/ID генерировалась страница с расстановкой кораблей из бд с

About

Генератор кораблей для игры «Морской бой»

Источник

Читайте также:  Рисунок моря и озера
Оцените статью