Странно счетчик произведенных выстрелов работает.
Ситуация.
Стреляю по D3 и топлю одиночный корабль противника.
Пишет, что сделано 39 выстрелов.
Стреляю I6 и топлю последний одиночный корабль противника.
Пишет, что сделан 41 выстрел.
Следующий боя так же счетчик +1 выстрел непроизведенный прибавляет в случае победы.
Счетчик показывает 64 выстрела перед нажатием на E5
После нажатия уже пишет что 66 выстрелов было, когда всего 65 должно быть написано.
Заявка ЦПП ID 141939023, там же отчет ВГчек.
Дополню. После сбора отчета ВГчек зашел в Морской бой и появился экран как на скрине выше но только число выстрелов на 1 меньше и соответствует нормальному числу
Возможно при сборке отчета была устранена ошибка.
Еще дополню. Сыграл еще бой. Но уже открыл во внешнем браузере Морской бой. Играл делая часть выстрелов в клиенте, часть в игре. Завершал партию в клиенте. Счетчик показал, что выполнено 47 выстрелов.
Произвожу 1 выстрел и топлю последний корабль. Прямо на глазах счетчик проматывает 48 и пишет что произведено 49 выстрелов.
(видел 48 доли секунды и поменялось на 49). После чего перешел во внешний браузер там была та же картинка с числом 49. Нажал обновить страницу. Число поменялось как в браузере, так и в игре на 48.
Cправка — Google Play
Войти
Справка Google
- Справочный центр
- Сообщество
- Google Play
- Политика конфиденциальности
- Условия использования Google Play
- Отправить отзыв
Тема отзыва
Информация в текущем разделе Справочного центра
Общие впечатления о Справочном центре Google
- Справочный центр
- Сообщество
Google Play
В связи с нарушениями работы платежных систем, платежная система Google Play приостановила работу для пользователей в России с 10 марта 2022 г. Подробнее здесь
#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. Показов 751. Ответов 3
Есть игра по сети морской бой, но при нажатии на поле соперника выдает вот такую ошибку. В чем может быть дело? Миниатюры
0 |
601 / 485 / 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 1313 / 1019 / 259 Регистрация: 15.06.2012 Сообщений: 4,138 |
||||
30.03.2021, 18:39 |
4 |
|||
Вы предлагаете использовать код для клиента,который вы скинули? Там есть ошибка, вот она
DataAvailable указывает что в буфере или очереди есть что-то на считать, что мягко говоря не совсем правильно. p.s. по феншую желательно реализовывать через async-await XD
0 |
Справка Google
- Справочный центр
- Сообщество
- Google Play
- Политика конфиденциальности
- Условия использования Google Play
- Отправить отзыв
Тема отзыва
Информация в текущем разделе Справочного центра
Общие впечатления о Справочном центре Google
- Справочный центр
- Сообщество
Google Play
В связи с нарушениями работы платежных систем, платежная система Google Play приостановила работу для пользователей в России с 10 марта 2022 г. Подробнее здесь
Странно счетчик произведенных выстрелов работает.
Ситуация.
Стреляю по 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. Показов 707. Ответов 3
Есть игра по сети морской бой, но при нажатии на поле соперника выдает вот такую ошибку. В чем может быть дело? Миниатюры
0 |
601 / 485 / 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 1146 / 948 / 242 Регистрация: 15.06.2012 Сообщений: 3,687 Записей в блоге: 1 |
||||
30.03.2021, 18:39 |
4 |
|||
Вы предлагаете использовать код для клиента,который вы скинули? Там есть ошибка, вот она
DataAvailable указывает что в буфере или очереди есть что-то на считать, что мягко говоря не совсем правильно. p.s. по феншую желательно реализовывать через async-await XD 0 |
Проблемы связанные с соединением с сервером в Мир кораблей возникают у многих игроков. Подобные сбои происходят регулярно по разным причинам и разработчики знают о данной проблеме.
Если вас выкинуло из игры или вам не удается подключиться к серверам Мир кораблей (World of Warships), то обратите внимание на текст ошибки. Возможно там будет решение ошибки.
Виды ошибок подключения к серверу Мир кораблей
Неверный адрес электронной почты или пароль.
Очевидно, что при входе в игру вы указали неверные данные или произошел сбой на сервере игры и вам остается только ждать когда игра заработает.
Вы были отключены от сервера. Проверьте сетевое подключение.
Возможно ваш провайдер ведет работы на линии и вас временно отключило от сети. Или отвалился wi-fi. Восстановите интернет и попробуйте пере зайти в игру пока бой не закончился.
Используемая версия игры не совпадает с версией на сервере.
Обновите Мир кораблей в лаунчере и снова попробуйте войти в игру.
Сервер временно недоступен. Повторите попытку позже.
Сервер не работает или ведутся работы. Вернитесь в Мир кораблей через некоторое время. Возможно разработчики устанавливают обновления. Проверьте новости на сайте Мир кораблей.
Не удаётся установить соединение с сервером. Возможно, сервер недоступен или требуется проверка настроек сетевого подключения.
Прежде всего убедитесь, что на игровом сервере не ведутся технические работы. Если у вас установлен файервол, убедитесь, что он не блокирует связь с игровым клиентом. Добавьте папку Мир кораблей в исключения своего антивируса. Также при данной ошибке соединения можно попробовать сбросить сетевой стек системы с помощью командной строки (cmd).
Если вы знаете другие решения перечисленных ошибок подключения к серверу Мир кораблей, то поделитесь ими в комментариях к данному гайду.