Всем привет! Я начинающий программист. И я для начала решил сделать "игру". Просто для себя. Она отлично работала, пока я не стал замечать, что при вводе info и потом еще раз info. Начинает спамить в консоль. Потом программа вообще перестала работать. Помогите пж. Отблагодарю симпой. Пишу в xcode. Код #include <iostream> #include <string> using namespace std; int main(int argc, const char * argv[]) { string name; int entr = 0; int cena = 50; int balance = 0; int score = 1; cout << "Введите ваше имя — "; getline(cin, name); string i; main: getline(cin, i); if (i == "info") { int in; cout << "———————————————————————————" << endl; cout << "Инфо" << endl; cout << "Ник — " << name << endl; cout << "Баланс — " << balance << endl; cout << "Скорость — " << score << endl; cout << "Нажатий на Enter — " << entr << endl; cout << "———————————————————————————" << endl; cout << "Для выхода нажмите 0 и enter" << endl; cin >> in; if (in == 0) { goto main; } } else { goto main; } if (i == "cheats") { int ch; ch: cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Баланс" << endl; cout << "2. Скорость" << endl; cout << "———————————————————————————" << endl; cin >> ch; if (ch == 0) { goto main; } if (ch ==1) { int ch_1; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Добавление к балансу" << endl; cout << "2. Отбавление от баланса" << endl; cout << "3. Конкретный баланс" << endl; cout << "———————————————————————————" << endl; cin >> ch_1; if (ch_1 == 0) { goto ch; } if (ch_1 == 1) { int get_bal; cout << "Сколько добавить к балансу?" << endl; cin >> get_bal; balance = balance + get_bal; goto main; } if (ch_1 == 2) { int out_bal; cout << "Сколько отбавить от баланса?" << endl; cin >> out_bal; balance = balance - out_bal; goto main; } if (ch_1 == 3) { cout << "Введите баланс" << endl; cin >> balance; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } if (ch == 2) { int ch_2; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Добавление к скорости" << endl; cout << "2. Отбавление от скорости" << endl; cout << "3. Конкретная скорость" << endl; cout << "———————————————————————————" << endl; cin >> ch_2; if (ch_2 == 0) { goto ch; } if (ch_2 == 1) { int get_scr; cout << "Сколько добавить к скорости?" << endl; cin >> get_scr; score = score + get_scr; goto main; } if (ch_2 == 2) { int out_scr; cout << "Сколько отбавить от скорости?" << endl; cin >> out_scr; balance = balance - out_scr; goto main; } if (ch_2 == 3) { cout << "Введите скорость" << endl; cin >> score; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } } if (i.length() == 0) { balance = balance + score; entr++; cout << "Ваш баланс — " << balance << endl; goto main; } if (i == "shop") { cout << "0. Отмена" << endl; cout << "1. Кликер. Цена — " << cena << " кликов, +1" << endl; int sh; cin >> sh; if (sh == 0) { goto main; } if (sh == 1) { balance = balance - cena; cena = cena * 1.5; score = score + 1; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } else { cout << "Я тебя не понял!"; } cin.get(); return 0; } Код #include <iostream> #include <string> using namespace std; int main(int argc, const char * argv[]) { string name; int entr = 0; int cena = 50; int balance = 0; int score = 1; cout << "Введите ваше имя — "; getline(cin, name); string i; main: getline(cin, i); if (i == "info") { int in; cout << "———————————————————————————" << endl; cout << "Инфо" << endl; cout << "Ник — " << name << endl; cout << "Баланс — " << balance << endl; cout << "Скорость — " << score << endl; cout << "Нажатий на Enter — " << entr << endl; cout << "———————————————————————————" << endl; cout << "Для выхода нажмите 0 и enter" << endl; cin >> in; if (in == 0) { goto main; } } else { goto main; } if (i == "cheats") { int ch; ch: cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Баланс" << endl; cout << "2. Скорость" << endl; cout << "———————————————————————————" << endl; cin >> ch; if (ch == 0) { goto main; } if (ch ==1) { int ch_1; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Добавление к балансу" << endl; cout << "2. Отбавление от баланса" << endl; cout << "3. Конкретный баланс" << endl; cout << "———————————————————————————" << endl; cin >> ch_1; if (ch_1 == 0) { goto ch; } if (ch_1 == 1) { int get_bal; cout << "Сколько добавить к балансу?" << endl; cin >> get_bal; balance = balance + get_bal; goto main; } if (ch_1 == 2) { int out_bal; cout << "Сколько отбавить от баланса?" << endl; cin >> out_bal; balance = balance - out_bal; goto main; } if (ch_1 == 3) { cout << "Введите баланс" << endl; cin >> balance; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } if (ch == 2) { int ch_2; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Добавление к скорости" << endl; cout << "2. Отбавление от скорости" << endl; cout << "3. Конкретная скорость" << endl; cout << "———————————————————————————" << endl; cin >> ch_2; if (ch_2 == 0) { goto ch; } if (ch_2 == 1) { int get_scr; cout << "Сколько добавить к скорости?" << endl; cin >> get_scr; score = score + get_scr; goto main; } if (ch_2 == 2) { int out_scr; cout << "Сколько отбавить от скорости?" << endl; cin >> out_scr; balance = balance - out_scr; goto main; } if (ch_2 == 3) { cout << "Введите скорость" << endl; cin >> score; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } } if (i.length() == 0) { balance = balance + score; entr++; cout << "Ваш баланс — " << balance << endl; goto main; } if (i == "shop") { cout << "0. Отмена" << endl; cout << "1. Кликер. Цена — " << cena << " кликов, +1" << endl; int sh; cin >> sh; if (sh == 0) { goto main; } if (sh == 1) { balance = balance - cena; cena = cena * 1.5; score = score + 1; goto main; } else { cout << "Я тебя не понял! Для выхода нажмите 0 и enter"; } } else { cout << "Я тебя не понял!"; } cin.get(); return 0; }
очень тупой код, извини, но это так. тут, если в i ты вводишь не info, то у тебя будет вызываться else, который перенаправляет тебя опять вводить i, поэтому, если ты будешь вводить shop, к примеру, то у тебя будет выполняться блок else, но никак не if(i == "shop"), потому что до него даже не дойдет. можешь отписать мне в тг, я тебе помогу
местами говнокод, потому что я и не хотел стараться. shop доделаешь сам и да, отрефакторь мой код, там есть повторения, а повторения - зло. если замечаешь, что ты что-то копируешь и вставляешь, значит, это можно сделать как-то по другому. #include <iostream> #include <string> using namespace std; void info(int entr, int balance, int score, string name); void cheatsInfo(); void addCh(int *value); void subtractCh(int *value); void cheats(int *balance, int *score); int main(int argc, const char * argv[]) { string name; int entr = 0; int cena = 50; int balance = 0; int score = 1; cout << "Введите ваше имя — "; cin >> name; string i; string continue_; while(true) { system("clear"); cout << "Введите операцию, которую хотите совершить:"; cout << "\n\t1. Ваша статистика (/info)."; cout << "\n\t2. Использовать читы (/cheats)."; cout << "\n\t3. Открыть магазин (/shop)."; cout << "\n\t4. Выйти (/exit).\n"; cin >> i; entr++; system("clear"); while(true) { if(i == "/info") { info(entr, balance, score, name); break; } else if(i == "/cheats") { cheats(&balance, &score); break; } } cout<<"Для продолжения нажмите любую клавишу и enter...\n"; cin >> continue_; entr++; } } void info(int entr, int balance, int score, string name) { cout << "———————————————————————————" << endl; cout << "Инфо" << endl; cout << "Ник — " << name << endl; cout << "Баланс — " << balance << endl; cout << "Скорость — " << score << endl; cout << "Нажатий на Enter — " << entr << endl; cout << "———————————————————————————" << endl; } void cheats(int *balance, int *score) { system("clear"); int choice; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Баланс" << endl; cout << "2. Скорость" << endl; cout << "———————————————————————————" << endl; cin >> choice; entr++; system("clear"); if (choice == 0) { return; } cheatsInfo(); if (choice == 1) { cin >> choice; entr++; if (choice == 0) { return; } else if (choice == 1) { addCh(balance); } else if (choice == 2) { subtractCh(balance); } else if (choice == 3) { cout << "Введите баланс: "; cin >> *balance; entr++; } } if (choice == 2) { cin >> choice; if (choice == 0) { return; } else if (choice == 1) { addCh(score); } else if (choice == 2) { subtractCh(score); } else if (choice == 3) { cout << "Введите скорость: "; cin >> *score; entr++; } } return; } void cheatsInfo() { cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Прибавить" << endl; cout << "2. Отнять" << endl; cout << "3. Конкретное значение" << endl; cout << "———————————————————————————" << endl; } void addCh(int *value) { system("clear"); int get_bal; cout << "Сколько добавить?" << endl; cin >> get_bal; entr++; *value += get_bal; } void subtractCh(int *value) { system("clear"); int get_sub; cout << "Сколько отбавить?" << endl; cin >> get_sub; entr++; *value = *value - get_sub; } Код #include <iostream> #include <string> using namespace std; void info(int entr, int balance, int score, string name); void cheatsInfo(); void addCh(int *value); void subtractCh(int *value); void cheats(int *balance, int *score); int main(int argc, const char * argv[]) { string name; int entr = 0; int cena = 50; int balance = 0; int score = 1; cout << "Введите ваше имя — "; cin >> name; string i; string continue_; while(true) { system("clear"); cout << "Введите операцию, которую хотите совершить:"; cout << "\n\t1. Ваша статистика (/info)."; cout << "\n\t2. Использовать читы (/cheats)."; cout << "\n\t3. Открыть магазин (/shop)."; cout << "\n\t4. Выйти (/exit).\n"; cin >> i; entr++; system("clear"); while(true) { if(i == "/info") { info(entr, balance, score, name); break; } else if(i == "/cheats") { cheats(&balance, &score); break; } } cout<<"Для продолжения нажмите любую клавишу и enter...\n"; cin >> continue_; entr++; } } void info(int entr, int balance, int score, string name) { cout << "———————————————————————————" << endl; cout << "Инфо" << endl; cout << "Ник — " << name << endl; cout << "Баланс — " << balance << endl; cout << "Скорость — " << score << endl; cout << "Нажатий на Enter — " << entr << endl; cout << "———————————————————————————" << endl; } void cheats(int *balance, int *score) { system("clear"); int choice; cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Баланс" << endl; cout << "2. Скорость" << endl; cout << "———————————————————————————" << endl; cin >> choice; entr++; system("clear"); if (choice == 0) { return; } cheatsInfo(); if (choice == 1) { cin >> choice; entr++; if (choice == 0) { return; } else if (choice == 1) { addCh(balance); } else if (choice == 2) { subtractCh(balance); } else if (choice == 3) { cout << "Введите баланс: "; cin >> *balance; entr++; } } if (choice == 2) { cin >> choice; if (choice == 0) { return; } else if (choice == 1) { addCh(score); } else if (choice == 2) { subtractCh(score); } else if (choice == 3) { cout << "Введите скорость: "; cin >> *score; entr++; } } return; } void cheatsInfo() { cout << "———————————————————————————" << endl; cout << "0. Отмена" << endl; cout << "1. Прибавить" << endl; cout << "2. Отнять" << endl; cout << "3. Конкретное значение" << endl; cout << "———————————————————————————" << endl; } void addCh(int *value) { system("clear"); int get_bal; cout << "Сколько добавить?" << endl; cin >> get_bal; entr++; *value += get_bal; } void subtractCh(int *value) { system("clear"); int get_sub; cout << "Сколько отбавить?" << endl; cin >> get_sub; entr++; *value = *value - get_sub; }