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

e hỏi trong C mà :frowning:

1 Like

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”

1 Like

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

1 Like

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?

1 Like

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

1 Like

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:

while(1){
    Xulygame();
    Verabodem();
    Xoamanhinh();
    Hienthitibodem();
    Delay();
}
1 Like

bạn có thể nói rõ hơn về cái Verabodem(); ,Hienthitibodem(); được không?

1 Like

bộ đệm trong câu này là 1 string đấy :slight_smile:

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 :stuck_out_tongue: 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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?