01/10/2018, 09:23
Cách để làm mượt màn hình console
Em đang làm game snake bằng C, mọi thứ xong xuôi rồi chỉ có một thứ mà em chưa ưng ý và cũng không biết làm sao đó là: Khi em vòng lặp chạy game snake thì cuối mỗi vòng lặp em đều system("cls")
rồi đầu vòng lặp sẽ là vẽ cái map ra. Do đó màn hình e cứ chớp chớp nhìn rất đau mắt.
Có anh chị nào biết cách khắc phục không ạ? Em cám ơn
Bài liên quan
Console.Clear() blinking
e hỏi trong C mà
Nguyên tắc thì là như nhau
“Try to sum all your scene in 1 string than draw it at once, this will (hide) the blinking effect to a certain point”
Game của bạn có dùng FPS không? ý là thời gian hết 1 lần lặp của bạn quá ngắn, làm cho khoảng thời gian giữa hai lần xoá màn hình quá thấp, vừa xoá xong mắt bạn chưa kịp nhìn cái vừa vẽ lại xoá tiếp màn hình. Thử 30 FPS xem sao?
mình làm game console mặc dù đã tăng thời gian delay lên hẳn 1s nhưng nó vẫn giật
mình có thể xem qua vòng lặp bạn dùng trong game được không, trình tự mấy cái hàm update trạng thái game với với xoá và vẽ lại màn hình?
Console sinh ra có phải để làm game đâu mà đòi nó phải đáp ứng tiêu chí của game.
Muốn không nháy thì phải có buffer, không clear mà vẽ lại.
thực sự e cũng có đi search thì thấy có cái từ buffer này nhưng e không hiểu buffer đây làm cái gì e vẫn chưa biết sử dụng thế nào
Hiện tại sau khi clear cậu sẽ chạy chương trình vẽ ra từng ký tự trên console ?? Như thế nó sẽ lâu, có delay nên sẽ thấy nó nháy.
Buffer nó là bộ đệm. Cậu sẽ vẽ nội dung ra bộ đệm. Sau khi vẽ xong ra bộ đệm mới clear và viết nội dung bộ đệm ra màn hình.
Bộ đệm sẽ được vẽ lúc chương trình đang delay.
Nôm na thế này:
bạn có thể nói rõ hơn về cái
Verabodem();
,Hienthitibodem();
được không?bộ đệm trong câu này là 1 string đấy
xài double buffering ấy, cái này hơi phức tạp
project cũ viết bằng C khó hiểu https://gitlab.com/tntxtnt/consolebrickgamesnake
có xài double buffering đi nữa thì nó vẫn lâu lâu bị giật, do framerate ko trùng khớp với refresh rate của màn hình