我想让一个三角形向左和/或向右移动一个空格。
cout << setw(10) << "*" << endl;
cout << setw(9) << "*" << setw(2) << "*" << endl;
cout << setw(8) << "*" << setw(4) << "*" << endl;
cout << setw(7) << "*" << setw(6) << "*" << endl;
cout << setw(6) << "*" << setw(8) << "*" << endl;
cout << setw(5) << "*" << setw(10) << "*" << endl;
cout << setw(4) << "*" << setw(12) << "*" << endl;
cout << setw(3) << "*" << setw(14) << "*" << endl;
cout << setw(2) << "*" << setw(16) << "*" << endl;
cout << setfill('*') << setw(19) << "*" << endl;
while(ch = 'a','d'){
cout << "Enter: 'a' move left, 'd' move right" << endl;
cin >> ch;
if(ch == 'a'){
cout.setf(ios::left);
上面的代码显示了三角形的样子。所以基本上我希望用户输入'a'[向左移动]和/或'b'[向右移动]。我该如何编程,所以它会移动整个三角形以向左或向右移动1个空格,同时保留形状?
基于我所看到的,使用cout.setf(ios :: left)将是最简单的,但我不知道该怎么做。
答案 0 :(得分:0)
将cout用于图形总是有点奇怪。它并非真正用于绘图/动画。
您可以尝试这样的事情(使用一些函数从while循环内部重复打印三角形):
void print_triangle(int n)
{
cout << setw(n + 10) << "*" << endl;
cout << setw(n + 9) << "*" << setw(2) << "*" << endl;
cout << setw(n + 8) << "*" << setw(4) << "*" << endl;
cout << setw(n + 7) << "*" << setw(6) << "*" << endl;
cout << setw(n + 6) << "*" << setw(8) << "*" << endl;
cout << setw(n + 5) << "*" << setw(10) << "*" << endl;
cout << setw(n + 4) << "*" << setw(12) << "*" << endl;
cout << setw(n + 3) << "*" << setw(14) << "*" << endl;
cout << setw(n + 2) << "*" << setw(16) << "*" << endl;
cout << setfill('*') << setw(19) << "*" << endl;
}
void clear_screen()
{
cout << string( 100, '\n' );
}
用过:
int n = 0;
while(ch == 'a' || ch == 'd'){
clear_screen();
print_triangle(n);
cout << "Enter: 'a' move left, 'd' move right" << endl;
cin >> ch;
if(ch == 'a'){
n++;
} else if(ch == 'd'){
n--;
}
}