#c
#c
Вопрос:
#include<iostream>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<windows.h>
using namespace std;
void z()
{
Sleep(100);
}
class Car
{
double fuel;
double speed;
double X;
double Y;
public:
Car(double n, char *type)
{
fuel=n;
speed=120;
}
double Speed()
{
return speed;
}
void Position(double p, double q)
{
X = p;
Y = q;
}
void Move()
{
X=X (Speed()/3600);
Y=Y (Speed()/3600);
}
};
int main()
{
Car c(70,"Car");
double x,y;
c.Position(3.2,2.2);
cout<<c.Speed()<<endl;
while(1)
{
c.Move();
c.Position(x,y);
cout<<x<<","<<y<<endl;
z();
}
return 0;
}
Я хочу показывать изменения положения в одной строке, что означает, что каждую секунду значение position будет обновляться и показывать его в той же строке, заменяя старое значение, но не создавая никакой новой строки.
Комментарии:
1. Это невозможно со стандартной библиотекой. Вам нужно использовать функции, зависящие от платформы, или подобную библиотеку
ncurses
.2. Можете ли вы привести мне какой-либо пример этого?
3. Вы можете вернуть курсор в начало строки, используя
cout<<"r"<<x<<","<<y;
. Обратите внимание, что я не пишуendl
в конце. Кроме того, есть некоторые проблемы с вашим кодом: вы не выполняете ни инициализациюx
,y
main()
ни ввод, ни обновление. Кроме того, нет способа получить значенияX
иY
из вашегоCar
класса.4. На всякий случай
b
переместите курсор на одну позицию назад, см.echo -e 'abz'
.5. Поддерживая правильный ответ @maddin45, я бы добавил, что вы, вероятно, захотите вывести кучу пробелов перед возвратом каретки r, чтобы перезаписать старый вывод. Затем обязательно очистите выходные данные с помощью «std::cout << std::flush».