30/09/2018, 17:17

Game flappy bird console c++

Mình đang học làm game trên console
mọi người cho mình hỏi làm cách nào để nó bớt giựt không ?không biết là có liên quan gì đến tiến trình không

*grab popcorn* viết 19:18 ngày 30/09/2018

Trông hay hay mà giật quá bạn ơi @_@

Nhật Cao Khánh viết 19:26 ngày 30/09/2018

vẫn chưa tìm được cách xử lí bạn,đang hóng cáo thủ

... viết 19:25 ngày 30/09/2018

Lập trình game trong console thì mọi hoạt động từ nhân vật cho tới khung cảnh hay kẻ thù được đưa vào queue để xử lý. Cái gì gọi trước thì thực hiện trước (ví dụ khung cảnh chuyển động 1 bước rồi mới thực hiện kiểm tra người dùng có nhấn phím hay không).
Giải pháp tốt nhất chỉ có thể là dùng multi-thread. Trong C++ cơ bản có thư viện thread.h
http://www.cplusplus.com/reference/thread/thread/
Cái gì hoạt động độc lập không bị ai tác động (ví dụ khung cảnh chuyển động) thì nên đưa vào 1 thread riêng.

Mình chưa làm thử thread trong console nên chưa rõ lắm. Bạn tìm hiểu thử xem.

Nhật Cao Khánh viết 19:29 ngày 30/09/2018

mình cũng tìm hiểu qua r nhưng vẫn còn khó khăn,nhung dù sao cũng cám ơn bạn

viết 19:21 ngày 30/09/2018

mình đoán là bạn xài clear screen rồi mới vẽ, hoặc hàm vẽ có sử dụng endl nhiều, hay xài << nhiều?

  • đừng xài clear screen: xài goto(x,y) để xóa vị trí các ống cũ (output khoảng trắng thay vì ‘|’)
  • xài goto(x,y) để vẽ vị trí các ống mới
  • mặt đất/trần thì nên << 1 chuỗi " - - - " hay “- - - -” thay vì << từng ký tự.

tuy nhiên cách vẽ “tay” này rất cực, nếu phải làm chi tiết như vậy thì ko đáng, tìm thư viện đồ họa nào đó mà vẽ.

hoặc cũng có thể là main loop ko cho nghỉ, vẽ liên tục? Nên include windows.h và xài hàm Sleep(milisecond) để hạn chế frame rate:

while (true) //main loop
{
    //xử lý events
    //vẽ
    Sleep(15); //"nghỉ" 15 ms, hay hạn chế frame rate khoảng 60 fps
}
Nhật Cao Khánh viết 19:27 ngày 30/09/2018

void ClearConsole()
{
HANDLE hOut;
COORD Position;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
Position.X = 0;
Position.Y = 0;
SetConsoleCursorPosition(hOut, Position);
}

đây là hàm xóa của mình

để mình thử cho ngủ xem thử

Bài liên quan
0