C/C++

Проблема с созданием игры (Тетрис) на C++

Не могу понять как сделать концовку игре, игра вроде-бы работает но когда по идеи должна быть концовка программа продолжает ставить фигуры без конца. Скриншоты к сожалению не могу приложить, мб их нету, а сделать их сейчас не могу(на устройстве нету SFML)

Буду рад любой помощи, заранее спасибо)

--> Код и визуал <--
Привет, и я, и я тоже посмотрел ваш код.
Для завершения игры предлагаю ввести переменную, которая считает сколько текущая фигура сделала ходов. Если столкновение наступает, когда ходов было 0 - обработать функцию проиграша.

 main(){
int tik = 0; //переменная считает шаги

**** остальной код ****

if (timer > delay)
{
for (int i = 0; i < 4; i++) {
b[i] = a[i];
a[i].y += 1;
}

if (!check()) { //если зафиксировано столкновение
if (tik == 0) //и при этом тик = 0
{
//тут написать функцию окончания например:
std::cout > tik;
}
for (int i = 0; i < 4; i++)
field[b[i].y][b[i].x] = colorNum;
colorNum = 1 + rand() % 7;
int n = rand() % 7;
for (int i = 0; i < 4; i++) {
a[i].x = figures[n][i] % 2;
a[i].y = figures[n][i] / 2;
}
tik = 0; //после столкновения обнуляем шаги
}
else tik++; //если фигура не столкнулась - шаг увелич на 1
timer = 0;
}
Иван Носков
Иван Носков
51 417
Лучший ответ
Алексей Ляшко
  std::cout > tik; 
Кмк, не будет работать.
Там какой то графический интерфейс использован.
Привет.
Посмотрел ваш код. В принципе достаточно аккуратный и более менее понятный.

Для того чтобы обработать завершение вы можете модифицировать следующий кусочек кода ::
 if (timer > delay) { 
for (int i = 0; i < 4; i++) {
b[i] = a[i];
a[i].y += 1;
}

if (!check()) {
for (int i = 0; i < 4; i++)
field[b[i].y][b[i].x] = colorNum;
colorNum = 1 + rand() % 7;
int n = rand() % 7;
for (int i = 0; i < 4; i++) {
a[i].x = figures[n][i] % 2;
a[i].y = figures[n][i] / 2;
}
В данной точке вы сгенерировали новый элемент. Проверьте его на пересечение с элементами поля...
 
if(!check()){
// написать пользователю что игра завершена,
// написать количество заработанных очков ...
}
 
}

timer = 0;
}
Вообще рекомендую посмотреть неплохое решение этой задачи :
https://www.youtube.com/watch?v=8OK8_tHeCIA&ab_channel=javidx9
Иван Носков Я другого мнения о аккуратности и понятности его кода.