Буква "\r" буквально печатает символ возврата каретки
Я учу себя языку программирования Си. За исключением того, что я учусь в контексте разработки игры Gameboy (с использованием GBDEK).
Я работаю над простым клоном Breakout и решил использовать функцию printf(), чтобы показать счет игрока. Когда счет игрока увеличивается, отображаемый счет также должен измениться. Вот соответствующий код:
int score = 0;
void main() {
printf(" \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n%d", score);
}
void moveBall() {
if((ballY == paddleY-8) && (ballX >= paddleX-8) && (paddleX+24 >= ballX-8)) {
score+=10;
printf("\r%d", score);
}
}
Когда игра начинается, консоль печатает кучу пустых строк, чтобы расположить счет. Когда счет меняется (в этом случае, когда мяч попадает на весло), он должен вернуться в начало строки и напечатать новый номер. Тем не менее, он печатает символ возврата каретки (странный символ CR) и не стирает предыдущий счет. Вот скриншот, чтобы показать вам, что я имею в виду.
Я не уверен, как это исправить. Помогите?
2 ответа
В Drawing.h есть функция gotogxy (предполагается, что в этом вопросе используются исходные коды GBDK):
/* Sets the current text position to (x,y). Note that x and y have units
of cells (8 pixels) */
void
gotogxy(UBYTE x, UBYTE y);
Вы можете попробовать использовать его до printf как:
gotogxy(0,7);
printf("%d", score);
Возврат каретки - это просто символы, если терминал не интерпретирует их как что-то еще. Кажется, дело в том, что этот возврат каретки не имеет смысла.
Вам может понадобиться использовать другой код позиционирования символов.