通过telnet高效运行文本图形

时间:2010-12-29 20:39:38

标签: java telnet

我有一个简单的游戏,您可以通过telnet播放,但它通过打印几个换行符然后再次发送整个屏幕来刷新屏幕。有时这会导致闪烁,如果用户向上滚动终端,他们会看到所有旧帧。

我可以做些什么改进?

有没有办法只修改某些字符而不是重新发送所有内容?这可能会阻止闪烁,并阻止用户终端填满大量旧帧。

我尝试发送退格字符(8),但这不会比当前行的开头更进一步。这样的东西会转到其他线上,这将是完美的!

另外,我注意到telnet towel.blinkenlights.nl没有使用我糟糕的帧发送方法..所以我知道有更好的解决方案。

2 个答案:

答案 0 :(得分:3)

诅咒会这样做。如果你想自己编写,算法非常简单。它记住一个缓冲区中屏幕的状态,程序将新屏幕绘制到另一个缓冲区,它调用刷新,并且库比较两个缓冲区并仅发送所需的更改。然后它将新缓冲区复制到当前缓冲区,然后转到下一帧。棘手的部分是处理所有不同的终端类型及其控制序列以移动光标。 Curses的东西包含了一个终端库。

答案 1 :(得分:1)

显然我可以使用ANSI转义序列..似乎在我的终端上工作正常。

这可能是一个可怕的不受支持的事情,但它回答了这个问题,所以我会在这里留下链接,供将来可能需要它的人使用。

http://www.termsys.demon.co.uk/vtansi.htm