При использовании одной в двух обьектах работает только один, второй отказывается. Игра Кораблики , функция начинает игру и используется в двух обьектах , в первом засчитывает , а во втором ничего не работает.
void Plansza::startgame()
{
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matrix2[i][j] = '.';
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matrix3[i][j] = '.';
}
}
int count1 = 0;
int count2 = 0;
for (int i = 0; i < 20000; i++) {
TryAgain: cout << "Your choice: ";
int x, y;
cin >> x >> y;
if (matrix1[x][y] == 'O') {
cout << "Succes!" << endl;
count1 = count1 + 1;
draw_enemy1(x, y);
if (count1 == 20) {
cout << "You won!";
system("pause");
break;
}
goto TryAgain;
}
else {
cout << "Missed" << endl;
draw_enemy1(x, y);
}
TryAgain1: cout << "Enemy choice: ";
int x1, y1;
cin >> x1 >> y1;
if (matrix[x1][y1] == 'O') {
cout << "Succes!" << endl;
count2 = count2 + 1;
draw_enemy(x1, y1);
if (count2 == 20) {
cout << "You won!";
system("pause");
break;
}
goto TryAgain1;
}
else {
cout << "Missed" << endl;
draw_enemy(x1, y1);
}
cout << endl;
}
}
Вот так вот использую это в обьектах
yourShips.startgame();
enemyShips.startgame();
Не смогу дать точного ответа, так как мное тут не ясно.
В принципе, функции draw_enemy
не должно интересовать какой обьект рисует(рассмотрите вариант передачи в функцию ссыльку на игрока). К тому же, лучше, если эта функция будет членом класса, чей обьект рисуете... Предположительно вы хотите следующее:
//эту функцию можете сделать закрытым членом класса
void your_code(char* matrix, const size_t col)
{
int count = 0;
int x, y;
while (matrix[x * col + y] == 'O') {
cout << "Your choice: ";
cin >> x >> y;
cout << "Succes!" << endl;
++count;
draw_enemy1(x, y);
if (count == 20) {
cout << "You won!";
break;
}
}
cout << "Missed" << endl;
draw_enemy1(x, y);
cout << endl;
}
void Plansza::startgame()
{
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matrix2[i][j] = '.';
matrix3[i][j] = '.';
}
}
for (int i = 0; i < 20000; i++) {
your_code(matrix1[0], 10);
your_code(matrix[0], 10);
}
}
В вашем коде оператор безусловного перехода goto
и команда system("pause");
(Это приостановка выполнения пакетного файла, что в вашей функции абсолютно никчему) вполне могут помешать завершению выполнения функции, а пока она не завершит свою работу, для второго обьекта не вызовится, поскольку ни одна инструкция не выполнится. Вот и получается, что до второго обьекта дело не доходит. И всегда старайтесь циклы писать с предусловием типа, например, while (условие) { ... }
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Если у меня есть header-only библиотека и есть xxxConfigcmake, я делаю find_package(xxx CONFIG REQUIRED)
Мне нужно вывести json как поле mysql, то есть допустим у меня есть такой json который хранится в значении одного из столбцов mysql