Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

с++ “морской бой”

#cpp


Загорелся сделать морской бой на с++ чисто для себя (с++ еще осваиваю). Сделал так
чтоб программа ставила метку на нужных координатах. Вопрос такой: "Как сделать так,
чтоб программа зпоминала прошлый "ход" и в следующий раз выписывала то место, где "ход"
уже имел место быть".

Описание проблемы не лучшее, но я старался.
Сам код (надеюсь, правильно вставил на сайт)

#include 
#include 
using namespace std;
void tablica(int a,int b,int c,int d, int x, int y){
    for (int i=0; i> q >> q1;
        if (q!=0 || q1!=0) tablica(10,10,65,1,q,q1);
    }while(q!=0 || q1!=0);
    return 0;

}


Работа программы:


    


Ответы

Ответ 1



void tablica(const int a,const int b, char c, int d, const int x, const int y, const int oldX, const int oldY){ cout << '%'; for (int i=1; i> q >> q1 && (q!=0 || q1!=0) && q < a && q1 < b) { static int x = q, y = q1; tablica(a, b, c , d, x, y, q, q1); } return 0; } Во первых в аргументах функции нужно указать какие аргументы не подлежат изменению, дальше вы в циклах делаете много сравнений. Чтобы цикл работал быстрее, нужно уменьшить их количество. Первая строка и столбец у вас всегда неизменяема, поэтому эти данные нужно выводить отдельно. Не гарантировано, что целочисленное значение символа 'A' равно 65(в других реализациях может иметь другое значение), поэтому передайте в аргумент именно символ, тем более, что так нагляднее что есть этот аргумент. Дальше: манипулятор setw(3) выделяет поле для текущего выводимого/вводимого обьекта, а не для предыдущего, поэтому в выражение, например: cout <<"%" <

Ответ 2



Вам нужно хранить состояния, это можно делать с помощью внешних переменных по отношению к функции(Передавать их по ссылке или указателю). Но я бы смотрел в строну ООП. Вам нужны сущности Ход, Список Ходов, Поле, Игрок, Игра(список неполный). Ваш код громоздок и сложен для понимания. Разбив свою игру на мелкие сущности и описав взаимодействия между ними, Вы его сможете упростить. PS Имена входных параметров не очень осмысленны, что тоже усложняет понимание.

Комментариев нет:

Отправить комментарий