Морской бой ошибка подключения

Странно счетчик произведенных выстрелов работает.
Ситуация.
Стреляю по D3 и топлю одиночный корабль противника.
Пишет, что сделано 39 выстрелов.

shot-22_09.17_17_55.24-0288.thumb.jpg.30430bb0dca5def8a81a844c75d7fbb1.jpg

Стреляю I6 и топлю последний одиночный корабль противника.

Пишет, что сделан 41 выстрел.

shot-22_09.17_17_55.36-0498.thumb.jpg.0eb264071d92f9cd25af5bbc083e115f.jpg

Следующий боя так же счетчик +1 выстрел непроизведенный прибавляет в случае победы.
Счетчик показывает 64 выстрела перед нажатием на E5

3.thumb.jpg.d97b64016018aecadb4ee1f4ec5bcbae.jpg

После нажатия уже пишет что 66 выстрелов было, когда всего 65 должно быть написано.

4.thumb.jpg.1edb9f55f94d516cb333fc7fe53387a7.jpg

Заявка ЦПП ID 141939023, там же отчет ВГчек.
Дополню. После сбора отчета ВГчек зашел в Морской бой и появился экран как на скрине выше но только число выстрелов на 1 меньше и соответствует нормальному числу

5.thumb.jpg.2360ca85c9b0cd7a17f2c54521b4cf02.jpg

Возможно при сборке отчета была устранена ошибка.

Еще дополню. Сыграл еще бой. Но уже открыл во внешнем браузере Морской бой. Играл делая часть выстрелов в клиенте, часть в игре. Завершал партию в клиенте. Счетчик показал, что выполнено 47 выстрелов. 

6.thumb.jpg.2985729f5635e0ef4aece2dfd9332bd8.jpg

Произвожу 1 выстрел и топлю последний корабль. Прямо на глазах счетчик проматывает 48 и пишет что произведено 49 выстрелов. 

7.thumb.jpg.c1c4c45d4281799cdc6864ac9e36c1c9.jpg

(видел 48 доли секунды и поменялось на 49). После чего перешел во внешний браузер там была та же картинка с числом 49. Нажал обновить страницу. Число поменялось как в браузере, так и в игре на 48.

8.thumb.jpg.b6ea128422738a18ada34e077e0231f8.jpg

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 лет
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

падает тут public void ReceiveData(object client)
Протокол TCP



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

Цитата
Сообщение от Skrill
Посмотреть сообщение

Вы предлагаете использовать код для клиента,который вы скинули?

Там есть ошибка, вот она

C#
1
while (stream.DataAvailable); // пока данные есть в потоке

DataAvailable указывает что в буфере или очереди есть что-то на считать, что мягко говоря не совсем правильно.

p.s. по феншую желательно реализовывать через async-await XD



0



Справка Google

  • Справочный центр
  • Сообщество
  • Google Play
  • Политика конфиденциальности
  • Условия использования Google Play
  • Отправить отзыв

Тема отзыва

Информация в текущем разделе Справочного центра

Общие впечатления о Справочном центре Google

  • Справочный центр
  • Сообщество

Google Play

В связи с нарушениями работы платежных систем, платежная система Google Play приостановила работу для пользователей в России с 10 марта 2022 г. Подробнее здесь

Странно счетчик произведенных выстрелов работает.
Ситуация.
Стреляю по D3 и топлю одиночный корабль противника.
Пишет, что сделано 39 выстрелов.

shot-22_09.17_17_55.24-0288.thumb.jpg.30430bb0dca5def8a81a844c75d7fbb1.jpg

Стреляю I6 и топлю последний одиночный корабль противника.

Пишет, что сделан 41 выстрел.

shot-22_09.17_17_55.36-0498.thumb.jpg.0eb264071d92f9cd25af5bbc083e115f.jpg

Следующий боя так же счетчик +1 выстрел непроизведенный прибавляет в случае победы.
Счетчик показывает 64 выстрела перед нажатием на E5

3.thumb.jpg.d97b64016018aecadb4ee1f4ec5bcbae.jpg

После нажатия уже пишет что 66 выстрелов было, когда всего 65 должно быть написано.

4.thumb.jpg.1edb9f55f94d516cb333fc7fe53387a7.jpg

Заявка ЦПП ID 141939023, там же отчет ВГчек.
Дополню. После сбора отчета ВГчек зашел в Морской бой и появился экран как на скрине выше но только число выстрелов на 1 меньше и соответствует нормальному числу

5.thumb.jpg.2360ca85c9b0cd7a17f2c54521b4cf02.jpg

Возможно при сборке отчета была устранена ошибка.

Еще дополню. Сыграл еще бой. Но уже открыл во внешнем браузере Морской бой. Играл делая часть выстрелов в клиенте, часть в игре. Завершал партию в клиенте. Счетчик показал, что выполнено 47 выстрелов. 

6.thumb.jpg.2985729f5635e0ef4aece2dfd9332bd8.jpg

Произвожу 1 выстрел и топлю последний корабль. Прямо на глазах счетчик проматывает 48 и пишет что произведено 49 выстрелов. 

7.thumb.jpg.c1c4c45d4281799cdc6864ac9e36c1c9.jpg

(видел 48 доли секунды и поменялось на 49). После чего перешел во внешний браузер там была та же картинка с числом 49. Нажал обновить страницу. Число поменялось как в браузере, так и в игре на 48.

8.thumb.jpg.b6ea128422738a18ada34e077e0231f8.jpg

#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 лет
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010

падает тут public void ReceiveData(object client)
Протокол TCP

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

Цитата
Сообщение от Skrill
Посмотреть сообщение

Вы предлагаете использовать код для клиента,который вы скинули?

Там есть ошибка, вот она

C#
1
while (stream.DataAvailable); // пока данные есть в потоке

DataAvailable указывает что в буфере или очереди есть что-то на считать, что мягко говоря не совсем правильно.

p.s. по феншую желательно реализовывать через async-await XD

0

проблемы с соединением в Мир кораблей

Проблемы связанные с соединением с сервером в Мир кораблей возникают у многих игроков. Подобные сбои происходят регулярно по разным причинам и разработчики знают о данной проблеме.

Если вас выкинуло из игры или вам не удается подключиться к серверам Мир кораблей (World of Warships), то обратите внимание на текст ошибки. Возможно там будет решение ошибки.

Виды ошибок подключения к серверу Мир кораблей

🔻 Неверный адрес электронной почты или пароль.
✅ Очевидно, что при входе в игру вы указали неверные данные или произошел сбой на сервере игры и вам остается только ждать когда игра заработает.

🔻 Вы были отключены от сервера. Проверьте сетевое подключение.
✅ Возможно ваш провайдер ведет работы на линии и вас временно отключило от сети. Или отвалился wi-fi. Восстановите интернет и попробуйте пере зайти в игру пока бой не закончился.

🔻 Используемая версия игры не совпадает с версией на сервере.
✅ Обновите Мир кораблей в лаунчере и снова попробуйте войти в игру.

🔻 Сервер временно недоступен. Повторите попытку позже.
✅ Сервер не работает или ведутся работы. Вернитесь в Мир кораблей через некоторое время. Возможно разработчики устанавливают обновления. Проверьте новости на сайте Мир кораблей.

🔻 Не удаётся установить соединение с сервером. Возможно, сервер недоступен или требуется проверка настроек сетевого подключения.
✅ Прежде всего убедитесь, что на игровом сервере не ведутся технические работы. Если у вас установлен файервол, убедитесь, что он не блокирует связь с игровым клиентом. Добавьте папку Мир кораблей в исключения своего антивируса. Также при данной ошибке соединения можно попробовать сбросить сетевой стек системы с помощью командной строки (cmd).

Сбросьте сетевой стек системы в командной строке Windows

Если вы знаете другие решения перечисленных ошибок подключения к серверу Мир кораблей, то поделитесь ими в комментариях к данному гайду.

Возможно, вам также будет интересно:

  • Морской бой код ошибки 12
  • Морфологическая ошибка килограмм апельсин
  • Морские титаны ошибка при чтении переустановите игру
  • Морфологическая норма примеры ошибок
  • Морские титаны ошибка d3drm dll

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии