2012-01-08 72 views
1

我正在編寫一個應該在4-40 FPS(將在以後選擇)工作的命令行遊戲。但是,我有一個問題。使用putchar()繪製由1920個彩色字符組成的「圖像」需要0.2-0.3秒,我可以看到我的圖像逐行繪製。但是,例如,在Firefox中,我可以在不到十分之一秒的時間內在畫布上繪製64000個RGB像素。無延遲地寫入控制檯

有沒有辦法避免這種延遲,並且是由控制檯強制延遲還是真的需要多長時間來處理輸出?

+0

這種主機遊戲已經存在了很長一段時間在一個和平e.g寫。你有沒有考慮過看現有技術,看看他們是如何解決這個問題的?這可能是一個好地方開始:http://code.google.com/p/ascii-game-engine/ – aroth 2012-01-08 11:53:27

回答

7

請勿使用putchar。製作一個充滿字符的緩衝區,表示屏幕狀態,並使用write將緩衝區一次全部發送到標準輸出,然後刷新它。

例如: write(STDOUT_FILENO, buffer, buffer_size); fflush(stdout);

+0

謝謝,但它會工作在20 FPS? – Triang3l 2012-01-08 12:01:20

+0

試過這個,看不到自定義顏色,你有解決方法嗎? – Triang3l 2012-01-08 12:10:25

+0

要更改自定義顏色,只需使用'fputs(「\ 033 [40m」,stdout)'例如。 – 2012-01-08 12:33:35

2

你應該組裝您的輸出字符串在內存中,用printf

+0

爲您的輸出着色:http://linuxgazette.net/issue65/padala.html – 2012-01-08 12:38:50