我正在使用带有表面商店的健身追踪器 - 其中一些表面使用除简单文本之外的其他元素打印当前时间。 几个月前,我试图在“编码游戏”中击败挑战,你必须在ascii艺术中打印动态文本 - 我没有设法做到这一点:(
我假设基本技术应该是相同的,但我不能考虑如何做到这一点。愿任何人告诉我如何打印,例如使用点/方块的当前时间?
我的最后一种方法是为每个可能的字符定义一个二维数组,按位定义哪个点应该是活动的还是非活动的。但是,由于这是非常艰苦的工作,我很快就放弃了。
感谢您的帮助。
答案 0 :(得分:2)
实际上,你是在正确的轨道上。这是一种方法 - 使用位掩码的每个字符的2D数组。或者更好 - 一张完整的ASCII图片。需要预先做一些工作,但不是那么多 - 你可以在一两天内完成。您还可以简化输入。像这样:
Dictionary<char, string[]> = {
{'A', new string[] {
" AAAA ",
"AA AA",
"AAAAAA",
"AA AA",
"AA AA"
}},
// etc. for all characters in your "ASCII font"
}
另一种方法是为您的角色定义某种“矢量格式”,将其缩放到您需要的大小,然后使用某种使用字符-|/\.
的算法转换为ASCII概括。这要困难得多,你仍然需要单独描述每一个角色。但它看起来更漂亮。
或者看看这个答案:https://stackoverflow.com/a/7239064/41360 - 它实际上使用了一个位掩码。是的,可能需要几天的时间才能做到正确。比上面的字符串方法更难,但如果空间不足(如某些嵌入式硬件),也会更紧凑。
再有就是Figlet - 手中的软件已经一路定义了自己的字体格式,更不用说某种实际上合并中的人物先进的文本渲染引擎。疯狂的狗屎。
但是无论你使用什么方法,某个地方的人都需要单独设计每个字母并以某种格式存储设计(从而产生“字体”)。最有可能是你。没有办法解决它。
程序员可能会懒惰并使用技巧让他们的生活更轻松 - 但有时候努力工作根本不可避免。当它到来时,你就是这样做的。在一天结束时,结果是重要的,而不是如何获得(好吧,只要它的道德/合法当然)。