我目前正在尝试使用Windows控制台创建游戏。它应该是一个光线追踪器(以Wolfenstein 3D的方式)。我需要使用称为"阴影块"的不同unicode字符来遮挡更远的物体。
问题是,这些字符似乎在Windows控制台中出错。 "完整的块"看起来应该看起来像:
然而,当我使用" DARK SHADE"字符,控制台似乎错误并显示:
然后我做了一些其他的测试。将角色粘贴到CMD中时,它更纤细,更高:然而,当进入consol属性并再次退出时,它会将块拼凑在一起,并在它们之后添加大量空格字符(我在行的末尾添加了一个点,这样你就可以看到空格的结束位置) :
我使用了Consolas,所有这些都是16pt。
你能告诉我如何正确显示这些字符吗? 提前谢谢。
答案 0 :(得分:-1)
[这不是答案。这是一个需要代码的评论。]
也许试试这个:
#define UNICODE
#define NOMINMAX
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
namespace winapi {
HANDLE const std_output = GetStdHandle( STD_OUTPUT_HANDLE );
void write( wchar_t const* const s, int const n )
{
DWORD n_written;
WriteConsole( std_output, s, n, &n_written, 0 );
}
void write( wstring const& s )
{
write( s.c_str(), s.length() );
}
}
auto main()
-> int
{
wchar_t const light_shade = L'░';
wchar_t const medium_shade = L'▒';
wchar_t const dark_shade = L'▓';
winapi::write( wstring( 64, dark_shade ) + L'\n' );
}