Странно счетчик произведенных выстрелов работает.
Ситуация.
Стреляю по D3 и топлю одиночный корабль противника.
Пишет, что сделано 39 выстрелов.
Стреляю I6 и топлю последний одиночный корабль противника.
Пишет, что сделан 41 выстрел.
Следующий боя так же счетчик +1 выстрел непроизведенный прибавляет в случае победы.
Счетчик показывает 64 выстрела перед нажатием на E5
После нажатия уже пишет что 66 выстрелов было, когда всего 65 должно быть написано.
Заявка ЦПП ID 141939023, там же отчет ВГчек.
Дополню. После сбора отчета ВГчек зашел в Морской бой и появился экран как на скрине выше но только число выстрелов на 1 меньше и соответствует нормальному числу
Возможно при сборке отчета была устранена ошибка.
Еще дополню. Сыграл еще бой. Но уже открыл во внешнем браузере Морской бой. Играл делая часть выстрелов в клиенте, часть в игре. Завершал партию в клиенте. Счетчик показал, что выполнено 47 выстрелов.
Произвожу 1 выстрел и топлю последний корабль. Прямо на глазах счетчик проматывает 48 и пишет что произведено 49 выстрелов.
(видел 48 доли секунды и поменялось на 49). После чего перешел во внешний браузер там была та же картинка с числом 49. Нажал обновить страницу. Число поменялось как в браузере, так и в игре на 48.
#include<iostream>
#include<ctime>
#include<iomanip>
#include<string>
#include<Windows.h>
#include<windows.h>
using namespace std;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
const int FIELD_SIZE = 10;
char Player1[100];
char Player2[100];
int amount_of_ship_cells_left_to_drown_P1;
int amount_of_ship_cells_left_to_drown_P2;
// [x][y], где x - вертикаль, y - горизонталь
char WaterP1 = '~';
char WaterP2 = '~';
char TorpedeP1 = 'Т';
char TorpedeP2 = 'Т';
char DestroyerP1 = 'Э';
char DestroyerP2 = 'Э';
char CruiserP1 = 'К';
char CruiserP2 = 'К';
char BattleshipP1 = 'Л';
char BattleshipP2 = 'Л';
char ShipHitP1 = 'Х';
char ShipHitP2 = 'X';
char HitMissP1 = '*';
char HitMissP2 = '*';
void ifP1Win(char* p1) {
system("cls");
cout << "Игрок " << p1 << " ПОБЕДИЛ!!! Поздравляем!" << endl;
system("pause");
}
void ifP2Win(char* p2) {
system("cls");
cout << "Игрок " << p2 << " ПОБЕДИЛ!!! Поздравляем!" << endl;
system("pause");
}
bool Cell_checker(int PlayerNumber, int asked_cell) {
char T;
char D;
char C;
char BS;
switch (PlayerNumber)
{
case 1:
{
T = TorpedeP1;
D = DestroyerP1;
C = CruiserP1;
BS = BattleshipP1;
} break;
case 2:
{
T = TorpedeP2;
D = DestroyerP2;
C = CruiserP2;
BS = BattleshipP2;
} break;
}
if (asked_cell == T || asked_cell == D || asked_cell == C || asked_cell == BS)
return true;
else
return false;
}
void Print_table(char arr[][FIELD_SIZE]) {
cout << "_|";
for (int i = 0; i < FIELD_SIZE + 1; i++)
{
cout << i << "|"; // верхний ряд
}
cout << endl;
char arr_coord_x[10]{ '1','2','3','4','5','6','7','8','9','10' };
for (int i = 0; i < FIELD_SIZE; i++)
{
cout << arr_coord_x[i] << "|"; // боковой левый ряд
for (int j = 0; j < FIELD_SIZE + 1; j++)
{
cout << arr[i][j] << "|";
}
cout << endl;
}
}
void Print_hidden_table(char arr[][FIELD_SIZE]) {
for (int i = 0; i < FIELD_SIZE; i++)
{
for (int j = 0; j < FIELD_SIZE; j++)
{
cout << '~' << " ";
}
cout << endl;
}
}
void Players_names(char* Player1, char* Player2) {
cout << "Введите имя ";
SetConsoleTextAttribute(h, 3);
cout << "первого";
SetConsoleTextAttribute(h, 7);
cout << " игрока() : ";
cin >> Player1;
cout << "Введите имя ";
SetConsoleTextAttribute(h, 4);
cout << "второго";
SetConsoleTextAttribute(h, 7);
cout << " игрока() : ";
cin >> Player2;
}
void Create_table(char arr[][FIELD_SIZE], char c) {
for (int i = 0; i < FIELD_SIZE; i++)
{
for (int j = 0; j < FIELD_SIZE; j++)
{
arr[i][j] = c;
}
}
}
void Pass2AnotherPlayer() {
system("cls");
cout << "Переход к другому игроку. И не подглядывайте ;)" << endl;
Sleep(5000);
system("cls");
}
void Set_ships(char arr[][FIELD_SIZE], int PlayerNumber) {
char PNEnd[5];
char Torp;
char Destr;
char Crui;
char BShip;
if (PlayerNumber == 1) {
Torp = TorpedeP1;
Destr = DestroyerP1;
Crui = CruiserP1;
BShip = BattleshipP1;
strcpy_s(PNEnd, "-ый");
}
else {
Torp = TorpedeP2;
Destr = DestroyerP2;
Crui = CruiserP2;
BShip = BattleshipP2;
strcpy_s(PNEnd, "-ой");
}
int nmb_of_cells_for_current_ship = 1;
char type_of_ship[100];
int plant_choise_x, plant_choise_y;
int amount_of_checked_cells = 0;
bool cell_is_checked = false;
while (amount_of_checked_cells < 21)
{
system("cls");
Print_table(arr);
if (nmb_of_cells_for_current_ship == 4)
strcpy_s(type_of_ship, "линкор (4 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 3)
strcpy_s(type_of_ship, "крейсер (3 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 2)
strcpy_s(type_of_ship, "эсминец (2 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 1)
strcpy_s(type_of_ship, "торпедный катер (1 клетка для размещения)");
cout << "Введите порядковый номер клетки, на которую " << PlayerNumber << PNEnd << " игрок хочет поместить кораблик (x,y).";
cout << endl << "Помещается " << type_of_ship << "." << endl;
cout << " Ваши координаты: ";
cin >> plant_choise_x >> plant_choise_y;
if (Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y] /* само место, куда ставится клетка*/) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1] /* верхняя правая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1] /* нижняя левая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1] /* верхняя левая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1] /* нижняя правая клетка */) == false
&& plant_choise_x <= 10 && plant_choise_y <= 10)
{
if ( // торпедный катер
Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /* нижняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false /* верхняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /* левая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false /* правая */
&& amount_of_checked_cells >= 0 && amount_of_checked_cells < 4
) {
arr[plant_choise_x][plant_choise_y] = Torp;
cell_is_checked = true;
}
if (amount_of_checked_cells >= 4 && amount_of_checked_cells < 10
&& arr[plant_choise_x + 1][plant_choise_y] == Destr
&& (Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /// choise_cords (1)
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y]) == false /// choise_cords (2)
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false
)
||
(arr[plant_choise_x - 1][plant_choise_y] == Destr // [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /// choise_cords (1) // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // лево
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // право
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y]) == false /// choise_cords (2) // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
)
||
(
arr[plant_choise_x][plant_choise_y + 1] == Destr // ---->
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // [1][2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /// choise_cords (1) // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // лево
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false /// choise_cords (2) // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 2]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижнеправая
)
||
(
arr[plant_choise_x][plant_choise_y - 1] == Destr // [1] // [2][1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верх (1)
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая кллетка
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 2]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая
)
||
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // сама клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
)
) {
arr[plant_choise_x][plant_choise_y] = Destr;
cell_is_checked = true;
}
if (amount_of_checked_cells >= 10 && amount_of_checked_cells < 16 &&
/// [1][2][3]
//[1]
(arr[plant_choise_x][plant_choise_y + 1] == Crui && arr[plant_choise_x][plant_choise_y + 2] == Crui
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижелевая
//[2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнняя
//[3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 3]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 3]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 3]) == false // нижнеправая
)
||
/// [3][2][1]
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x][plant_choise_y - 1] == Crui && arr[plant_choise_x][plant_choise_y - 2] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 2]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 3]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 3]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 3]) == false // нижнелевая
)
||
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x][plant_choise_y - 1] == Crui && arr[plant_choise_x][plant_choise_y + 1] == Crui
/// [2][1][3]
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 2]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 2]) == false // нижнелевая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 2]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижеправая
)
||
(
/*
[1]
[2]
[3]
*/
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui && arr[plant_choise_x + 2][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // правая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y + 1]) == false // нижнеправая
)
||
(
// [3]
// [2]
// [1]
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui
&& arr[plant_choise_x + 2][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y + 1]) == false // верхнеправая
)
||
(
// [2]
// [1]
// [3]
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui
&& arr[plant_choise_x - 1][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // верхнеправая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // нижнеправая
)
||
(Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /* нижняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false /* верхняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /* левая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false /* правая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y] /* само место, куда ставится клетка*/) == false
)
)
{
arr[plant_choise_x][plant_choise_y] = Crui;
cell_is_checked = true;
}
if (cell_is_checked == true) {
amount_of_checked_cells++;
cell_is_checked = false;
}
}
else
{
system("cls");
cout << "Введите допустимые координаты клетки, а не (" << plant_choise_x << ";" << plant_choise_y << ") !" << endl;
system("pause");
system("cls");
}
}
}
void Player_move(char arr1[][FIELD_SIZE], char arr2[][FIELD_SIZE], int PlayerNumber, char* p1, char* p2)
{
int choise_x;
int choise_y;
while (true) {
system("cls");
choise_x = 0; choise_y = 0;
if (PlayerNumber == 1) {
Print_table(arr1);
cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, ";
SetConsoleTextAttribute(h, 1);
cout << p1;
SetConsoleTextAttribute(h, 0);
cout << ": ";
cout << "n Вам осталось потопить клеток кораблей: " << amount_of_ship_cells_left_to_drown_P2;
cin >> arr2[choise_x][choise_y];
if ((arr2[choise_x][choise_y] == TorpedeP2
|| arr2[choise_x][choise_y] == DestroyerP2
|| arr2[choise_x][choise_y] == CruiserP2
|| arr2[choise_x][choise_y] == BattleshipP2)
&& arr2[choise_x][choise_y] != ShipHitP2
&& arr2[choise_x][choise_y] != HitMissP2)
{
arr2[choise_x][choise_y] = ShipHitP2;
--amount_of_ship_cells_left_to_drown_P2;
system("cls");
cout << "Попадание!" << endl;
system("pause");
continue;
}
else if (arr2[choise_x][choise_y] == ShipHitP2
|| arr2[choise_x][choise_y] == HitMissP2) {
system("cls");
cout << "Вы по этой клетке уже попадали!" << endl;
system("pause");
continue;
}
else {
arr2[choise_x][choise_y] = HitMissP2;
system("cls");
Pass2AnotherPlayer();
break;
}
}
else {
Print_table(arr2);
cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, " << p2 << ": ";
cout << "n Вам осталось потопить клеток кораблей: " << amount_of_ship_cells_left_to_drown_P1;
cin >> arr1[choise_x][choise_y];
if ((arr1[choise_x][choise_y] == TorpedeP1
|| arr1[choise_x][choise_y] == DestroyerP1
|| arr1[choise_x][choise_y] == CruiserP1
|| arr1[choise_x][choise_y] == BattleshipP1)
&& arr1[choise_x][choise_y] != ShipHitP1
&& arr1[choise_x][choise_y] != HitMissP1)
{
arr1[choise_x][choise_y] = ShipHitP1;
--amount_of_ship_cells_left_to_drown_P1;
system("cls");
cout << "Попадание!" << endl;
system("pause");
continue;
}
else if (arr1[choise_x][choise_y] == ShipHitP1
|| arr1[choise_x][choise_y] == HitMissP1) {
system("cls");
cout << "Вы по этой клетке уже попадали!" << endl;
system("pause");
continue;
}
else {
arr1[choise_x][choise_y] = HitMissP1;
system("cls");
Pass2AnotherPlayer();
break;
}
}
}
}
bool Win(int ship_cells) {
if (ship_cells == 0)
return true;
return false;
}
int main()
{
srand((unsigned)time(0));
setlocale(LC_ALL, "Russian");
char arr1[FIELD_SIZE][FIELD_SIZE];
char arr2[FIELD_SIZE][FIELD_SIZE];
Players_names(Player1, Player2);
system("cls");
cout << "Имя первого игрока: " << Player1 << endl;
cout << "Имя второго игрока: " << Player2 << endl << endl;
system("pause");
Create_table(arr1, WaterP1);
Set_ships(arr1, 1);
Pass2AnotherPlayer();
Create_table(arr2, WaterP2);
Set_ships(arr2, 2);
system("pause");
system("cls");
cout << "t BETA TEST" << endl << endl;
cout << "Поле игрока с именем (или никнеймом) " << Player1 << endl;
Print_table(arr1);
cout << endl;
cout << "Поле игрока с именем (или никнеймом) " << Player2 << endl;
Print_table(arr2);
while (!Win)
{
Player_move(arr1, arr2, 1, Player1, Player2);
Player_move(arr1, arr2, 2, Player1, Player2);
Win(amount_of_ship_cells_left_to_drown_P1);
Win(amount_of_ship_cells_left_to_drown_P2);
if (Win(amount_of_ship_cells_left_to_drown_P2) == true) {
ifP1Win(Player1);
}
else if (Win(amount_of_ship_cells_left_to_drown_P1) == true) {
ifP2Win(Player2);
}
cout << "Поле игрока с именем (никнеймом) " << Player1 << endl << endl;
Print_table(arr1);
cout << endl;
cout << "Поле игрока с именем (никнеймом) " << Player2 << endl << endl;
Print_table(arr2);
system("pause");
}
system("pause");
return 0;
}
|
0 / 0 / 0 Регистрация: 02.04.2020 Сообщений: 27 |
|
|
1 |
|
Морской бой. Ошибка «Удаленный сервер разорвал соединение»30.03.2021, 15:35. Показов 618. Ответов 3
Есть игра по сети морской бой, но при нажатии на поле соперника выдает вот такую ошибку. В чем может быть дело? Миниатюры
__________________
0 |
|
600 / 484 / 185 Регистрация: 19.04.2016 Сообщений: 1,885 |
|
|
30.03.2021, 15:56 |
2 |
|
Судя по коду, ему под 12 лет падает тут public void ReceiveData(object client)
0 |
|
0 / 0 / 0 Регистрация: 02.04.2020 Сообщений: 27 |
|
|
30.03.2021, 18:11 [ТС] |
3 |
|
EveKS, Да,программа не моя. А почему падает?Вы предлагаете использовать код для клиента,который вы скинули?
0 |
|
Wolfdp 1137 / 940 / 240 Регистрация: 15.06.2012 Сообщений: 3,654 Записей в блоге: 1 |
||||
|
30.03.2021, 18:39 |
4 |
|||
|
Вы предлагаете использовать код для клиента,который вы скинули? Там есть ошибка, вот она
DataAvailable указывает что в буфере или очереди есть что-то на считать, что мягко говоря не совсем правильно. p.s. по феншую желательно реализовывать через async-await XD
0 |
При входе в клиент игры иногда может отображаться следующее сообщение: «Не удаётся установить соединение с сервером. Возможно, сервер недоступен или требуется проверка настроек сетевого подключения».
Если вы столкнулись с такой ошибкой, поочерёдно выполните следующие шаги, пока проблема не будет решена.
Проверка доступности сервера
Прежде всего убедитесь, что на игровом сервере не ведутся технические работы. Узнать о технических работах можно в разделе «Новости» на сайте Центра поддержки.
Запуск через bat-файл
- Отключите брандмауэр (инструкция) и повторите процедуру входа.
- Скачайте необходимый архив с нашего сайта:
- для Windows 7, Windows 8, Windows 10.
- Распакуйте архив.
- Скопируйте полученный bat-файл в корневую папку игры (например, C:GamesWorld_of_Warships).
- Запустите этот файл с правами администратора (нажмите на файл правой кнопкой мыши и в появившемся меню выберите пункт «Запуск от имени администратора» (Run as administrator).
- После этого запустите игру и попробуйте подключиться к любому серверу.
Настройка файервола и проверка портов
Если у вас установлен файервол, убедитесь, что он не блокирует связь с игровым клиентом (инструкция по настройке файервола Windows).
Мы рекомендуем вносить изменения в политику безопасности только в том случае, если вы системный администратор или имеете опыт таких действий.
Для клиента игры должны быть открыты определённые порты.
- Для WorldofWarships.exe, WorldofWarships32.exe, WorldofWarships64.exe. необходимо открыть порты:
- WorldofWarships.exe — находится в корне папки с клиентом игры, пример, C:GamesWorld_of_Warships_RU
- WorldofWarships32.exe — находится в папке bin32 с клиентом игры, пример, C:GamesWorld_of_Warships_RUbin32
- WorldofWarships64.exe — находится в папке bin64 с клиентом игры, пример, C:GamesWorld_of_Warships_RUbin64
- UDP-диапазон с 12000 по 43000 и UDP порты 5060, 5062, 3478, 3479;
- TCP-порты: 2200, 80, 8080, 443, 5222, 5223, 5333, 3306, 8886, 5672, 15672
- Вы также можете разрешить для WorldofWarships.exe UDP- и TCP-протокол по любым портам в обе стороны, таким образом позволяя межсетевому экрану пропускать для клиента игры любые пакеты на любые адреса.
- Кроме того, можно внести в доверенную зону диапазон адресов наших серверов (не обязательно):
- 74.201.103.228;
- Диапазон с 92.223.32.0 по 92.223.32.255;
- Диапазон с 92.223.34.0 по 92.223.34.255;
- Диапазон с 92.223.42.0 по 92.223.42.255.
Сброс сетевого стека системы
Сбросьте сетевой стек системы в командной строке Windows с помощью команды «netsh winsock reset». Чтобы это сделать:
- Запустите командную строку:
Windows 7 Нажмите Пуск, в поле «Начать поиск» введите cmd, нажмите правой кнопкой мыши на файл cmd.exe и выберите пункт «Запуск от имени администратора» Windows 8, Windows 10 На рабочем столе нажмите сочетание клавиш Win + X. Windows 8: в открывшемся меню выберите «Командная строка (администратор)». Windows 10: в открывшемся меню выберите «Windows PowerShell (администратор)». - Введите в командной строке команду netsh winsock reset и нажмите Enter.

- Перезагрузите компьютер.
1
5
18.03.2018, 16:29
Заходим в игру → нажимаем на кнопку Online → выбираем Расширенный или Классический режим → жмем Пригласить игроков → появится список тех игроков, с которыми вы играли недавно. Если вашего друга нет в этом списке, то тапаем на иконку с лупой в верхней части экрана и указываем никнейм игрока → выбираем его в списке → нажимаем на Играть → у вашего другая появится в нижней части экрана сообщение с надписью В бой!
0
0
22.05.2018, 18:52
У меня андроид у друга iOS. Мы можем играть по сети?
1
1
28.02.2019, 18:48
У меня андроид у друга iOS. Мы можем играть по сети?
І в мене та ж ситуація,скажіть чи так можна
В ответ на сообщение от Гость
#192818
3
1
16.07.2020, 14:12
Классический режим есть.А про игроков нет ссылок. Либо с другом и онлайн и ссылку отправляешь,а дальше что не понятно.И другу ссылка приходит,открывает и тоже на странице где выбрать только ссылку можно и всё через вацап.фуфло а не приложение.И объяснить никто не может что делать.
1
0
04.07.2022, 06:36
Скажите пожалуйста а когда появится лупа чтоб добавить друга в игре
0
0
04.07.2022, 06:37
Гость
Скажите пожалуйста а когда появится лупа чтоб добавить друга в игре
О какой лупе идет речь? В первом сообщении нет ни слова о лупе, вам достаточно перейти в режим Online и найти своих друзей, которых вы хотите пригласить.
В ответ на сообщение от Гость
#227742
