Postacie nakładających kiedy zmieniły kolor i są drukowane w tył
Jak widać górne ciemne X. są cięte, chociaż nie ma miejsca dla nich.
Dzieje się tak, ponieważ zmieniły kolor i są drukowane wstecz (od prawej do lewej).
Czy to błąd, wadliwy kod, złe ustawienie w moim systemie lub (wątpię w to), tak jak powinno być?
Oto kod, który generuje ten wyjściowe:
#include <Windows.h>
#include <iostream>
void moveTo(int x,int y){
COORD kord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),kord);
}
void setColor(WORD attributes){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attributes);
}
void main(){
for(int i=9;i+1;i--)
{
moveTo(i,0);
std::cout.put('X');
}
for(int i=-10;i;i++)
{
moveTo(i+10,1);
std::cout.put('X');
}
setColor(8);
for(int i=9;i+1;i--)
{
moveTo(i,2);
std::cout.put('X');
}
for(int i=-10;i;i++)
{
moveTo(i+10,3);
std::cout.put('X');
}
setColor(7);
for(int i=9;i+1;i--)
{
moveTo(i,4);
std::cout.put('X');
}
for(int i=-10;i;i++)
{
moveTo(i+10,5);
std::cout.put('X');
}
std::cin.get();
}
Skąd wiesz, że to dlatego, że są do tyłu? Może powinieneś użyć litery, która wygląda inaczej po napisaniu wstecz, np. 'F' –
@Seth: Zalastax oznacza, że znaki są wyświetlane sekwencyjnie od prawej do lewej. To wygląda jak błąd w kodzie wyświetlania konsoli do mnie. – TonyK
Mogę odtworzyć to zachowanie, używając g ++ w wersji 4.5.2 na Windows 7. Dziwne! – TonyK