我正在編寫一個應該在4-40 FPS(將在以後選擇)工作的命令行遊戲。但是,我有一個問題。使用putchar()繪製由1920個彩色字符組成的「圖像」需要0.2-0.3秒,我可以看到我的圖像逐行繪製。但是,例如,在Firefox中,我可以在不到十分之一秒的時間內在畫布上繪製64000個RGB像素。無延遲地寫入控制檯
有沒有辦法避免這種延遲,並且是由控制檯強制延遲還是真的需要多長時間來處理輸出?
我正在編寫一個應該在4-40 FPS(將在以後選擇)工作的命令行遊戲。但是,我有一個問題。使用putchar()繪製由1920個彩色字符組成的「圖像」需要0.2-0.3秒,我可以看到我的圖像逐行繪製。但是,例如,在Firefox中,我可以在不到十分之一秒的時間內在畫布上繪製64000個RGB像素。無延遲地寫入控制檯
有沒有辦法避免這種延遲,並且是由控制檯強制延遲還是真的需要多長時間來處理輸出?
請勿使用putchar
。製作一個充滿字符的緩衝區,表示屏幕狀態,並使用write
將緩衝區一次全部發送到標準輸出,然後刷新它。
例如: write(STDOUT_FILENO, buffer, buffer_size); fflush(stdout);
你應該組裝您的輸出字符串在內存中,用printf
爲您的輸出着色:http://linuxgazette.net/issue65/padala.html – 2012-01-08 12:38:50
這種主機遊戲已經存在了很長一段時間在一個和平e.g寫。你有沒有考慮過看現有技術,看看他們是如何解決這個問題的?這可能是一個好地方開始:http://code.google.com/p/ascii-game-engine/ – aroth 2012-01-08 11:53:27