2014-11-01 48 views
0

我想打一个小动画在一个控制台应用程序,并要做到这一点,我创建了一个ASCII艺术:打印许多多线串

        ______ 
         ,.:b-'::'  ,`::-/,._ 
        _.\\,,-/` /| |  ,' .`| ,_: ,. 
       ` -_,'[ ._-|/,'Y  ` `/-/,-.:`. 
      ,'/[(o _.. _,".`':| ___ ::/|.`][,'/,,/,'`. 
      `:-\-. `','\`,-' [:_,.....'__ ^..,|-.'- ,,\ :. 
     ,'-\-.` _ `[.- --'    '-..`'-[''\ .L-",`. 
     ,L< ':],, ,` ,-      '- , .''Y"-'.-'` 
    _'_,::''/-]._,'  _ ..  .._   `.`]'. -,-:,^. 
    _'/,[``.-'/'-  _ :].-''`'''''--.[   -. .|/:L:| \ 
    '[' ]>] ' /'  _,'    `- .  ``\'` ,u[<L' 
    /,`. [-'/  ,`     ,. `.  `.`,,``..| | 
    P.P.`[o'),  ,''`__-.     ,' /'\,  .\'(; .:] 
/`/ ` .'/XXX `,' . -.    ,' ,' `.  \.> :,` 
| \.u[/\'|X X/\'  'v ^,   ,' ,'  \  \ `^/:.-, | 
.:-<.. [||/ XXX '/   `\ `\  ,' /'   .\  || \]::`.' 
| |::>,-b|  ||   ^. '---' ,'   Y|  || [./.'/\ 
| /_,[| ||  ||    | ,./   ||  || |> --|| 
Y=]L__`=[|  ||    | ,- '    ||  | ::_,==: 
| |i .| |'.  \   /' ,..._ `'   ||  || /L. , 
|_]L,.'-] |  [\   ,- ,'  ,' '.   ||  'P..L,/| 
v...-L\ \\  `/.  ,' ,'   `. -_ / /|'Y\-.`::' 
\ -:,'\..,  \`\ _,' /'    ^,  /,  .[-` ,' 
)_ ' '.\  `[`, /'     `.'\,''  /`..:- | 
    <`...,`./ `  `[.=     `=/  ,_/-/.` '' 
    \`[,-'.v'\`.  ".`._    _.:'   '-' '.>/ ' 
     [,_,L!`, [`  ' `-...______.,-'   v /'''|]:.' 
     ``\ //'. .`.`.   ' --- -- ''   ',-|' ' b'' 
     `.Yv-]-, ',-.'-       ,-'''\ [,.-,' 
     `['./,L|'`.],.. .__   _ ,.',. .[ ]'v'] 
      `v-/| <." ..`\-.. ::_ |: ,.-\\',.\'- ' '',' 
      `.:`[/ /' > .:',.||::_|/--'. ``,\ '/: ' 
       -',:.\`[| .'/,[/ L',] ^/``,] ``-` 
        -\|, -,: |`-|||/ |``.,..\`_,-' 
         ''--.' ==='|::::\'-'' 

(是的,这是一个轮盘赌)

我创建了与不同位置的球一样的ascii艺术(就像轮盘上的十字)。

我的问题是,我觉得非常棘手:我想打印轮盘到控制台,每秒4次(也许更多,不完全知道)在相同的地方,以便它看起来像一个gif :)。 我没有问题加载文件(并将它们转换为字符串),但我没有找到一种方法来重写在相同的地方(“\ r”不适用于多行文本)。

如果我可以不使用任何类似curses的库(尽管我是Python中的ncurses的忠实粉丝!),那将会很棒。

+0

我不知道答案,但祝你好运,听起来很有趣 – Dici 2014-11-01 13:43:37

+0

哈哈哈谢谢,这很好! – 2014-11-01 16:06:01

+0

所以我做了一个草稿版本,所以如果你想看一下:https://github.com/lolobosse/CurseRoulette(在OSX和Linux上工作,没有在Windows上测试) – 2014-11-12 11:01:12

回答

2

我认为诅咒或类似的东西将是必要的。

正如我记得的那样(诅咒很久以前),诅咒有两点 - 不同的终端,以及慢速终端连接的效率。您将面临两个问题,这取决于终端连接的方式以及最终希望重新绘制屏幕的频率。

Curses分析了所需输出以确定最有效的方式来绘制东西 - 它应该将光标定位三次并分别绘制东西,还是输出多行并只绘制一次?定位光标所需的字符序列是什么?

祝你好运,无论如何。

+0

好吧,谢谢, t我期待的答案,但如果这是唯一的方式...并且它可以与ASCII码一起工作吗? – 2014-11-01 16:05:41

+0

不确定你的意思 - 你的意思是,你可以用ASCII编码一个字符串吗?您可以输出一个字符串作为ASCII流,查找流的编码细节。您不能将内部字符串存储为Java中的ASCII,但是我不知道您需要的任何情况。 – arcy 2014-11-01 19:03:58