Не могу понять как сделать концовку игре, игра вроде-бы работает но когда по идеи должна быть концовка программа продолжает ставить фигуры без конца. Скриншоты к сожалению не могу приложить, мб их нету, а сделать их сейчас не могу(на устройстве нету SFML)
Буду рад любой помощи, заранее спасибо)
--> Код и визуал <--
C/C++
Проблема с созданием игры (Тетрис) на C++
Привет, и я, и я тоже посмотрел ваш код.
Для завершения игры предлагаю ввести переменную, которая считает сколько текущая фигура сделала ходов. Если столкновение наступает, когда ходов было 0 - обработать функцию проиграша.
Для завершения игры предлагаю ввести переменную, которая считает сколько текущая фигура сделала ходов. Если столкновение наступает, когда ходов было 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;
}
Привет.
Посмотрел ваш код. В принципе достаточно аккуратный и более менее понятный.
Для того чтобы обработать завершение вы можете модифицировать следующий кусочек кода ::
https://www.youtube.com/watch?v=8OK8_tHeCIA&ab_channel=javidx9
Посмотрел ваш код. В принципе достаточно аккуратный и более менее понятный.
Для того чтобы обработать завершение вы можете модифицировать следующий кусочек кода ::
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
Иван Носков
Я другого мнения о аккуратности и понятности его кода.
Похожие вопросы
- Проблема с указателем в C++
- СОЗДАНИЕ ФУНКЦИЙ В C++
- Циклы C++. Создание программ с циклическими конструкциями.
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- Создание массива C++
- Создание таблицы в C++
Там какой то графический интерфейс использован.